GPU CUDA インストール CentOS 5.3
PGIアクセラレータ™ コンパイラの使用する前に、NVIDIA社の CUDA™ 環境環境をインストールしておく必要があります。ここでは、 一例として CentOS 5.3上に CUDA 2.3環境をインストールする手順を説明します。ここでの前提は、ハードウェアシステムの中に、NVIDIA社の GPU が実装されていることとします。
2009年9月10日 Copyright © 株式会社ソフテック 加藤2009年12月22日 更新
PGIアクセラレータ™ コンパイラを使用するためには、NVIDIA社の CUDA-enable な GeForce、Quadro、Tesla カードを有した CUDA ソフトウェアがインストールされたシステムが必要です。サポートされる GPU の詳細なリストは、NVIDIA の ウェブサイトでご覧下さい。www.nvidia.com/object/cuda_learn_products_jp.html
なお、現在、Linuxシステム(Red Hat/ CentOS /Fedora) に搭載している GPU ボードの型番を調べたい場合は、以下のコマンドを使用します。
[root@photon28 ~]# lspci | grep -i nVidia 01:00.0 VGA compatible controller: nVidia Corporation G80 [GeForce GTX 280] (rev a1)
また、ソフトウェアでは、Linuxシステム上でNVIDIAドライバーコンポーネントをインストールしておく必要があります。 これらは、NVIDIA の Webサイト( www.nvidia.com/cuda/) からダウンロード可能です。これらは、PGIコンポーネントではありませんので、NVIDIA 社によってライセンス並びにサポートされます。さらに、最新の PGI リリースとCUDAソフトウェア、ドライバーの両方をサポートするLinux システムが必要とされます。
今回は、CentOS 5.3 にインストールするため、CUDA Zone で Red Hat Enterprise Linux 5.3 用の以下のソフトウェアをダウンロードします。これらは、インストールスクリプト形式ですので、「ルート権限」でスクリプトの実行を行います。
CentOS上での kernel-devel (kernel-source) 実装の確認
CUDAのドライバーをインストールする際、kernelの一部のモジュールの再構築が必要となります。この再構築は、CUDA driverのインストーラが行いますが、一般的に言う、kernel-sourceがシステム内に存在しない場合は、予め、その実装を行っておく必要があります。この目的では、kernel driver module のリビルドですので、kernelの全ソースは必要ではなく、RedHat/CentOSの場合は、kernel-devel の実装だけでよいです。以下のように yum ユーティリティを使用して、kernel-devel をシステムに実装します。yum については、この FAQ 記事でもその使用法を紹介しています。特に、/etc/yum.conf ファイルの中に、組織のPROXY Serverを定義することを忘れないようにして下さい。
(一例)PROXY=http://proxy.softek.co.jp:3333/)
参考 http://wiki.centos.org/HowTos/I_need_the_Kernel_Source
[root@photon29 ~]# yum install kernel-devel Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * addons: ftp.oss.eznetsols.org * base: ftp.oss.eznetsols.org * centosplus: ftp.oss.eznetsols.org * contrib: ftp.oss.eznetsols.org * extras: ftp.oss.eznetsols.org * updates: ftp.oss.eznetsols.org Trying other mirror. Setting up Install Process Package kernel-devel-2.6.18-164.9.1.el5.centos.plus.x86_64 already installed and latest version Nothing to do (既に実装されている場合は、上記のようなメッセージとなる。 実装されていなければ、yumがミラーサイトからダウンロードしてインストールする。 kernel-develの場所を確認する。 [root@photon29 tmp]# cd /usr/src/ [root@photon29 src]# ls kernels redhat [root@photon29 src]# cd kernels/ [root@photon29 kernels]# ls 2.6.18-164.9.1.el5.centos.plus-x86_64 [root@photon29 kernels]# cd 2.6.18-164.9.1.el5.centos.plus-x86_64/ [root@photon29 2.6.18-164.9.1.el5.centos.plus-x86_64]# pwd /usr/src/kernels/2.6.18-164.9.1.el5.centos.plus-x86_64
CUDAドライバのインストール
CUDAのドライバーは、基本的には、X display のドライバでもありますので、これをインストールする時は、X が動作していない状態で行う必要があります。Linux システムの起動では、デフォルト Run level 5 で起動されますので、Xが動作しています。これを一旦、Run level 3 に戻してから CUDA のドライバのインストールを行います。スクリプト実行後、ライセンスの許諾と 32bit OpenGL のインストールを行うかどうかの問いの後、以下のような設問が出ます。
[root@photon28 ~]# init 3 [root@photon28 tmp]# bash cudadriver_2.3_linux_64_190.18.run あるいは、kerner-sourceが見あたらないと言うエラーで終了した場合は、以下のようにする。 [root@photon29 tmp]# bash cudadriver_2.3_linux_64_190.18.run (以下に続く) --kernel-source-path /usr/src/kernels/2.6.18-164.9.1.el5.centos.plus-x86_64 Would you like to run the nvidia-xconfig utility to automatically update your X configuration file so that the NVIDIA X driver will be used when you restart X? Any pre-existing X configuration file will be backed up. Yes No Your X configuration file has been successfully updated. Installation of the NVIDIA Accelerated Graphics Driver for Linux-x86_64 (version: 190.18) is now complete. OK
CUDA toolkit のインストール
CUDA tool kit をインストールします。デフォルトのインストール先は、/usr/local/cudaです。スクリプトを実行します。インストールを行うディレクトリとして、その「ルート」の場所を指定します。/usr/local/cuda にインストールしたい場合は、/usr/local のみを指定して下さい。その後の "cuda" directory は自動的に追加されます。
[root@photon28 tmp]# bash cudatoolkit_2.3_linux_64_rhel5.3.run
------
(中略)
Enter install path (default /usr/local/cuda, '/cuda' will be appended): /usr/local
(中略)
* Please read the release notes in /usr/local/cuda/doc/
* To uninstall CUDA, delete /usr/local/cuda
* Installation Complete
CUDA SDK のインストール
CUDA SDK をインストールします。デフォルトのインストール先は、/usr/local/cudaです。スクリプトを実行します。インストールを行うディレクトリとして、その「ルート」の場所を指定します。/usr/local/cuda にインストールしたい場合は、/usr/local のみを指定して下さい。その後の "cuda" directory は自動的に追加されます。
[root@photon28 tmp]# bash cudasdk_2.3_linux.run Verifying archive integrity... All good. Uncompressing NVIDIA GPU Computing SDK......... (中略) Enter install path (default ~/NVIDIA_GPU_Computing_SDK): {Enter} which: no nvcc in (/usr/pgi/linux86-64/9.0/mpi/mpich/bin: /usr/pgi/linux86-64/9.0/mpi2/mpich/bin:/usr/pgi/linux86-64/9.0/bin:/usr/local/pbs/bin: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin) Could not locate CUDA. Enter the full path to CUDA. If you do not know the path, accept the default and then modify the CUDA_INSTALL_PATH variable in /root/NVIDIA_GPU_Computing_SDK/shared/common.mk. Enter CUDA install path (default /usr/local/cuda): {Enter} `sdk/C' -> `/root/NVIDIA_GPU_Computing_SDK/C' (中略) ======================================== Configuring SDK Makefile (/root/NVIDIA_GPU_Computing_SDK/shared/common.mk)... ======================================== * Please make sure your PATH includes /usr/local/cuda/bin * Please make sure your LD_LIBRARY_PATH includes /usr/local/cuda/lib * To uninstall the NVIDIA GPU Computing SDK, please delete /root/NVIDIA_GPU_Computing_SDK * Installation Complete
環境変数 PATH と LD_LIBRARY_PATH
CUDAソフトウェアの置かれている場所とCUDA shared library の場所を指定するため、以下の環境変数の設定を $HOME/.bashrc 等の起動 rc ファイルに定義します。ここでは、個々のユーザ id 環境下の .bashrc に設定することにします。CUDA 2.3 以降は、/usr/local/cuda/lib と /usr/local/cuda/lib64 が存在するようです。64ビットの Linux の場合は、LD_LIBRARY_PATHは、/usr/local/cuda/lib64を指定します。CUDA 2.2 以前の場合は、LD_LIBRARY_PATH=/usr/local/cuda/lib で問題ありませんでした。
【64ビットLinux】LD_LIBRARY_PATH=/usr/local/cuda/lib64
【32ビットLinux】LD_LIBRARY_PATH=/usr/local/cuda/lib
[kato@photon28 tmp]# cd [kato@photon28 etc]# vi .bashrc (前略) export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH :wq [root@photon28 etc]#
CUDAコマンドの実行検証
設定した PATH 環境変数等が反映された別の端末セッションを開き、CUDAコマンドを実行してみます。
[kato@photon28 ~]$ which nvcc
/usr/local/cuda/bin/nvcc
(テストプログラム作成)
[kato@photon28 ~]$ vi test.c
main()
{printf("hello\n");}
:wq
[kato@photon28 ~]$ nvcc -V (nvcc コンパイラのバージョン確認)
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2009 NVIDIA Corporation
Built on Thu_Jul_30_09:24:36_PDT_2009
Cuda compilation tools, release 2.3, V0.2.1221
[kato@photon28 ~]$ nvcc test.c
hello.c: In function 'main':
hello.c:2: warning: incompatible implicit declaration of built-in function 'printf'
[kato@photon28 ~]$ ./a.out
hello
[kato@photon28 ~]$ ldd a.out (shared library のリンク確認)
libcudart.so.2 => /usr/local/cuda/lib64/libcudart.so.2 (0x00002ba4de067000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003552e00000)
libm.so.6 => /lib64/libm.so.6 (0x0000003541800000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x000000354ea00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003541400000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003541c00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003542000000)
librt.so.1 => /lib64/librt.so.1 (0x0000003542400000)
/lib64/ld-linux-x86-64.so.2 (0x0000003540400000)
以上で、CUDA の開発環境のセットアップは終了します。