待望のブログ第一弾!(誰の?)
ということで、「GPUを支える技術」の簡単な要約と感想を書いていこうと思う。
余談だが、Bloggerは本家ではMarkdownをサポートしていないようだ?
Web上ではStackEditなるエディタを使ってMarkdownを書いている人がちらほら見られる、、Blog初心者なんでこの辺はよくわかりませんが、もしかしたら導入していくかも?
ここから本題。
GPUを支える技術、今回は諸事情によりPDF版で購入した。
毎度本を買うときは悩むんですよねー、
PDFは便利なんだけど仕事の終わりとか目が疲れてる時には本のほうが集中できたりするんで。
全体の構成はこんな感じ、
上記以外に3Dモデルがどのようにディスプレイ上に描画するかなど、画像処理系の内容も書かれたいたが、個人的な興味から性能や実行方式ばかり注目してしまった。。
ということで、「GPUを支える技術」の簡単な要約と感想を書いていこうと思う。
余談だが、Bloggerは本家ではMarkdownをサポートしていないようだ?
Web上ではStackEditなるエディタを使ってMarkdownを書いている人がちらほら見られる、、Blog初心者なんでこの辺はよくわかりませんが、もしかしたら導入していくかも?
ここから本題。
GPUを支える技術、今回は諸事情によりPDF版で購入した。
毎度本を買うときは悩むんですよねー、
PDFは便利なんだけど仕事の終わりとか目が疲れてる時には本のほうが集中できたりするんで。
全体の構成はこんな感じ、
第1章 [入門]プロセッサとGPU
第2章 GPUと計算処理の変遷
第3章 [基礎知識]GPUと計算処理
第4章 [詳説]GPUの超並列処理
第5章 GPUプログラミングの基本
第6章 GPUの周辺技術
第7章 GPU活用の最前線
第8章 プロセッサとGPUの技術動向
第2章 GPUと計算処理の変遷
第3章 [基礎知識]GPUと計算処理
第4章 [詳説]GPUの超並列処理
第5章 GPUプログラミングの基本
第6章 GPUの周辺技術
第7章 GPU活用の最前線
第8章 プロセッサとGPUの技術動向
(引用: http://gihyo.jp/book/2017/978-4-7741-9056-3)
おお、すごく面白そう(^o^)
仕事柄GPUはよく利用するし、詳しい内部アーキテクチャにも興味があるのでちょうどいいかも。早速、 第1章を読んだので以下に以下にメモ。
1章
概論的な感じ。その他にはディスプレイやゲームグラフィックス中でのオブジェクトの表示方法について述べている。CPUはスポーツカー, GPUはバスと例えているのも面白い。
GPUの歴史
NvidiaがGPUを1999年に発売, GPUという命名もNvidia。初めの10年はinteger演算のみ、その後floatへ。
GPUの性能
CPUとの性能比較が乗っていた。
浮動小数点演算において、Nvidia GTX1080 は intel corei7 6700k の16倍早い。
8,228GFlops / 512GFlops ~= 16.07 (Latex使いたいな。。)
オフチップのメモリバンド幅も約9.4倍多い。
320(GB/s) / 34.1(GB/s) ~= 9.38`
オンチップメモリは4倍少ない。(LLC比)
8GB / 2GB = 4
消費電力は約2倍
180W / 91W ~= 1.98
すこし気になったのは、倍精度演算器の数はあまり差がないこと。
80 vs 32
GPUの種類
GPUは大きく3種類に分類される
- OnChip Mobile GPU
CPUとGPUがワンチップにまとまったSoCが代表的。消費電力が小さく、ビジー状態でも数W
- OnChip GPU
CPU上にGPUが内蔵されているケース。intel coreシリーズやAMDのAPUなどが該当。mobileに比べて数W ~ 100W程度の消費電力がある
- Discrete GPU
Nvidia GTX1080など。PCI Expressで接続されるような、CPUと独立したモデルのこと。
個人的には1番一般的なGPUな気がする。
個人的には1番一般的なGPUな気がする。
メモリ空間問題
複数CPUの場合、メモリを共有するSMP(symmetric multi processor)構成が一般的。GPUの場合、バンド幅がCPUと違う(10倍ほど大きい)ため、上記のように共通のメモリーを使うことは難しい。しかし、PCI-E経由のdmaはオーバヘッドが大きく、大量のデータを転送にはあまり適していない。GPUとCPU間で共有のメモリ空間を利用できるようにすることがGPUベンダの目標らしい。
OnChip GPUでは上記が容易で、同一メモリを利用しているケースが多い。intel skylakeでは L4キャッシュを用いて、GPUの必要とする高バンド幅を実現しようとしている。
3Dレンダリングの場合は1pixelが16byte以上のGPUメモリが必要であり、mobile GPUだと入りきらない。従って、タイリングを行い 32 x 32 pixelなどに分割してデータの更新を行っている。一方で、GPUメモリが豊富なディスクリートGPUではフルバッファ形式が一般的。
SIMT
CPUで一般的なSIMDに対して、GPUではSIMT(single instruction multiple threading)方式が用いられる。各演算をデータレベルで分割する代わりに、専用のプロセッサを割り当てるイメージ。スレッドレベル並列性というやつだろうか。(こちらはMIMD??)各プロセッサは計算にトータルで16サイクル必要だが、同時に4つ動いているので結果16サイクルですべての処理が終了する。
まとめ
GPUについて基本的なことが書かれていて、思い出す意味で良い内容だった。
実は「コンピュータの構成や設計」の付録でもGPUについては触れられていて、学生の時に読んでいたので1章は必要ないかなと思っていたが、
いやはや、人はつくづく忘れる生き物だと思った。。
上記以外に3Dモデルがどのようにディスプレイ上に描画するかなど、画像処理系の内容も書かれたいたが、個人的な興味から性能や実行方式ばかり注目してしまった。。
この本は対象として、GPUをゲームのグラフィック処理と科学技術計算に利用する場合を分けて解説しているらしいので、今後は後者メインになりそう。(ゲーム好きな方、ごめんなさい。)
兎にも角にも、次は2章にすすむ。
実は既にもっと先まで読んでいるんですが、急ぎすぎてもすぐネタ切れになっちゃうので気長に行きます(^q^)
コメント
コメントを投稿