l_n_m’s diary

よわい電気系の日記(本当にただの日記)

本日の教養:GPU

GPU(Graphic Processing Unit)

CPUに対してGPU。描画に特化した並列計算機ですね。今日はこの辺を調べます。大学入ってからずっとノートPCなのでグラボの知識も無いんですよね……
とはいえ今回は細かい構造ではなく、PC自作勢なら当然知っているだろう常識程度に留めます。今そんなに調べてる余裕無いので。また今度。性能比較とかもしませんよ。

ブランド

GeForce

NVIDIA社によるGPU。ノートPC用のものも多く、それらには(型番)M、とMが書かれている。
GTXシリーズはゲーム用の超高性能GPU。最新版ではTITAN Xというものも出ている。
下2桁はクラス、100の位以上はバージョンを表す。数字が大きいほど新しいor高性能。つまりGeForce GTX1080はGTXシリーズのバージョン1000、クラス80(80が最高)で、GTX 650はバージョン600のクラス50(そこそこの性能)、ということ。
性能比較サイトなんかを見ると、消費電力もものすごいばらついてますね。小さいもので64W、大きいもので375W。友達が電気代を心配していましたが、なんか納得しました。

Radeon

AMD社によるGPU。基本的に数字が大きいほど高性能。でもシリーズが多く、分かりにくい。Wikipediaが充実しているので気になる人は見るといいと思います。深入りしたくない。

その他

オンボードグラフィックはIntelなど多くの企業が製作している。わざわざ高性能なGPUを積まなくてもいいや、という人が多いのに合わせてってことなんでしょうけど。
ちなみにGeForceDirectX向けな一方、OpenGL向けのQuadroシリーズがNVIDIAで開発されていたりします。

GPUコンピューティング

さて、今回はグラボではなくてGPUのお話です。というわけで一歩踏み込みます。
GPUはその構成から(語ってませんね……多くのコアが並列に存在しているので、独立な複数の計算を一度に行えます。グラフィック計算では各ピクセルについて計算しているんだったかしら)、並列計算が得意です。ならばグラフィックに限らず数値計算にも活かせるよね、という話。

Tesla

NVIDIA社が開発しているGPUコンピューティングGPU。映像出力機能が取り払われています(!)。

CUDA

GPUコンピューティング向けの統合開発環境NVIDIA社が提供。凄いなNVIDIA
シーケンシャルな部分をCPU、並列化可能な部分をGPUが担当し、それら全体の管理もCPUがやるのが一般的です。
CUDAについてはまた後で調べることにします。

おまけ

すごくざっくり見ただけで終わり。自分用メモだからいいよね(
Batcher's Odd-Even Mergesortなんかは並列計算で高速化するためのアルゴリズムですよね。
Batcher's Odd-Even Mergesort - YouTube
ちなみにGPUとCPUの片方しか動かさないでいると、どんなに頑張ってもコアの使用率は67%程度で止まってしまうそうです。そこで、CPUの方で計算命令を発行してGPUのコアにどんどん投げる、というパイプライン化を行う手法が考案されました。詳しくはRan Ginosar先生の講義資料を参照。Many-core Plural architecture、というpdfにいろいろ書かれています。

明日

たぶん余裕無いので簡単なテーマがいいな……アーキテクチャ寄りの話ばっかりだったし、C++11のあれこれを適当に調べてみることにします。体系的にまとめるわけじゃないので(これまでもそうですね……)だいぶ散らかるとは思いますが、ご愛嬌ってことで。
ちなみに土日は完全に休んでましたが、気分次第でやったりやらなかったりということにします。あんまり厳格にやる必要もないし。それに、今は千恋*万花が楽しすぎるので最優先で進めたい。ふふふ。