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* .
これで無事にコンパイル出来るようになりました。