この章の筆者はNVIDIAの人なので、内容にバイアスが入っている可能性があるかも….
A.1 はじめに
GPUはグラフィックプロセッサだけではなく、複数コアを持つ並列数値演算の側面も持ってきている。最近は汎用プログラムを実行するための仕組み(ハードのサポートや開発環境)が整備されてきている。CUDAというプラットフォームでは、C,C++で開発が出来て、メニーコア環境での並列処理が行える。
A.2 GPUシステムのアーキテクチャ
昔のVGAカードは、ノースブリッジとサウスブリッジをつないでいるPCIバスに接続されていた。
一方今のGPUは、メモリと同列レベルに格上げされており、ノースブリッジ配下になっている。また、GPUとCPUは互いに相手のメモリにアクセスできるようになっている。
ローエンドのGPUはGPU専用のメモリを使用せずにCPUの主記憶をGPU用に共用している。これはユニファイド・メモリ・アーキテクチャ(UMA)と呼ばれている。
A.3 GPUのプログラミング
GPUをグラフィックス向けではなく、数値計算目的で使用するんいは、以下のようなインターフェースがある。CUDA NVIDIAが開発した言語 C,C++を機能拡張している Brook GPUに適合化したストリーミング言語らしい?? CAL(Compute Abstraction Layer) AMDによるGPU向けのアセンブラ |
CUDAでは3つの抽象化を行っている。
スレッドグループ階層 共有メモリ バリア同期 |
これらを使用することで、多数のデータを分割して複数スレッドで実行し、全スレッドが終わるのを待つ(同期を取る)といった事が簡単に出来る。
C言語の拡張は、このスレッド呼び出しの記法とかが対象になってるっぽい。
A.4以降
興味が無いので、以下の節は省略(読んでない)A.4マルチスレッド型マルチプロセッサのアーキテクチャ A.5 並列記憶システム
A.6 浮動小数点算術演算
A.7 実例:NVIDIA GeForce 8800
A.8 実例:GPUへのアプリケーションの適用
A.9 誤信と落とし穴
A.10 おわりに
A.11 歴史展望と参考文献(◎CDコンテンツ)
関連記事
コメントを残す