GPUアーキテクチャ†NVIDIAのGT200アーキテクチャでは,個々が次のユニットを内蔵した30個のマルチプロセッサ「SM(Streaming Multiprocessor)」
SM数,SP数はGPUの種類によって異なり,並列化のスケーラビリティのために, 並列スレッドはCUDAにより以下の図のように階層的にグループ化され,スケジューリングされます. 階層は上から「グリッド」「ブロック」「スレッド」. スレッドはC for CUDAのプログラムにおいて関数として表される「カーネル」を並列に実行します. カーネルは呼び出されたとき,ユーザの指定したN個の異なるスレッドで並列にN回実行されます. C for CUDAでは,<<< ... >>> 構文でグリッドあたりのブロック数, ブロックあたりのスレッド数を指定することができます. ハードウェアは各マルチプロセッサごとにブロックを割り当てることで, プロセッサ数に対するスケーラビリティを確保しています. メモリ†各マルチプロセッサは以下の4つのタイプのオンチップメモリを持っています.
また,大容量のデバイスメモリを別に持っています. デバイスメモリはGPUボード上のメモリで, CPU側のホストメモリとPCIバスを通してデータをやりとりすることができます. |