はじめに
グラフィックス分野で蓄積された並列処理技術の資産を汎用数値計算に応用する技術は,「GPU(Graphics Processing Unit)コンピューティング」と呼ばれている.
CUDA(Compute Unified Device Architecture)とは,GPUコンピューティングを実現するためにNVIDIAが提供している環境である.
今回,CUDA環境を用いたプログラミングをする機会を得たので,その過程などを記述したいと思います.
また,立ち上げに当たって環境構築やプログラミングの参考にさせていただいたのは,CQ出版社の雑誌「Interface2008年6月号,8月号」です.
CUDAに関する基礎知識
CUDA対応GPUのハードウェア構成
- GPUは複数のマルチプロセッサとGPUボード上の外部メモリ(デバイスメモリ)によって構成されている.
- マルチプロセッサ数はGPUのランクによって大きく異なる.
- 1つのマルチプロセッサは,8個のストリームプロセッサとオンチップメモリによって構成されている.
メモリの分類
並列処理の概念
- カーネル(グリッド):GPU上で実行するプログラム
- ブロック:グリッドを分割したもの.この単位でマルチプロセッサへ割り当てる.
- スレッド:ブロックを分割したもの.この単位でストリームプロセッサへ割り当てる.
- ワープ:32スレッドをまとめたもの.4クロックかけて8個のストリームプロセッサによって処理される.
ブロック数の上限
グリッド当たり65535ブロック/次元
(最大2次元)
スレッド数の上限
1ブロック当たり512スレッド
マルチプロセッサの処理上限
マルチプロセッサが実行できるブロック数・ワープ数・スレッド数にも上限がある
- 最大ブロック数:8個
- 最大ワープ数:24個
- 最大スレッド数:768(=24x32)スレッド
環境構築の手順
1.GPUの選択
2.PCへの組込
用意したビデオカードをPCの拡張スロットに挿入して,ドライバーソフトをインストールしてください.
PCを自作したことがある人であれば,問題ない作業だと思います.
3.プログラミング開発環境のインストール
使用するPC, OSによってプログラミング環境は異なります.
今回使用するOSはWindowsXPです.
作成する予定のプログラムはコンソール上で実行するだけなのですが,一応標準的な開発環境ということでVisualStudio2005を使用します.
VisualStudioの中でこのバージョンを選んだのは単なる偶然です.
以前は“.NET2003”を使用していたが,それが入手できなかったのでこれをインストールしました.
あとで判明したことなのですが,最新版の2008ではCUDA環境に対応していないとのこと(2008/12/4現在).
対応しているのは,“.NET2003”と“2005”とのことなので注意が必要です.
インストール作業は,通常通り行ってください.
4.CUDAの各種ツールのインストール
- CUDAドライバ
- CUDAツールキット
- CUDA SDKコードサンプル
5.環境設定
プログラム作成
- Interfaceのサンプルプログラムを使用するに当たっての注意点
私の環境ではビルドの際にエラーが出てしまいました.
原因は,インストールしたCUDAのバージョンが2.0であるためだと思います.
具体的には,関数“CUT_DEVICE_INIT”の引数の仕様が変更されたと思われます.
よって,現在の仕様通りにプログラムを修正することによって正常にビルドすることが出来ました.
エミュレーション・モードを使用したデバッグ
ブロック数やワープ数の見積もり
最終更新:2008年12月22日 16:27