真に最低限であるかはともかく、何を用意すれば組めるのかをざっと紹介。
o- 準備するもの
- NVIDIA CUDA Toolkit
- NVIDIA CUDA SDK
それぞれCUDA 3.0 Downloadsからダウンロードします。
Toolkit, SDKの順に実行(中身はインストール用のスクリプトです)します。それぞれ導入時にインストール先を聞かれますが、今回はToolkitを/usr/local/cuda、SDKを/opt/NVIDIA_CUDA_SDKに導入したとして話を進めます。
- Toolkit導入時の問い合わせ
- Enter install path (default /usr/local/cuda, ‘/cuda’ will be appended):
- SDK導入時の問い合わせ
- Enter install path (default ~/NVIDIA_CUDA_SDK): /opt/NVIDIA_CUDA_SDK ←ここだけ意図的に指定している
- Enter CUDA install path (default /usr/local/cuda):
更に、SDK導入先以下のcommon(/opt/NVIDIA_CUDA_SDK/common)でmakeを実行します。これによりSDK導入先以下のlib(/opt/NVIDIA_CUDA_SDK/lib)にlibcutil.aが作成されます。
最後に/etc/ld.so.conf.d/cuda.confに/usr/local/cuda/libを書いてldconfigを実行します。これにより/usr/local/cuda/lib以下の動的ライブラリが利用可能となります。
なお、先日インストール直後のCentOSにこれらを導入した際は、以下のアプリケーションを導入する必要がありました。
- gcc-c++ (yumで導入可能)
- freeglut-devel (yumで導入可能)
- libXmu-devel (yumで導入可能)
- libXi-devel (yumで導入可能)
- libXext-devel (yumで導入可能)
- GLEW (Toolkit/SDKの導入時点では不要だった可能性があるが未確認。yumでは導入不能。本家から導入。SDKのcommon以下にもあるが試していない。)
o- 実行ファイルを作る:nvccのコンパイラオプションについて
基本的にGCCと同様です。
nvcc ソースファイル名
とやれば、a.outが生成されます。もちろん、includeパスやlibパスなどが揃っていないといけません。
私が実験時に使ったコマンドを例示しておきます。ソースファイルcuda.cuから実行ファイルtestを生成しています。
nvcc -o test cuda.cu -I/opt/NVIDIA_CUDA_SDK/common/inc -L/opt/NVIDIA_CUDA_SDK/lib -lcutil -lGLEW
cutilのデバッグ機能やatomic命令のためのCUDA1.1指定を含めた場合はこちらになりますね。
nvcc -D_DEBUG -arch sm_11 -o test cuda.cu -I/opt/NVIDIA_CUDA_SDK/common/inc -L/opt/NVIDIA_CUDA_SDK/lib -lcutil -lGLEW
更に-deviceemuを加えればデバイスエミュレーションも可能になり、CUDA対応GPUがなくても実行できるようになります。
以上でCUDAプログラミングが可能になりました。何か不明の点、抜けている点などありましたらコメントで指摘してやってください。
Linux 64-bitとしてのCentOS 5をつかう場合ですが必要な
1. CUDA Driver 2. CUDA Toolkit 3. CUDA SDK code samples の3つのファイルをダウンロードする選択窓(下記サイト参照)でのLinux Versionは何にすべきでしょうか?
http://www.nvidia.co.jp/object/cuda_get_jp.html
多分、Redhat Enterprise Linux 5.x でOKと思いますが、ひょっとしてFedora 10のほうが良いのでしょうか?