‘Un*x’ カテゴリーのアーカイブ

Linux環境でCUDAプログラミングを行うための最低限の方法

2007年10月31日 水曜日

真に最低限であるかはともかく、何を用意すれば組めるのかをざっと紹介。

o- 準備するもの

  • NVIDIA CUDA Toolkit
  • NVIDIA CUDA SDK

それぞれCUDA 2.3 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プログラミングが可能になりました。何か不明の点、抜けている点などありましたらコメントで指摘してやってください。