CUDA4.0はUbuntuに関して10.10を正式サポート対象としてるのもあって,ハッキリ言って,導入に躓く要素はないです.
ちなみに僕のメインマシンはモバイルノート(ThinkPad X201s)なんですが,研究室のマシンがi7-920に9500 GTなので,基本的にCUDAは(エミュレーションじゃなく)こっちでやってます.
まずは必要なものを落としてきましょう
http://developer.nvidia.com/cuda-toolkit-40
ここから,
- Developer Drivers for Linux (2011.6.1現在のバージョンは270.41.19)
- CUDA Toolkit for Ubuntu Linux 10.10
- CUDA Tools SDK
- GPU Computing SDK code samples
を落とします.
まずドライバを入れます
まずはCUDAのドライバを入れないといけません.
で,このときXサーバを殺さないといけません.その時ブラウザも死にます.
なので,このページを見ながら導入している方はメモを取るなり何なり.
ここで,Ctrl+Alt+F1を押します.F1は,F1〜F6ならなんでもいいです.
こうすると,端末モードになります.Ctrl+Alt+F7でXに戻ります.
端末モードに入ると,ログインを要求されるので,ログインします.
その後, 先ほど落としてきたDeveloper Drivers for Linuxのファイルがあるところに行きます.
ここで以下のコマンドを実行.なお#はroot権限でね,という意味です.
# stop gdm # ./devdriver_4.0_linux_32_270.41.19.run
実行するだけです.権限が無い場合は,ちゃんとchmod u+xしましょう.
これで正常に終わったらOKです.何か聞かれるかもしれませんが大したことはないと思います.
あとはXを再起動します.OS自体を再起動してもいいし,startxコマンドでやってもOKです.
SDKやツールを入れよう
あとは普通に(Xのもとで),シェル上でインストーラを走らせるだけです.
- cudatoolkit_4.0.17_linux_32_ubuntu10.10.run
- cudatools_4.0.17_linux_32.run
- gpucomputingsdk_4.0.17_linux.run
を順に入れました.
パスを通しましょう
.bashrcなり.zshrcなりに…
export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib:$LD_LIBRARY_PATH
サンプルをビルドしましょう
いろいろインストールした時点で,
~/NVIDIA_GPU_Computing_SDK/
にサンプルとかがあります.その中にすぐMakefileがありますので,そこで華麗にmakeしましょう.
私の環境で10分かそこらはかかりました.並列化オプションを忘れてたけど.
サンプルを動かしてみましょう.
ビルドし終わったら,
~/NVIDIA_GPU_Computing_SDK/C/bin/linux/release
例えばここにCのサンプルの実行ファイルがたくさん入ってます.
僕のマシンで,サンプルmatrixMulを走らせてみた.
% ./matrixMul [matrixMul] starting... [ matrixMul ] ./matrixMul Starting (CUDA and CUBLAS tests)... Device 0: "GeForce 9500 GT" with Compute 1.1 capability Using Matrix Sizes: A(160 x 320), B(160 x 320), C(160 x 320) Runing Kernels... > CUBLAS Throughput = 25.0597 GFlop/s, Time = 0.00065 s, Size = 16384000 Ops > CUDA matrixMul Throughput = 20.2856 GFlop/s, Time = 0.00081 s, Size = 16384000 Ops, NumDevsUsed = 1, Workgroup = 256 Comparing GPU results with Host computation... Comparing CUBLAS & Host results CUBLAS compares OK Comparing CUDA matrixMul & Host results CUDA matrixMul compares OK [matrixMul] test results... PASSED Press ENTER to exit...
ついでに,Tesla C2050を二つ積んだ鬼のようなマシンで同じサンプルを走らせてみた.
$ ./matrixMul [matrixMul] starting... [ matrixMul ] ./matrixMul Starting (CUDA and CUBLAS tests)... Device 0: "Tesla C2050 / C2070" with Compute 2.0 capability Using Matrix Sizes: A(640 x 960), B(640 x 640), C(640 x 960) Runing Kernels... > CUBLAS Throughput = 425.5354 GFlop/s, Time = 0.00185 s, Size = 786432000 Ops > CUDA matrixMul Throughput = 186.7655 GFlop/s, Time = 0.00421 s, Size = 786432000 Ops, NumDevsUsed = 1, Workgroup = 1024 Comparing GPU results with Host computation... Comparing CUBLAS & Host results CUBLAS compares OK Comparing CUDA matrixMul & Host results CUDA matrixMul compares OK [matrixMul] test results... PASSED Press ENTER to exit...
( ゚д゚)ポカーン