CUDA™ 2.3開発環境をインストールする (Linux版)

対象 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 システムが必要とされます。

  • NVIDIA Driver
  • CUDA Toolkit
  • CUDA SDK

CUDA ソフトウェアのインストール

 今回は、CentOS 5.3 にインストールするため、CUDA Zone で Red Hat Enterprise Linux 5.3 用の以下のソフトウェアをダウンロードします。これらは、インストールスクリプト形式ですので、「ルート権限」でスクリプトの実行を行います。

  • cudadriver_2.3_linux_64_190.18.run
  • cudatoolkit_2.3_linux_64_rhel5.3.run
  • cudasdk_2.3_linux.run

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

CUDAインストール後の Linux 設定

環境変数 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 の開発環境のセットアップは終了します。

PGI GPU 用コンパイラ情報サイト