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

対象 GPU CUDA 7.5 インストール Scientific Linux / CentOS / Red Hat EL 6.5, 7

 PGIアクセラレータ™ コンパイラを使用する前に、NVIDIA社の CUDA™ 開発環境をインストールしておく必要があります。ここでは、 一例として Sceintific Linux 6.5 (RHEL/CentOS 6.5) 上に CUDA 7.5 環境をインストールする手順を説明します。ここでの前提は、ハードウェアシステムの中に、NVIDIA 社の GPU が実装されていることとします。
2015年10月20日 Copyright © 株式会社ソフテック 加藤

必要とするハードウェア、ソフトウェア環境

 PGIアクセラレータ™ コンパイラを使用するためには、NVIDIA社の CUDA-enable な GeForce、Quadro、Tesla カードを有した CUDA ソフトウェアがインストールされたシステムが必要です。サポートされる GPU の詳細なリストは、NVIDIA の ウェブサイトでご覧下さい。https://developer.nvidia.com/cuda-gpus
なお、現在、Linuxシステム(Red Hat/ CentOS /Fedora) に搭載している GPU ボードの型番を調べたい場合は、以下のコマンドを使用します。以下の例は、NVIDIA Tesla K20(NF200) と GeForce 580(GF110) ボードが搭載された場合の状況を示しています。

[root@photon29 ~]# lspci | grep -i nVidia
(一例)
02:00.0 PCI bridge: NVIDIA Corporation NF200 PCIe 2.0 switch (rev a3)
03:00.0 PCI bridge: NVIDIA Corporation NF200 PCIe 2.0 switch (rev a3)
03:02.0 PCI bridge: NVIDIA Corporation NF200 PCIe 2.0 switch (rev a3)
04:00.0 VGA compatible controller: NVIDIA Corporation GF110 [GeForce GTX 580] (rev a1)
04:00.1 Audio device: NVIDIA Corporation GF110 High Definition Audio Controller (rev a1)
06:00.0 3D controller: NVIDIA Corporation Device 1022 (rev a1)

 また、Linuxシステム上でNVIDIA CUDAドライバーコンポーネントをインストールしておく必要があります。 これらは、NVIDIA の Webサイト( https://developer.nvidia.com/cuda-downloads) からダウンロード可能です。

 CUDA 6.0 バージョンから Linux の RPM (Package Manager) によるインストールが可能となりました。今回は、この方法で CUDA をインストールする方法を説明します。(従来の Runfile によるインストール方法もあります。Runfile による方法は、過去の CUDA 5.0 インストール方法をご参照ください。)上記の CUDA 7.5 ダウンロードサイトのページから Linux RHEL 6 (CentOS 6) のディストリブ-ション用の RPM 用のファイルをダウンロードします。CUDA 7.1 から、ネットワーク・インストール用の rpm ファイルとローカル・インストール用の rpm パッケージの二種類が提供されています。前者のファイル名は cuda-repo-rhel6-7.5-{revision number}.x86_64.rpm で、後者の場合は cuda-repo-rhel6-7-5-local-7.5-{revision number}.x86_64.rpmと言うファイルです。また、前者のファイルは CUDA 用のリポジトリを RPM 管理下にセットするためのファイルです。後者のローカルパッケージ用の rpm ファイルをインストールすると、 CUDA 用のリポジトリのセットと /var 配下に CUDA 7.5 の実体 rpm ファイルが作成されます。
 ネットワーク・インストールは手軽ですが、途中、ネットワーク回線の混雑の影響でインストールが失敗する場合が多々あります。基本的には、ローカル・インストール用(約 1GB)のファイルをダウンロードし、rpm でのインストールを行った方が安全です。なお、ローカル・インストール用パッケージをダウンロードした後、ファイルのチェックサムを確認して下さい。以下では、ローカル・インストール用パッケージを利用した例を説明します。

$ cd /tmp

$ wget http://developer.download.nvidia.com/compute/cuda/7.5/Prod/local_installers/
cuda-repo-rhel6-7-5-local-7.5-18.x86_64.rpm

NVIDIA 英文インストレーション・ガイドは、こちらで見ることが出来ますので、併せて参照してください。

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

事前準備

RedHat系の場合、DKMS / libvdpauのような他の外部パッケージに依存するため、rpmforge 等のサードパーティのリポジトリのセットが必要となります。以下のコマンドにより、rpmforgeのためのセットアップを行います。yum を用いてリポジトリのセットを行います。すでに、リポジトリがセットされている場合は、実施する必要はありません。

# yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

Red Hat 7(CentOS 7, Sceirntific Linux 7)上でインストールする際の注意

Red Hat 7上でのCUDA 7.5 の RPM インストールでは、システム内に実装されている libvdpaum パッケージと dkms パッケージのバージョンが古いと言われるため、これを新しいバージョンに更新しておく必要があります。今回は、以下のサイトからそれぞれ新しいバージョンをダウンロードして、rpm インストールしました。

# wget ftp://195.220.108.108/linux/epel/7/x86_64/l/libvdpau-0.9-1.el7.x86_64.rpm

# rpm --install libvdpau-0.9-1.el7.x86_64.rpm

# wget ftp://rpmfind.net/linux/epel/7/x86_64/d/dkms-2.2.0.3-30.git.7c3e7c5.el7.noarch.rpm

# yum localinstall dkms-2.2.0.3-30.git.7c3e7c5.el7.noarch.rpm

 CUDAドライバーは、基本的には、X display のドライバでもありますので、これをインストールする時は、X が動作していない状態で行う必要があります。Linux システムの起動では、デフォルト Run level 5 で起動されますので、X が動作しています。これを一旦、Run level 3 に戻してから CUDA のドライバのインストールを行いますが、その前に、RPMによるインストール方法と従来の NVIDIA Runfile でインストールする方法では、互換性がないため過去の NVIDIA ドライバーを削除します(新規インストールの場合は必要ありません)。

[root@photon30 ~]# init 3

[root@photon30 tmp]# uname -a   (Linux カーネ情報)
Linux photon29 2.6.32-431.17.1.el6.x86_64 #1 SMP Wed May 7 14:14:17 CDT 2014 x86_64 x86_64 x86_64 GNU/Linux

(以前に .run ファイルで実装されたCUDAドライバーを削除する。存在しなければ、
  コマンドがないと言うメッセージが出る。)
[root@photon30 tmp]# /usr/bin/nvidia-uninstall
 

 CUDAのドライバーは Display ドライバーでもあり、インストール時に X11 の設定ファイルを変更する場合があります(過去の CUDA バージョンのインストールでは、リブート後に display driver が起動しないことがありました)。念のため、/etc/X11/xorg.conf ファイルとxorg.conf.dディレクトリ配下のファイルを別場所にバックアップしておくことをお勧めします。(CUDA 7.5 の実装後は、こうした問題はなく正常に display が起動しました。)

CUDA 7.5 の RPM によるインストール

 今回は、Scientific Linux (RHEL/CentOS) 6.5 にインストールするため、CUDA ダウンロードサイトにて Red Hat Enterprise Linux 6 (64bit) 用の rpm ファイル(ローカルパッケージ)をダウンロードします。なお、ネットワーク・インストールで実施する場合は、インストールyum の実行中、cuda の実体ファイルのダウンロードが正常にできない状況や yum 自体のエラー等が起こることがあります。こうした場合は、何回か繰り返して、yum install cuda コマンドの実行を行うことをお勧めします。ダウンロードできなかったファイルのみがリトライするような状況になります。以下の説明は、ローカルパッケージを使用した場合のインストール例です。

  • cuda-repo-rhel6-7-5-local-7.5-18.x86_64.rpm

TIPS
 以下の RPM ベースのインストールにおいて、過去の CUDA バージョンの実装ファイルと「依存性があるため、インストールができない」という形で終わることがあります。筆者の場合は、CUDA 5.5 ~ 6.5までの CUDA が実装されていたため、CUDA 7.5 がインストールできない状況に陥りました。その際の対処として、過去の CUDA version の rpm パッケージを yum で全て削除してから CUDA 7.5 を実装しました。過去の CUDA rpm パッケージを削除する方法は、以下のコマンドで可能です(なお、削除することに関して十分に注意をしてから行って下さい)。

実装されている cudaパッケージの詳細リストを出す。
[root@photon29 tmp]# yum list cuda\*

yum で cuda のパッケージを全部削除する。

[root@photon29 tmp]# yum remove cuda-\*	

CUDA 7.5 の実際のインストール

[root@photon30 tmp]# ls            (/tmp配下で行う)
cuda-repo-rhel6-7-5-local-7.5-18.x86_64.rpm

(CUDAリポジトリのインストールと CUDA 7.5 実体ファイル rpm の実装)
[root@photon30 tmp]# rpm --install cuda-repo-rhel6-7-5-local-7.5-18.x86_64.rpm 

(yum のリポジトリ確認、cuda-7-5-local.repoが作成されている。cuda-7-0-local.repo は過去のバージョン時の名残)
[root@photon30 tmp]# ls /etc/yum.repos.d/
cuda-7-5-local.repo   epel-testing.repo  mirrors-rpmforge-extras   sl-updates.repo.rpmsave
cuda-7-0-local.repo          epel.repo          mirrors-rpmforge-testing  sl.repo
epel-release-6-8.noarch.rpm  mirrors-rpmforge   rpmforge.repo             sl.repo.rpmsave

[root@photon30 etc]# rm /etc/yum.repos.d/cuda-7-0-local.repo (過去のCUDA 7.0 のリポジトリを削除)


(/var 配下に実装されたCUDA 7.0 実体ファイル rpm)
[root@photon30 tmp]# ls /var/cuda-repo-7-5-local/
GPGKEY                                         cuda-license-7-5-7.5-18.x86_64.rpm
cuda-7-5-7.5-18.x86_64.rpm                     cuda-minimal-build-7-5-7.5-18.x86_64.rpm
cuda-7.5-18.x86_64.rpm                         cuda-misc-headers-7-5-7.5-18.x86_64.rpm
cuda-command-line-tools-7-5-7.5-18.x86_64.rpm  cuda-npp-7-5-7.5-18.x86_64.rpm
cuda-core-7-5-7.5-18.x86_64.rpm                cuda-npp-dev-7-5-7.5-18.x86_64.rpm
cuda-cublas-7-5-7.5-18.x86_64.rpm              cuda-nvrtc-7-5-7.5-18.x86_64.rpm
cuda-cublas-dev-7-5-7.5-18.x86_64.rpm          cuda-nvrtc-dev-7-5-7.5-18.x86_64.rpm
cuda-cudart-7-5-7.5-18.x86_64.rpm              cuda-runtime-7-5-7.5-18.x86_64.rpm
cuda-cudart-dev-7-5-7.5-18.x86_64.rpm          cuda-samples-7-5-7.5-18.ppc64le.rpm
cuda-cufft-7-5-7.5-18.x86_64.rpm               cuda-samples-7-5-7.5-18.x86_64.rpm
cuda-cufft-dev-7-5-7.5-18.x86_64.rpm           cuda-toolkit-7-5-7.5-18.x86_64.rpm
cuda-curand-7-5-7.5-18.x86_64.rpm              cuda-visual-tools-7-5-7.5-18.x86_64.rpm
cuda-curand-dev-7-5-7.5-18.x86_64.rpm          gpu-deployment-kit-352.39-0.x86_64.rpm
cuda-cusolver-7-5-7.5-18.x86_64.rpm            nvidia-kmod-352.39-2.el6.x86_64.rpm
cuda-cusolver-dev-7-5-7.5-18.x86_64.rpm        nvidia-uvm-kmod-352.39-3.el6.x86_64.rpm
cuda-cusparse-7-5-7.5-18.x86_64.rpm            repodata
cuda-cusparse-dev-7-5-7.5-18.x86_64.rpm        xorg-x11-drv-nvidia-352.39-1.el6.x86_64.rpm
cuda-documentation-7-5-7.5-18.x86_64.rpm       xorg-x11-drv-nvidia-devel-352.39-1.el6.x86_64.rpm
cuda-driver-dev-7-5-7.5-18.x86_64.rpm          xorg-x11-drv-nvidia-gl-352.39-1.el6.x86_64.rpm
cuda-drivers-352.39-0.x86_64.rpm               xorg-x11-drv-nvidia-libs-352.39-1.el6.x86_64.rpm
cuda-gdb-src-7-5-7.5-18.x86_64.rpm

[root@photon30 tmp]# yum clean expire-cache

[root@photon30 tmp]# yum install cuda
Loaded plugins: refresh-packagekit, security
cuda-7-5-local               | 2.5 kB     00:00 ...
cuda-7-5-local/primary_db    |  26 kB     00:00 ...
epel                         | 4.3 kB     00:00
rpmforge                     | 1.9 kB     00:00
sl                           | 3.6 kB     00:00
sl-security                  | 2.9 kB     00:00
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package cuda.x86_64 0:7.0-28 will be updated
---> Package cuda.x86_64 0:7.5-18 will be an update
--> Processing Dependency: cuda-7-5 = 7.5-18 for package: cuda-7.5-18.x86_64
--> Running transaction check
---> Package cuda-7-5.x86_64 0:7.5-18 will be installed
--> Processing Dependency: cuda-toolkit-7-5 = 7.5-18 for package: cuda-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-runtime-7-5 = 7.5-18 for package: cuda-7-5-7.5-18.x86_64
--> Running transaction check
---> Package cuda-runtime-7-5.x86_64 0:7.5-18 will be installed
--> Processing Dependency: cuda-nvrtc-7-5 = 7.5-18 for package: cuda-runtime-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-npp-7-5 = 7.5-18 for package: cuda-runtime-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-cusparse-7-5 = 7.5-18 for package: cuda-runtime-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-cusolver-7-5 = 7.5-18 for package: cuda-runtime-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-curand-7-5 = 7.5-18 for package: cuda-runtime-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-cufft-7-5 = 7.5-18 for package: cuda-runtime-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-cudart-7-5 = 7.5-18 for package: cuda-runtime-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-cublas-7-5 = 7.5-18 for package: cuda-runtime-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-drivers >= 352.39 for package: cuda-runtime-7-5-7.5-18.x86_64
---> Package cuda-toolkit-7-5.x86_64 0:7.5-18 will be installed
--> Processing Dependency: cuda-visual-tools-7-5 = 7.5-18 for package: cuda-toolkit-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-samples-7-5 = 7.5-18 for package: cuda-toolkit-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-nvrtc-dev-7-5 = 7.5-18 for package: cuda-toolkit-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-npp-dev-7-5 = 7.5-18 for package: cuda-toolkit-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-misc-headers-7-5 = 7.5-18 for package: cuda-toolkit-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-license-7-5 = 7.5-18 for package: cuda-toolkit-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-driver-dev-7-5 = 7.5-18 for package: cuda-toolkit-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-documentation-7-5 = 7.5-18 for package: cuda-toolkit-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-cusparse-dev-7-5 = 7.5-18 for package: cuda-toolkit-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-cusolver-dev-7-5 = 7.5-18 for package: cuda-toolkit-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-curand-dev-7-5 = 7.5-18 for package: cuda-toolkit-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-cufft-dev-7-5 = 7.5-18 for package: cuda-toolkit-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-cudart-dev-7-5 = 7.5-18 for package: cuda-toolkit-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-cublas-dev-7-5 = 7.5-18 for package: cuda-toolkit-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-core-7-5 = 7.5-18 for package: cuda-toolkit-7-5-7.5-18.x86_64
--> Processing Dependency: cuda-command-line-tools-7-5 = 7.5-18 for package: cuda-toolkit-7-5-7.5-18.x86_64
--> Running transaction check
---> Package cuda-command-line-tools-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-core-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-cublas-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-cublas-dev-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-cudart-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-cudart-dev-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-cufft-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-cufft-dev-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-curand-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-curand-dev-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-cusolver-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-cusolver-dev-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-cusparse-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-cusparse-dev-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-documentation-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-driver-dev-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-drivers.x86_64 0:346.46-0 will be updated
---> Package cuda-drivers.x86_64 0:352.39-0 will be obsoleting
--> Processing Dependency: xorg-x11-drv-nvidia-libs(x86-64) >= 1:352.39 for package: cuda-drivers-352.39-0.x86_64
--> Processing Dependency: xorg-x11-drv-nvidia-gl(x86-64) >= 1:352.39 for package: cuda-drivers-352.39-0.x86_64
--> Processing Dependency: xorg-x11-drv-nvidia-devel(x86-64) >= 1:352.39 for package: cuda-drivers-352.39-0.x86_64
--> Processing Dependency: xorg-x11-drv-nvidia >= 1:352.39 for package: cuda-drivers-352.39-0.x86_64
--> Processing Dependency: nvidia-uvm-kmod >= 1:352.39 for package: cuda-drivers-352.39-0.x86_64
--> Processing Dependency: nvidia-kmod >= 1:352.39 for package: cuda-drivers-352.39-0.x86_64
---> Package cuda-license-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-misc-headers-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-npp-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-npp-dev-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-nvrtc-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-nvrtc-dev-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-samples-7-5.x86_64 0:7.5-18 will be installed
---> Package cuda-visual-tools-7-5.x86_64 0:7.5-18 will be installed
---> Package xorg-x11-drv-nvidia-devel.x86_64 1:346.46-1.el6 will be obsoleted
---> Package xorg-x11-drv-nvidia-gl.x86_64 1:346.46-1.el6 will be obsoleted
---> Package xorg-x11-drv-nvidia-libs.x86_64 1:346.46-1.el6 will be obsoleted
--> Running transaction check
---> Package nvidia-kmod.x86_64 1:346.46-2.el6 will be obsoleted
---> Package nvidia-kmod.x86_64 1:346.46-2.el6 will be updated
---> Package nvidia-kmod.x86_64 1:352.39-2.el6 will be an update
---> Package nvidia-uvm-kmod.x86_64 1:346.46-3.el6 will be updated
---> Package nvidia-uvm-kmod.x86_64 1:352.39-3.el6 will be an update
---> Package xorg-x11-drv-nvidia.x86_64 1:346.46-1.el6 will be updated
---> Package xorg-x11-drv-nvidia.x86_64 1:352.39-1.el6 will be obsoleting
---> Package xorg-x11-drv-nvidia-devel.x86_64 1:346.46-1.el6 will be updated
---> Package xorg-x11-drv-nvidia-devel.x86_64 1:352.39-1.el6 will be an update
---> Package xorg-x11-drv-nvidia-gl.x86_64 1:346.46-1.el6 will be updated
---> Package xorg-x11-drv-nvidia-gl.x86_64 1:352.39-1.el6 will be an update
---> Package xorg-x11-drv-nvidia-libs.x86_64 1:346.46-1.el6 will be updated
---> Package xorg-x11-drv-nvidia-libs.x86_64 1:352.39-1.el6 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================
 Package                        Arch     Version        Repository          Size
========================================================================================
Installing:
 cuda-drivers                   x86_64   352.39-0       cuda-7-5-local       2.0 k
     replacing  xorg-x11-drv-nvidia-devel.x86_64 1:346.46-1.el6
     replacing  xorg-x11-drv-nvidia-gl.x86_64 1:346.46-1.el6
     replacing  xorg-x11-drv-nvidia-libs.x86_64 1:346.46-1.el6
 xorg-x11-drv-nvidia            x86_64   1:352.39-1.el6 cuda-7-5-local       5.2 M
     replacing  nvidia-kmod.x86_64 1:346.46-2.el6
Updating:
 cuda                           x86_64    7.5-18          cuda-7-5-local     5.9 k
Installing for dependencies:
 cuda-7-5                       x86_64    7.5-18          cuda-7-5-local     6.5 k
 cuda-command-line-tools-7-5    x86_64    7.5-18          cuda-7-5-local     18 M
 cuda-core-7-5                  x86_64    7.5-18          cuda-7-5-local     18 M
 cuda-cublas-7-5                x86_64    7.5-18          cuda-7-5-local     16 M
 cuda-cublas-dev-7-5            x86_64    7.5-18          cuda-7-5-local     33 M
 cuda-cudart-7-5                x86_64    7.5-18          cuda-7-5-local     133 k
 cuda-cudart-dev-7-5            x86_64    7.5-18          cuda-7-5-local     855 k
 cuda-cufft-7-5                 x86_64    7.5-18          cuda-7-5-local     83 M
 cuda-cufft-dev-7-5             x86_64    7.5-18          cuda-7-5-local     79 M
 cuda-curand-7-5                x86_64    7.5-18          cuda-7-5-local     39 M
 cuda-curand-dev-7-5            x86_64    7.5-18          cuda-7-5-local     62 M
 cuda-cusolver-7-5              x86_64    7.5-18          cuda-7-5-local     19 M
 cuda-cusolver-dev-7-5          x86_64    7.5-18          cuda-7-5-local     4.6 M
 cuda-cusparse-7-5              x86_64    7.5-18          cuda-7-5-local     23 M
 cuda-cusparse-dev-7-5          x86_64    7.5-18          cuda-7-5-local     24 M
 cuda-documentation-7-5         x86_64    7.5-18          cuda-7-5-local     93 M
 cuda-driver-dev-7-5            x86_64    7.5-18          cuda-7-5-local     18 k
 cuda-license-7-5               x86_64    7.5-18          cuda-7-5-local     32 k
 cuda-misc-headers-7-5          x86_64    7.5-18          cuda-7-5-local     1.1 M
 cuda-npp-7-5                   x86_64    7.5-18          cuda-7-5-local     43 M
 cuda-npp-dev-7-5               x86_64    7.5-18          cuda-7-5-local     44 M
 cuda-nvrtc-7-5                 x86_64    7.5-18          cuda-7-5-local     11 M
 cuda-nvrtc-dev-7-5             x86_64    7.5-18          cuda-7-5-local     15 k
 cuda-runtime-7-5               x86_64    7.5-18          cuda-7-5-local     5.8 k
 cuda-samples-7-5               x86_64    7.5-18          cuda-7-5-local     92 M
 cuda-toolkit-7-5               x86_64    7.5-18          cuda-7-5-local     6.8 k
 cuda-visual-tools-7-5          x86_64    7.5-18          cuda-7-5-local     286 M
Updating for dependencies:
 nvidia-kmod                    x86_64    1:352.39-2.el6  cuda-7-5-local     4.4 M
 nvidia-uvm-kmod                x86_64    1:352.39-3.el6  cuda-7-5-local     123 k
 xorg-x11-drv-nvidia-devel      x86_64    1:352.39-1.el6  cuda-7-5-local     120 k
 xorg-x11-drv-nvidia-gl         x86_64    1:352.39-1.el6  cuda-7-5-local     21 M
 xorg-x11-drv-nvidia-libs       x86_64    1:352.39-1.el6  cuda-7-5-local     33 M

Transaction Summary
=====================================================================================
Install      29 Package(s)
Upgrade       6 Package(s)

Total download size: 1.0 G

Is this ok [y/N]: y
Downloading Packages:
---------------------------------------------------------------------------------------
Total                                                     439 MB/s | 1.0 GB     00:02
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Installing : cuda-license-7-5-7.5-18.x86_64                                            1/43
*** LICENSE AGREEMENT ***
By using this software you agree to fully comply with the terms and conditions of 
the EULA (End User License Agreement). The EULA is located at /usr/local/cuda-7.5/doc/EULA.txt. 
The EULA can also be found at http://docs.nvidia.com/cuda/eula/index.html. 
If you do not agree to the terms and conditions of the EULA, do not use the software.
  Installing : cuda-driver-dev-7-5-7.5-18.x86_64
(中略)

DKMS: build Completed.

nvidia-uvm.ko:
Running module version sanity check.
 - Original module
   - This kernel never originally had a module by this name
 - Installation
   - Installing to /lib/modules/2.6.32-431.17.1.el6.x86_64/extra/
Adding any weak-modules
WARNING: Can't read module /lib/modules/2.6.32-431.17.1.el6.x86_64/weak-updates/nvidia.ko: No such file or directory
egrep: /lib/modules/2.6.32-431.17.1.el6.x86_64//weak-updates/nvidia.ko: No such file or directory

depmod....

DKMS: install Completed.
  Installing : cuda-drivers-352.39-0.x86_64                                            32/43
  Installing : cuda-runtime-7-5-7.5-18.x86_64                                          33/43
  Installing : cuda-7-5-7.5-18.x86_64                                                  34/43
*** LICENSE AGREEMENT ***
By using this software you agree to fully comply with the terms and conditions of the EULA (End User License Agreement). The EULA is located at /usr/local/cuda-7.5/doc/EULA.txt. The EULA can also be found at http://docs.nvidia.com/cuda/eula/index.html. If you do not agree to the terms and conditions of the EULA, do not use the software.

*****************************************************************************************
*** Please reboot your computer and verify that the nvidia graphics driver is loaded. ***
*** If the driver fails to load, please use the NVIDIA graphics driver .run installer ***
*** to get into a stable state.                                                       ***
*****************************************************************************************
  Updating   : cuda-7.5-18.x86_64                                                      35/43
*** LICENSE AGREEMENT ***
By using this software you agree to fully comply with the terms and conditions of the EULA (End User License Agreement). The EULA is located at /usr/local/cuda-7.5/doc/EULA.txt. The EULA can also be found at http://docs.nvidia.com/cuda/eula/index.html. If you do not agree to the terms and conditions of the EULA, do not use the software.
  Cleanup    : cuda-drivers-346.46-0.x86_64                                            36/43
  Cleanup    : 1:xorg-x11-drv-nvidia-devel-346.46-1.el6.x86_64                         37/43
  Cleanup    : 1:xorg-x11-drv-nvidia-gl-346.46-1.el6.x86_64                            38/43
  Cleanup    : 1:xorg-x11-drv-nvidia-346.46-1.el6.x86_64                               39/43
  Cleanup    : 1:xorg-x11-drv-nvidia-libs-346.46-1.el6.x86_64                          40/43
  Cleanup    : 1:nvidia-uvm-kmod-346.46-3.el6.x86_64                                   41/43

-------- Uninstall Beginning --------
Module:  nvidia-uvm
Version: 346.46
Kernel:  2.6.32-431.17.1.el6.x86_64 (x86_64)
-------------------------------------

Status: This module version was INACTIVE for this kernel.
depmod....

DKMS: uninstall Completed.
------------------------------
Deleting module version: 346.46
completely from the DKMS tree.
------------------------------
Done.
  Cleanup    : cuda-7.0-28.x86_64                                                     43/43
  Verifying  : 1:xorg-x11-drv-nvidia-libs-352.39-1.el6.x86_64                          1/43
  Verifying  : 1:xorg-x11-drv-nvidia-devel-352.39-1.el6.x86_64                         2/43
  Verifying  : cuda-runtime-7-5-7.5-18.x86_64                                          3/43
  Verifying  : cuda-nvrtc-7-5-7.5-18.x86_64                                            4/43
  Verifying  : cuda-cufft-7-5-7.5-18.x86_64                                            5/43
  Verifying  : cuda-core-7-5-7.5-18.x86_64                                             6/43
  Verifying  : cuda-command-line-tools-7-5-7.5-18.x86_64                               7/43
  Verifying  : cuda-visual-tools-7-5-7.5-18.x86_64                                     8/43
  Verifying  : cuda-cusparse-7-5-7.5-18.x86_64                                         9/43
  Verifying  : 1:nvidia-uvm-kmod-352.39-3.el6.x86_64                                  10/43
  Verifying  : cuda-cusolver-7-5-7.5-18.x86_64                                        11/43
  Verifying  : cuda-cufft-dev-7-5-7.5-18.x86_64                                       12/43
  Verifying  : cuda-misc-headers-7-5-7.5-18.x86_64                                    13/43
  Verifying  : cuda-cudart-dev-7-5-7.5-18.x86_64                                      14/43
  Verifying  : cuda-documentation-7-5-7.5-18.x86_64                                   15/43
  Verifying  : cuda-cusparse-dev-7-5-7.5-18.x86_64                                    16/43
  Verifying  : cuda-cudart-7-5-7.5-18.x86_64                                          17/43
  Verifying  : cuda-cublas-dev-7-5-7.5-18.x86_64                                      18/43
  Verifying  : cuda-curand-7-5-7.5-18.x86_64                                          19/43
  Verifying  : cuda-nvrtc-dev-7-5-7.5-18.x86_64                                       20/43
  Verifying  : cuda-cublas-7-5-7.5-18.x86_64                                          21/43
  Verifying  : cuda-driver-dev-7-5-7.5-18.x86_64                                      22/43
  Verifying  : 1:xorg-x11-drv-nvidia-gl-352.39-1.el6.x86_64                           23/43
  Verifying  : 1:nvidia-kmod-352.39-2.el6.x86_64                                      24/43
  Verifying  : cuda-drivers-352.39-0.x86_64                                           25/43
  Verifying  : cuda-curand-dev-7-5-7.5-18.x86_64                                      26/43
  Verifying  : cuda-npp-7-5-7.5-18.x86_64                                             27/43
  Verifying  : 1:xorg-x11-drv-nvidia-352.39-1.el6.x86_64                              28/43
  Verifying  : cuda-7.5-18.x86_64                                                     29/43
  Verifying  : cuda-7-5-7.5-18.x86_64                                                 30/43
  Verifying  : cuda-toolkit-7-5-7.5-18.x86_64                                         31/43
  Verifying  : cuda-cusolver-dev-7-5-7.5-18.x86_64                                    32/43
  Verifying  : cuda-license-7-5-7.5-18.x86_64                                         33/43
  Verifying  : cuda-npp-dev-7-5-7.5-18.x86_64                                         34/43
  Verifying  : cuda-samples-7-5-7.5-18.x86_64                                         35/43
  Verifying  : 1:xorg-x11-drv-nvidia-libs-346.46-1.el6.x86_64                         36/43
  Verifying  : 1:xorg-x11-drv-nvidia-libs-346.46-1.el6.x86_64                         37/43
  Verifying  : 1:nvidia-uvm-kmod-346.46-3.el6.x86_64                                  38/43
  Verifying  : 1:xorg-x11-drv-nvidia-346.46-1.el6.x86_64                              39/43
  Verifying  : cuda-drivers-346.46-0.x86_64                                           40/43
  Verifying  : 1:xorg-x11-drv-nvidia-devel-346.46-1.el6.x86_64                        41/43
  Verifying  : 1:xorg-x11-drv-nvidia-devel-346.46-1.el6.x86_64                        42/43
  Verifying  : 1:xorg-x11-drv-nvidia-gl-346.46-1.el6.x86_64                           43/43
  Verifying  : 1:xorg-x11-drv-nvidia-gl-346.46-1.el6.x86_64                           44/43
  Verifying  : cuda-7.0-28.x86_64                                                     45/43
  Verifying  : 1:nvidia-kmod-346.46-2.el6.x86_64                                      46/43
  Verifying  : 1:nvidia-kmod-346.46-2.el6.x86_64                                      47/43

Installed:
  cuda-drivers.x86_64 0:352.39-0                              xorg-x11-drv-nvidia.x86_64 1:352.39-1.el6

Dependency Installed:
  cuda-7-5.x86_64 0:7.5-18                  cuda-command-line-tools-7-5.x86_64 0:7.5-18    cuda-core-7-5.x86_64 0:7.5-18
  cuda-cublas-7-5.x86_64 0:7.5-18           cuda-cublas-dev-7-5.x86_64 0:7.5-18            cuda-cudart-7-5.x86_64 0:7.5-18
  cuda-cudart-dev-7-5.x86_64 0:7.5-18       cuda-cufft-7-5.x86_64 0:7.5-18                 cuda-cufft-dev-7-5.x86_64 0:7.5-18
  cuda-curand-7-5.x86_64 0:7.5-18           cuda-curand-dev-7-5.x86_64 0:7.5-18            cuda-cusolver-7-5.x86_64 0:7.5-18
  cuda-cusolver-dev-7-5.x86_64 0:7.5-18     cuda-cusparse-7-5.x86_64 0:7.5-18              cuda-cusparse-dev-7-5.x86_64 0:7.5-18
  cuda-documentation-7-5.x86_64 0:7.5-18    cuda-driver-dev-7-5.x86_64 0:7.5-18            cuda-license-7-5.x86_64 0:7.5-18
  cuda-misc-headers-7-5.x86_64 0:7.5-18     cuda-npp-7-5.x86_64 0:7.5-18                   cuda-npp-dev-7-5.x86_64 0:7.5-18
  cuda-nvrtc-7-5.x86_64 0:7.5-18            cuda-nvrtc-dev-7-5.x86_64 0:7.5-18             cuda-runtime-7-5.x86_64 0:7.5-18
  cuda-samples-7-5.x86_64 0:7.5-18          cuda-toolkit-7-5.x86_64 0:7.5-18               cuda-visual-tools-7-5.x86_64 0:7.5-18

Updated:
  cuda.x86_64 0:7.5-18

Dependency Updated:
  nvidia-kmod.x86_64 1:352.39-2.el6                                  nvidia-uvm-kmod.x86_64 1:352.39-3.el6
  xorg-x11-drv-nvidia-devel.x86_64 1:352.39-1.el6                    xorg-x11-drv-nvidia-gl.x86_64 1:352.39-1.el6
  xorg-x11-drv-nvidia-libs.x86_64 1:352.39-1.el6

Replaced:
  nvidia-kmod.x86_64 1:346.46-2.el6                               xorg-x11-drv-nvidia-devel.x86_64 1:346.46-1.el6
  xorg-x11-drv-nvidia-gl.x86_64 1:346.46-1.el6                    xorg-x11-drv-nvidia-libs.x86_64 1:346.46-1.el6

Complete!
  xorg-x11-drv-nvidia-libs.x86_64 1:340.29-1.el6

この後、全てをシステムに反映させるためにリブートしてください。

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

環境変数 PATH と LD_LIBRARY_PATH

 この環境変数の設定は、PGIコンパイラを使用するだけであるのであれば、必須ではありません。CUDA ToolKit 内の cudaprof 等の utility を使用する場合や、NVIDIA CUDA C言語を使用する場合は必要ですので、予め設定しておいた方が無難でしょう。CUDAソフトウェアの置かれている場所とCUDA shared library の場所を指定するため、以下の環境変数の設定を $HOME/.bashrc 等の起動 rc ファイルに定義します。ここでは、個々のユーザ id 環境下の .bashrc に設定することにします。64ビットの Linux の場合は、LD_LIBRARY_PATHは、/usr/local/cuda-7.5/lib64 を指定します

 【64ビットLinux】LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH

[kato@photon29 tmp]# cd 
[kato@photon29 etc]# vi .bashrc
(前略)
export PATH=/usr/local/cuda-7.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:/lib:$LD_LIBRARY_PATH
:wq
[root@photon29 etc]# 

CUDAコマンドの実行検証

 設定した PATH 環境変数等が反映された別の端末セッションを開き、CUDAコマンドを実行してみます。

[kato@photon29 ~]$ which nvcc
/usr/local/cuda-7.5/bin/nvcc

(テストプログラム作成)
[kato@photon29 ~]$ vi hello.c
main()
{printf("hello\n");}
:wq

[kato@photon29 ~]$ nvcc -V (nvcc コンパイラのバージョン確認)
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2015 NVIDIA Corporation
Built on Tue_Aug_11_14:27:32_CDT_2015
Cuda compilation tools, release 7.5, V7.5.17

[kato@photon29 ~]$  nvcc hello.c
 
[kato@photon29 ~]$ ./a.out
 HELLO
[kato@photon29 ~]$ ldd a.out (shared library のリンク確認)
        linux-vdso.so.1 =>  (0x00007fffbffd3000)
        librt.so.1 => /lib64/librt.so.1 (0x0000003fcac00000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003fca400000)
        libdl.so.2 => /lib64/libdl.so.2 (0x0000003fc9c00000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003fd6400000)
        libm.so.6 => /lib64/libm.so.6 (0x0000003fca800000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003fd5400000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003fca000000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003fc9800000)

 以上で、CUDA の開発環境のセットアップは終了します。

PGIコンパイラの pgaccelinfo コマンドでGPUボード情報を出力

 PGIコンパイラが既にインストールされている場合は、pgaccelinfo コマンドで、実装されているNVIDIA GPUボード情報が出力できます。もし、GPUのボード特性が表示されない場合は、こちらの FAQ をご参照下さい。Linux 上で、CUDA module のロードが行われておらず、/dev 上の nvidia エントリが作成されていない可能性があります。

Linux上の NVIDIA ドライバーバージョンを見る。
[kato@photon29 X11]$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  352.39  Fri Aug 14 18:09:10 PDT 2015
GCC version:  gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
[kato@photon29 GPGPU]$ pgaccelinfo
CUDA Driver Version:           7050  <== この番号は、NVIDIAドライバーのバージョン番号 7.5 の意味
NVRM version:                  NVIDIA UNIX x86_64 Kernel Module  352.39  Fri Aug 14 18:09:10 PDT 2015

Device Number:                 0
Device Name:                   Tesla K20c
Device Revision Number:        3.5
Global Memory Size:            5032706048
Number of Multiprocessors:     13
Number of SP Cores:            2496
Number of DP Cores:            832
Concurrent Copy and Execution: Yes
Total Constant Memory:         65536
Total Shared Memory per Block: 49152
Registers per Block:           65536
Warp Size:                     32
Maximum Threads per Block:     1024
Maximum Block Dimensions:      1024, 1024, 64
Maximum Grid Dimensions:       2147483647 x 65535 x 65535
Maximum Memory Pitch:          2147483647B
Texture Alignment:             512B
Clock Rate:                    705 MHz
Execution Timeout:             No
Integrated Device:             No
Can Map Host Memory:           Yes
Compute Mode:                  default
Concurrent Kernels:            Yes
ECC Enabled:                   Yes
Memory Clock Rate:             2600 MHz
Memory Bus Width:              320 bits
L2 Cache Size:                 1310720 bytes
Max Threads Per SMP:           2048
Async Engines:                 2
Unified Addressing:            Yes
Managed Memory:                Yes
PGI Compiler Option:           -ta=tesla:cc35
PGI GPU 用コンパイラ情報サイト