Ubuntu 10.10(x86)にCUDA 4.0を入れてサンプルを動かすまで

備忘録以上の何ものでもありませんです.

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...

( ゚д゚)ポカーン

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です