CUDAプログラミングに挑戦!

無事にCUDA環境も整ったので、CUDAプログラミングを始めてみました。手始めにサンプルプログラミングを動かしてみました。
~/NVIDIA_CUDA_SDK/以下にmakefileがあります。これをmakeすることで、サンプルプログラムやライブラリ等がビルドされます。

% cd ~/NVIDIA_CUDA_SDK/
% make

サンプルプログラムの実行ファイルは、~/NVIDIA_CUDA_SDK/bin/linux/release/以下に作られます。CUDAがきちんとインストールされたか確認するために、matrixMulあたりを実行してみます。

% ./matrixMul
Processing time: 0.117000 (ms) 
Test PASSED 

Press ENTER to exit...

このように表示されれば成功です。
こんなのつまらないという方には、oceanFFTやparticles、simpleGL、smokeParticles、fluidsGLあたりが絵も表示されて見た目にも面白いです。中でもparticlesは僕も気に入っていて、たまに実行しては遊んでいます(笑)

ヘッダファイル、ライブラリファイルが見つからない

とりあえず去年作った、簡単なCUDAプログラムをコンパイルしてみました。

% nvcc hoge.cu -lcutil
hoge.cu:5:22: error: cutil.h: No such file or directory

しかし、上のようなエラーが出てしまいました。CUDAを使うときは、プログラム内でcutil.hをインクルードします。どうやらcutil.hが見つからないようです。~/NVIDIA_CUDA_SDK/でmakeを実行すると、~/NVIDIA_CUDA_SDK/common/inc/以下にcutil.hが作成されるようなので、これを/usr/include以下にコピーしました。(~/NVIDIA_CUDA_SDK/common/inc/以下にはcutil.h以外にも多くのヘッダファイルがあるが、全てコピーした方がいいのかは不明。というか、この方法が正しいのかも分からない…)

% cd /usr/include
% sudo cp ~/NVIDIA_CUDA_SDK/common/inc/cutil.h .

これでさっきのエラーは出なくなります。しかし今度は、

/usr/bin/ld: cannot find -lcutil
collect2: ld はステータス 1 で終了しました

というエラーが。今度はライブラリが無いと言われているようなので、~/NVIDIA_CUDA_SDK/lib/以下のlibcutil.a、libparamgl.a、librendercheckgl.aという3つのファイルを/usr/lib/にコピーします。

% cd /usr/lib/
% sudo cp ~/NVIDIA_CUDA_SDK/lib/lib* .

これで無事にコンパイル出来るようになりました。