CUDAのプログラムツール

CUDAのプログラムツールはNVIDIAのCUDAのページから無償でダウンロードすることができる。必要なコンポーネントは、CUDA用のドライバと、ツールキット、そしてSDKである。現状での正式版はCUDA1.1であるが、今年4月にCUDA2.0のβ版が公開されたので、これを使ってみることにした。

CUDAドライバは、通常のGPU用のドライバにCUDA用の機能を追加したもので、表示用とCUDA計算用にマルチプロセサやデバイスメモリなどの資源を分割して使用する。従って、1枚のGPUボードしか実装していなくても、画面表示を消すことなく、CUDAプログラムを走らせることができる。しかし、マルチプロセサを使う3Dグラフィックスなどを動かしていると、CUDAの計算性能は下がってしまうし、CUDAで大きな配列をグローバルメモリ上に作ってしまうと、表示用のメモリが不足するというような事態が発生する。

ツールキットに含まれているCUDAのコンパイラドライバであるnvccは、Linux用ではgcc、g++コンパイラを呼び出し、Windows用ではマイクロソフトのclを呼び出してCUDAプログラムをコンパイルする。筆者はWindows用をダウンロードしてインストールを行ったが、問題なくインストールができた。

このWindows環境は、Visual Studioを用いてmakeを行うようになっている。Visual Studioはマイクロソフトの製品であるが、Expressという機能制限版はフリーでダウンロードして使うことができる。ということで、マイクロソフトのサイトに行き、Visual C++ 2008のExpress版をダウンロードしてインストールしたのであるが、 NVIDIAのnvccはmsvcの7.1版と8.0版にしか対応していないというエラーメッセージが出て止まってしまう。

今年の4月に公開されたCUDA2.0 βであるが、なんと、Visual C++ 2008に含まれているmsvc9.0は未対応であった。仕方がないので、VC++ 2008をアンインストールし、古い版のVC++ 2005をダウンロードしてインストールすることにより、正常に動作するようになった。

SDKのディレクトリの中にprojectsというディレクトリがあり、その中に各種のプログラムのディレクトリがある。Visual StudioのProjectを開くでプロジェクトを選んで、ビルドをクリックするとプログラムがコンパイルされ、実行形式ができる。それをVisual Studioのデバグのプルダウンメニューでデバグなしで実行を選ぶと、テキストウインドウが開き、実行結果が表示される。