CUDA2.2リリース

CUDA 2.2が2009-05-07にリリースされたようなので、ちょっと出遅れましたが試してみました。

ちょっと悲しいのが、一週間以上過ぎた今でも日本のCUDA Zoneからはダウンロード出来ないということ。今回のリリースはC++対応しているとの噂なのでかなり重要だと思うのですが、担当の方はお仕事忙しいのでしょうか?

試したのは以下の通りです。

上記webサイトからファイルをもらってきます。linuxrhel, suse, fedora, ubuntuと各種取り揃えられててうれしいです。こういうプロプラなやつってfedoraのみとか時々ありますので。ま、今の私はfedoraなので何も問題ありませんが。

まずtoolkitをインストールします。

sudo bash ./cudatoolkit_2.2_linux_64_fedora10.run

途中インストール先のディレクトリを尋ねられますが、変更せずにenterキーを押してdefault設定を使います。

Enter install path (default /usr/local/cuda, '/cuda' will be appended):

私は以前CUDA2.1をインストールしていたため、uninstallするか尋ねられるので、yesとしました。

A previous version of CUDA was found in /usr/local/cuda/bin
Would you like to uninstall? (yes/no/abort): yes

次にsdkをインストールします。こちらは、ホームディレクトリにインストールするつもりなので、特にroot権限は使っていません。

bash ./cudasdk_2.2_linux.run

途中で先程と同様にインストール先のディレクトリを尋ねられますが、変更せずにenterキーを押してdefault設定を使います。

Enter install path (default ~/NVIDIA_CUDA_SDK):

その後toolkitのインストール先を尋ねられますが、defaultの場所にインストールしているので、enterキーを押してdefault設定を使います。

Enter CUDA install path (default /usr/local/cuda):

これでインストールは完了です。

バージョンを見てみるとこんな感じです。

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2009 NVIDIA Corporation
Built on Thu_Apr__9_05:05:52_PDT_2009
Cuda compilation tools, release 2.2, V0.2.1221

早速sdkコンパイルしてみます。$HOME/NVIDIA_CUDA_SDKに移動するとMakefileがあるので何も考えずにmakeします。
沢山警告がでつつもコンパイルはできるのですが、最後の方でコンパイルエラーとなってしまいました。

make[1]: ディレクトリ `/home/fedora/NVIDIA_CUDA_SDK/projects/simpleTextureDrv' に入ります
simpleTextureDrv.cpp:61: 警告: deprecated conversion from string constant to ‘char*’
simpleTextureDrv.cpp:62: 警告: deprecated conversion from string constant to ‘char*’
/usr/include/features.h:359 から include されたファイル中,
                 /usr/local/cuda/bin/../include/host_config.h:68 から,
                 /usr/local/cuda/bin/../include/cuda_runtime.h:45 から,
                 :0 から:
/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: そのようなファイルやディレクトリはありません
make[1]: *** [data/simpleTexture_kernel.cubin] エラー 255
make[1]: ディレクトリ `/home/fedora/NVIDIA_CUDA_SDK/projects/simpleTextureDrv' から出ます
make: *** [projects/simpleTextureDrv/Makefile.ph_build] エラー 2

/usr/include/gnu/stubs.hをみると確かにgnu/stubs-32.hをインクルードしてますが、その場所にはstubs-64.hはあってもstubs-32.hはありません。よく分からないので(stubs-64.hを見るとautomatically generatedとかかいてあるが誰が自動生成したのか不明)最初は気にしない方向で。

気を取り直してprojects/simpleCUBLASに移動してmakeします。
今度は何事もなく成功しましたので、さらに../../bin/linux/releaseに移動します。先程makeしたsimpleCUBLASの実行ファイルはここにできてますので、試しに実行してみます。

./simpleCUBLAS: error while loading shared libraries: libcudart.so.2: cannot open shared object file: No such file or directory

またもうまくいきません。 cudaのlibにパスが通ってないようなので、/etc/ld.so.conf.dにcuda.confと言う名前で以下のような内容のファイルを作ります。

/usr/local/cuda/lib

その後ldconfigでshared libraryのキャッシュを再構築します。
再度simpleCUBLASを実行するとめでたく成功です。

simpleCUBLAS test running..
Test PASSED

Press ENTER to exit...