GPU CUDA 7.0 インストール Scientific Linux / CentOS / Red Hat EL 6.5, 7
PGIアクセラレータ™ コンパイラを使用する前に、NVIDIA社の CUDA™ 開発環境をインストールしておく必要があります。ここでは、 一例として Sceintific Linux 6.5 (RHEL/CentOS 6.5) 上に CUDA 7.0 環境をインストールする手順を説明します。ここでの前提は、ハードウェアシステムの中に、NVIDIA 社の GPU が実装されていることとします。
2015年 4月23日 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.0 ダウンロードサイトのページから Linux RHEL 6 (CentOS 6) のディストリブ-ション用の RPM 用のファイルをダウンロードします。CUDA 7.1 から、ネットワーク・インストール用の rpm ファイルとローカル・インストール用の rpm パッケージの二種類が提供されています。前者のファイル名は cuda-repo-rhel6-7.0-{revision number}.x86_64.rpm で、後者の場合は cuda-repo-rhel6-7-0-local-7.0-{revision number}.x86_64.rpmと言うファイルです。また、前者のファイルは CUDA 用のリポジトリを RPM 管理下にセットするためのファイルです。後者のローカルパッケージ用の rpm ファイルをインストールすると、 CUDA 用のリポジトリのセットと /var 配下に CUDA 7.0 の実体 rpm ファイルが作成されます。
ネットワーク・インストールは手軽ですが、途中、ネットワーク回線の混雑の影響でインストールが失敗する場合が多々あります。基本的には、ローカル・インストール用(約 1GB)のファイルをダウンロードし、rpm でのインストールを行った方が安全です。なお、ローカル・インストール用パッケージをダウンロードした後、ファイルのチェックサムを確認して下さい。以下では、ローカル・インストール用パッケージを利用した例を説明します。
$ cd /tmp $ wget http://developer.download.nvidia.com/compute/cuda/7_0/Prod/local_installers/rpmdeb/ cuda-repo-rhel7-7-0-local-7.0-28.x86_64.rpm
NVIDIA 英文インストレーション・ガイドは、こちらで見ることが出来ますので、併せて参照してください。
事前準備
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.0 の 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.0 の実装後は、こうした問題はなく正常に display が起動しました。)
CUDA 7.0 の RPM によるインストール
今回は、Scientific Linux (RHEL/CentOS) 6.5 にインストールするため、CUDA ダウンロードサイトにて Red Hat Enterprise Linux 6 (64bit) 用の rpm ファイル(ローカルパッケージ)をダウンロードします。なお、ネットワーク・インストールで実施する場合は、インストールyum の実行中、cuda の実体ファイルのダウンロードが正常にできない状況や yum 自体のエラー等が起こることがあります。こうした場合は、何回か繰り返して、yum install cuda コマンドの実行を行うことをお勧めします。ダウンロードできなかったファイルのみがリトライするような状況になります。以下の説明は、ローカルパッケージを使用した場合のインストール例です。
TIPS
以下の RPM ベースのインストールにおいて、過去の CUDA バージョンの実装ファイルと「依存性があるため、インストールができない」という形で終わることがあります。筆者の場合は、CUDA 5.5 ~ 6.5までの CUDA が実装されていたため、CUDA 7.0 がインストールできない状況に陥りました。その際の対処として、過去の CUDA version の rpm パッケージを yum で全て削除してから CUDA 7.0 を実装しました。過去の CUDA rpm パッケージを削除する方法は、以下のコマンドで可能です(なお、削除することに関して十分に注意をしてから行って下さい)。
実装されている cudaパッケージの詳細リストを出す。 [root@photon29 tmp]# yum list cuda\* yum で cuda のパッケージを全部削除する。 [root@photon29 tmp]# yum remove cuda-\*
CUDA 7.0 の実際のインストール
[root@photon30 tmp]# ls (/tmp配下で行う) cuda-repo-rhel6-7-0-local-7.0-28.x86_64.rpm (CUDAリポジトリのインストールと CUDA 7.0 実体ファイル rpm の実装) [root@photon30 tmp]# rpm --install cuda-repo-rhel6-7-0-local-7.0-28.x86_64.rpm (yum のリポジトリ確認、cuda-7-0-local.repoが作成されている。cuda.repo は過去のバージョン時の名残) [root@photon30 tmp]# ls /etc/yum.repos.d/ cuda-7-0-local.repo linuxtech.repo mirrors-rpmforge-extras rpmforge.repo sl-updates.repo.rpmsave sl.repo.rpmsave cuda.repo mirrors-rpmforge mirrors-rpmforge-testing sl-other.repo sl.repo [root@photon30 etc]# rm /etc/yum.repos.d/cuda.repo (過去のCUDA Network installer のリポジトリを削除) (/var 配下に実装されたCUDA 7.0 実体ファイル rpm) [root@photon30 tmp]# ls /var/cuda-repo-7-0-local/ GPGKEY cuda-license-7-0-7.0-28.x86_64.rpm cuda-7-0-7.0-28.x86_64.rpm cuda-minimal-build-7-0-7.0-28.x86_64.rpm cuda-7.0-28.x86_64.rpm cuda-misc-headers-7-0-7.0-28.x86_64.rpm cuda-command-line-tools-7-0-7.0-28.x86_64.rpm cuda-npp-7-0-7.0-28.x86_64.rpm cuda-core-7-0-7.0-28.x86_64.rpm cuda-npp-dev-7-0-7.0-28.x86_64.rpm cuda-cublas-7-0-7.0-28.x86_64.rpm cuda-nvidia-kmod-common-346.46-0.x86_64.rpm cuda-cublas-dev-7-0-7.0-28.x86_64.rpm cuda-nvrtc-7-0-7.0-28.x86_64.rpm cuda-cudart-7-0-7.0-28.x86_64.rpm cuda-nvrtc-dev-7-0-7.0-28.x86_64.rpm cuda-cudart-dev-7-0-7.0-28.x86_64.rpm cuda-runtime-7-0-7.0-28.x86_64.rpm cuda-cufft-7-0-7.0-28.x86_64.rpm cuda-samples-7-0-7.0-28.x86_64.rpm cuda-cufft-dev-7-0-7.0-28.x86_64.rpm cuda-toolkit-7-0-7.0-28.x86_64.rpm cuda-curand-7-0-7.0-28.x86_64.rpm cuda-visual-tools-7-0-7.0-28.x86_64.rpm cuda-curand-dev-7-0-7.0-28.x86_64.rpm gpu-deployment-kit-346.46-0.x86_64.rpm cuda-cusolver-7-0-7.0-28.x86_64.rpm nvidia-kmod-346.46-2.el6.x86_64.rpm cuda-cusolver-dev-7-0-7.0-28.x86_64.rpm nvidia-uvm-kmod-346.46-3.el6.x86_64.rpm cuda-cusparse-7-0-7.0-28.x86_64.rpm repodata cuda-cusparse-dev-7-0-7.0-28.x86_64.rpm xorg-x11-drv-nvidia-346.46-1.el6.x86_64.rpm cuda-documentation-7-0-7.0-28.x86_64.rpm xorg-x11-drv-nvidia-devel-346.46-1.el6.x86_64.rpm cuda-driver-dev-7-0-7.0-28.x86_64.rpm xorg-x11-drv-nvidia-gl-346.46-1.el6.x86_64.rpm cuda-drivers-346.46-0.x86_64.rpm xorg-x11-drv-nvidia-libs-346.46-1.el6.x86_64.rpm cuda-gdb-src-7-0-7.0-28.x86_64.rpm [root@photon30 tmp]# yum clean expire-cache Cleaning repos: cuda cuda-7-0-local linuxtech rpmforge sl sl-security 6 metadata files removed [root@photon30 tmp]# yum install cuda Loaded plugins: refresh-packagekit, security cuda-7-0-local | 2.5 kB 00:00 ... linuxtech | 2.6 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:6.5-14 will be updated ---> Package cuda.x86_64 0:7.0-28 will be an update --> Processing Dependency: cuda-7-0 = 7.0-28 for package: cuda-7.0-28.x86_64 --> Running transaction check ---> Package cuda-7-0.x86_64 0:7.0-28 will be installed --> Processing Dependency: cuda-toolkit-7-0 = 7.0-28 for package: cuda-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-runtime-7-0 = 7.0-28 for package: cuda-7-0-7.0-28.x86_64 --> Running transaction check ---> Package cuda-runtime-7-0.x86_64 0:7.0-28 will be installed --> Processing Dependency: cuda-cusparse-7-0 = 7.0-28 for package: cuda-runtime-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-curand-7-0 = 7.0-28 for package: cuda-runtime-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-cublas-7-0 = 7.0-28 for package: cuda-runtime-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-cusolver-7-0 = 7.0-28 for package: cuda-runtime-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-cufft-7-0 = 7.0-28 for package: cuda-runtime-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-cudart-7-0 = 7.0-28 for package: cuda-runtime-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-npp-7-0 = 7.0-28 for package: cuda-runtime-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-nvrtc-7-0 = 7.0-28 for package: cuda-runtime-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-drivers >= 346.46 for package: cuda-runtime-7-0-7.0-28.x86_64 ---> Package cuda-toolkit-7-0.x86_64 0:7.0-28 will be installed --> Processing Dependency: cuda-samples-7-0 = 7.0-28 for package: cuda-toolkit-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-cusparse-dev-7-0 = 7.0-28 for package: cuda-toolkit-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-cufft-dev-7-0 = 7.0-28 for package: cuda-toolkit-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-cublas-dev-7-0 = 7.0-28 for package: cuda-toolkit-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-misc-headers-7-0 = 7.0-28 for package: cuda-toolkit-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-nvrtc-dev-7-0 = 7.0-28 for package: cuda-toolkit-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-driver-dev-7-0 = 7.0-28 for package: cuda-toolkit-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-curand-dev-7-0 = 7.0-28 for package: cuda-toolkit-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-visual-tools-7-0 = 7.0-28 for package: cuda-toolkit-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-documentation-7-0 = 7.0-28 for package: cuda-toolkit-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-cudart-dev-7-0 = 7.0-28 for package: cuda-toolkit-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-license-7-0 = 7.0-28 for package: cuda-toolkit-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-cusolver-dev-7-0 = 7.0-28 for package: cuda-toolkit-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-npp-dev-7-0 = 7.0-28 for package: cuda-toolkit-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-command-line-tools-7-0 = 7.0-28 for package: cuda-toolkit-7-0-7.0-28.x86_64 --> Processing Dependency: cuda-core-7-0 = 7.0-28 for package: cuda-toolkit-7-0-7.0-28.x86_64 --> Running transaction check ---> Package cuda-command-line-tools-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-core-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-cublas-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-cublas-dev-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-cudart-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-cudart-dev-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-cufft-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-cufft-dev-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-curand-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-curand-dev-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-cusolver-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-cusolver-dev-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-cusparse-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-cusparse-dev-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-documentation-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-driver-dev-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-drivers.x86_64 0:340.29-0 will be updated ---> Package cuda-drivers.x86_64 0:346.46-0 will be obsoleting --> Processing Dependency: nvidia-kmod >= 1:346.46 for package: cuda-drivers-346.46-0.x86_64 --> Processing Dependency: xorg-x11-drv-nvidia-gl(x86-64) >= 1:346.46 for package: cuda-drivers-346.46-0.x86_64 --> Processing Dependency: nvidia-uvm-kmod >= 1:346.46 for package: cuda-drivers-346.46-0.x86_64 --> Processing Dependency: xorg-x11-drv-nvidia-devel(x86-64) >= 1:346.46 for package: cuda-drivers-346.46-0.x86_64 --> Processing Dependency: xorg-x11-drv-nvidia-libs(x86-64) >= 1:346.46 for package: cuda-drivers-346.46-0.x86_64 --> Processing Dependency: xorg-x11-drv-nvidia >= 1:346.46 for package: cuda-drivers-346.46-0.x86_64 ---> Package cuda-license-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-misc-headers-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-npp-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-npp-dev-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-nvrtc-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-nvrtc-dev-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-samples-7-0.x86_64 0:7.0-28 will be installed ---> Package cuda-visual-tools-7-0.x86_64 0:7.0-28 will be installed --> Processing Dependency: jre >= 1.7 for package: cuda-visual-tools-7-0-7.0-28.x86_64 ---> Package xorg-x11-drv-nvidia-devel.i686 1:340.29-1.el6 will be obsoleted ---> Package xorg-x11-drv-nvidia-devel.x86_64 1:340.29-1.el6 will be obsoleted ---> Package xorg-x11-drv-nvidia-gl.i686 1:340.29-1.el6 will be obsoleted ---> Package xorg-x11-drv-nvidia-gl.x86_64 1:340.29-1.el6 will be obsoleted ---> Package xorg-x11-drv-nvidia-libs.i686 1:340.29-1.el6 will be obsoleted ---> Package xorg-x11-drv-nvidia-libs.x86_64 1:340.29-1.el6 will be obsoleted --> Running transaction check ---> Package java-1.7.0-openjdk.x86_64 1:1.7.0.79-2.5.5.1.el6_6 will be installed ---> Package nvidia-kmod.x86_64 1:340.29-2.el6 will be obsoleted ---> Package nvidia-kmod.x86_64 1:340.29-2.el6 will be updated ---> Package nvidia-kmod.x86_64 1:346.46-2.el6 will be an update ---> Package nvidia-uvm-kmod.x86_64 1:340.29-3.el6 will be updated ---> Package nvidia-uvm-kmod.x86_64 1:346.46-3.el6 will be an update ---> Package xorg-x11-drv-nvidia.x86_64 1:340.29-1.el6 will be updated ---> Package xorg-x11-drv-nvidia.x86_64 1:346.46-1.el6 will be obsoleting ---> Package xorg-x11-drv-nvidia-devel.x86_64 1:340.29-1.el6 will be updated ---> Package xorg-x11-drv-nvidia-devel.x86_64 1:346.46-1.el6 will be an update ---> Package xorg-x11-drv-nvidia-gl.x86_64 1:340.29-1.el6 will be updated ---> Package xorg-x11-drv-nvidia-gl.x86_64 1:346.46-1.el6 will be an update ---> Package xorg-x11-drv-nvidia-libs.x86_64 1:340.29-1.el6 will be updated ---> Package xorg-x11-drv-nvidia-libs.x86_64 1:346.46-1.el6 will be an update --> Finished Dependency Resolution Dependencies Resolved ==================================================================================================== Package Arch Version Repository Size ==================================================================================================== Installing: cuda-drivers x86_64 346.46-0 cuda-7-0-local 2.0 k replacing xorg-x11-drv-nvidia-devel.i686 1:340.29-1.el6 replacing xorg-x11-drv-nvidia-devel.x86_64 1:340.29-1.el6 replacing xorg-x11-drv-nvidia-gl.i686 1:340.29-1.el6 replacing xorg-x11-drv-nvidia-gl.x86_64 1:340.29-1.el6 replacing xorg-x11-drv-nvidia-libs.i686 1:340.29-1.el6 replacing xorg-x11-drv-nvidia-libs.x86_64 1:340.29-1.el6 xorg-x11-drv-nvidia x86_64 1:346.46-1.el6 cuda-7-0-local 5.1 M replacing nvidia-kmod.x86_64 1:340.29-2.el6 Updating: cuda x86_64 7.0-28 cuda-7-0-local 2.0 k Installing for dependencies: cuda-7-0 x86_64 7.0-28 cuda-7-0-local 2.6 k cuda-command-line-tools-7-0 x86_64 7.0-28 cuda-7-0-local 17 M cuda-core-7-0 x86_64 7.0-28 cuda-7-0-local 18 M cuda-cublas-7-0 x86_64 7.0-28 cuda-7-0-local 20 M cuda-cublas-dev-7-0 x86_64 7.0-28 cuda-7-0-local 35 M cuda-cudart-7-0 x86_64 7.0-28 cuda-7-0-local 126 k cuda-cudart-dev-7-0 x86_64 7.0-28 cuda-7-0-local 836 k cuda-cufft-7-0 x86_64 7.0-28 cuda-7-0-local 45 M cuda-cufft-dev-7-0 x86_64 7.0-28 cuda-7-0-local 60 M cuda-curand-7-0 x86_64 7.0-28 cuda-7-0-local 39 M cuda-curand-dev-7-0 x86_64 7.0-28 cuda-7-0-local 62 M cuda-cusolver-7-0 x86_64 7.0-28 cuda-7-0-local 21 M cuda-cusolver-dev-7-0 x86_64 7.0-28 cuda-7-0-local 4.5 M cuda-cusparse-7-0 x86_64 7.0-28 cuda-7-0-local 28 M cuda-cusparse-dev-7-0 x86_64 7.0-28 cuda-7-0-local 28 M cuda-documentation-7-0 x86_64 7.0-28 cuda-7-0-local 87 M cuda-driver-dev-7-0 x86_64 7.0-28 cuda-7-0-local 15 k cuda-license-7-0 x86_64 7.0-28 cuda-7-0-local 28 k cuda-misc-headers-7-0 x86_64 7.0-28 cuda-7-0-local 1.0 M cuda-npp-7-0 x86_64 7.0-28 cuda-7-0-local 47 M cuda-npp-dev-7-0 x86_64 7.0-28 cuda-7-0-local 49 M cuda-nvrtc-7-0 x86_64 7.0-28 cuda-7-0-local 11 M cuda-nvrtc-dev-7-0 x86_64 7.0-28 cuda-7-0-local 11 k cuda-runtime-7-0 x86_64 7.0-28 cuda-7-0-local 1.9 k cuda-samples-7-0 x86_64 7.0-28 cuda-7-0-local 87 M cuda-toolkit-7-0 x86_64 7.0-28 cuda-7-0-local 2.9 k cuda-visual-tools-7-0 x86_64 7.0-28 cuda-7-0-local 260 M java-1.7.0-openjdk x86_64 1:1.7.0.79-2.5.5.1.el6_6 sl-security 26 M Updating for dependencies: nvidia-kmod x86_64 1:346.46-2.el6 cuda-7-0-local 4.3 M nvidia-uvm-kmod x86_64 1:346.46-3.el6 cuda-7-0-local 114 k xorg-x11-drv-nvidia-devel x86_64 1:346.46-1.el6 cuda-7-0-local 120 k xorg-x11-drv-nvidia-gl x86_64 1:346.46-1.el6 cuda-7-0-local 22 M xorg-x11-drv-nvidia-libs x86_64 1:346.46-1.el6 cuda-7-0-local 25 M Transaction Summary ==================================================================================================== Install 30 Package(s) Upgrade 6 Package(s) Total download size: 1.0 G Is this ok [y/N]: y Downloading Packages: (30/36): java-1.7.0-openjdk-1.7.0.79-2.5.5.1.el6_6.x86_64.rpm | 26 MB 05:32 --------------------------------------------------------------------------------------------------- Total 3.0 MB/s | 1.0 GB 05:34 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Warning: RPMDB altered outside of yum. ** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows: cuda-repo-rhel6-6.5-14.x86_64 is a duplicate with cuda-repo-rhel6-6.0-37.x86_64 Installing : cuda-license-7-0-7.0-28.x86_64 1/47 *** 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.0/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. (中略) *** 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.0/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.0-28.x86_64 36/47 *** 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.0/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-340.29-0.x86_64 37/47 Cleanup : 1:xorg-x11-drv-nvidia-devel-340.29-1.el6 38/47 Cleanup : 1:xorg-x11-drv-nvidia-devel-340.29-1.el6 39/47 Cleanup : 1:xorg-x11-drv-nvidia-gl-340.29-1.el6 40/47 Cleanup : 1:xorg-x11-drv-nvidia-libs-340.29-1.el6 41/47 Cleanup : 1:xorg-x11-drv-nvidia-gl-340.29-1.el6 42/47 Cleanup : 1:xorg-x11-drv-nvidia-libs-340.29-1.el6 43/47 Cleanup : 1:xorg-x11-drv-nvidia-340.29-1.el6.x86_64 44/47 Cleanup : 1:nvidia-uvm-kmod-340.29-3.el6.x86_64 45/47 -------- Uninstall Beginning -------- Module: nvidia-uvm Version: 340.29 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: 340.29 completely from the DKMS tree. ------------------------------ Done. Cleanup : 1:nvidia-kmod-340.29-2.el6.x86_64 46/47 -------- Uninstall Beginning -------- Module: nvidia Version: 340.29 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: 340.29 completely from the DKMS tree. ------------------------------ Done. Cleanup : cuda-6.5-14.x86_64 47/47 Verifying : cuda-driver-dev-7-0-7.0-28.x86_64 1/47 Verifying : cuda-samples-7-0-7.0-28.x86_64 2/47 (snip) Verifying : 1:nvidia-uvm-kmod-340.29-3.el6.x86_64 51/47 Installed: cuda-drivers.x86_64 0:346.46-0 xorg-x11-drv-nvidia.x86_64 1:346.46-1.el6 Dependency Installed: cuda-7-0.x86_64 0:7.0-28 cuda-command-line-tools-7-0.x86_64 0:7.0-28 cuda-core-7-0.x86_64 0:7.0-28 cuda-cublas-7-0.x86_64 0:7.0-28 cuda-cublas-dev-7-0.x86_64 0:7.0-28 cuda-cudart-7-0.x86_64 0:7.0-28 cuda-cudart-dev-7-0.x86_64 0:7.0-28 cuda-cufft-7-0.x86_64 0:7.0-28 cuda-cufft-dev-7-0.x86_64 0:7.0-28 cuda-curand-7-0.x86_64 0:7.0-28 cuda-curand-dev-7-0.x86_64 0:7.0-28 cuda-cusolver-7-0.x86_64 0:7.0-28 cuda-cusolver-dev-7-0.x86_64 0:7.0-28 cuda-cusparse-7-0.x86_64 0:7.0-28 cuda-cusparse-dev-7-0.x86_64 0:7.0-28 cuda-documentation-7-0.x86_64 0:7.0-28 cuda-driver-dev-7-0.x86_64 0:7.0-28 cuda-license-7-0.x86_64 0:7.0-28 cuda-misc-headers-7-0.x86_64 0:7.0-28 cuda-npp-7-0.x86_64 0:7.0-28 cuda-npp-dev-7-0.x86_64 0:7.0-28 cuda-nvrtc-7-0.x86_64 0:7.0-28 cuda-nvrtc-dev-7-0.x86_64 0:7.0-28 cuda-runtime-7-0.x86_64 0:7.0-28 cuda-samples-7-0.x86_64 0:7.0-28 cuda-toolkit-7-0.x86_64 0:7.0-28 cuda-visual-tools-7-0.x86_64 0:7.0-28 java-1.7.0-openjdk.x86_64 1:1.7.0.79-2.5.5.1.el6_6 Updated: cuda.x86_64 0:7.0-28 Dependency Updated: nvidia-kmod.x86_64 1:346.46-2.el6 nvidia-uvm-kmod.x86_64 1:346.46-3.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 Replaced: nvidia-kmod.x86_64 1:340.29-2.el6 xorg-x11-drv-nvidia-devel.i686 1:340.29-1.el6 xorg-x11-drv-nvidia-devel.x86_64 1:340.29-1.el6 xorg-x11-drv-nvidia-gl.i686 1:340.29-1.el6 xorg-x11-drv-nvidia-gl.x86_64 1:340.29-1.el6 xorg-x11-drv-nvidia-libs.i686 1:340.29-1.el6 xorg-x11-drv-nvidia-libs.x86_64 1:340.29-1.el6 この後、全てをシステムに反映させるためにリブートしてください。
環境変数 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.0/lib64 を指定します
【64ビットLinux】LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH
[kato@photon29 tmp]# cd [kato@photon29 etc]# vi .bashrc (前略) export PATH=/usr/local/cuda-7.0/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:/lib:$LD_LIBRARY_PATH :wq [root@photon29 etc]#
CUDAコマンドの実行検証
設定した PATH 環境変数等が反映された別の端末セッションを開き、CUDAコマンドを実行してみます。
[kato@photon29 ~]$ which nvcc /usr/local/cuda-7.0/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 Mon_Feb_16_22:59:02_CST_2015 Cuda compilation tools, release 7.0, V7.0.27 [kato@photon29 ~]$ nvcc hello.c [kato@photon29 ~]$ ./a.out HELLO [kato@photon29 ~]$ ldd a.out (shared library のリンク確認) linux-vdso.so.1 => (0x00007fffeabff000) librt.so.1 => /lib64/librt.so.1 (0x00000034f5200000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00000034f4e00000) libdl.so.2 => /lib64/libdl.so.2 (0x00000034f4600000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003500a00000) libm.so.6 => /lib64/libm.so.6 (0x00000034f5600000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003500200000) libc.so.6 => /lib64/libc.so.6 (0x00000034f4a00000) /lib64/ld-linux-x86-64.so.2 (0x00000034f4200000)
以上で、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 346.46 Thu Jul 31 20:23:19 PDT 2014 GCC version: gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
[kato@photon29 GPGPU]$ pgaccelinfo CUDA Driver Version: 7000 <== この番号は、NVIDIAドライバーのバージョン番号 7.0 の意味 NVRM version: NVIDIA UNIX x86_64 Kernel Module 346.46 Tue Feb 17 17:56:08 PST 2015 Device Number: 0 Device Name: Tesla C2075 Device Revision Number: 2.0 Global Memory Size: 6442123264 Number of Multiprocessors: 14 Number of Cores: 448 Concurrent Copy and Execution: Yes Total Constant Memory: 65536 Total Shared Memory per Block: 49152 Registers per Block: 32768 Warp Size: 32 Maximum Threads per Block: 1024 Maximum Block Dimensions: 1024, 1024, 64 Maximum Grid Dimensions: 65535 x 65535 x 65535 Maximum Memory Pitch: 2147483647B Texture Alignment: 512B Clock Rate: 1147 MHz Execution Timeout: No Integrated Device: No Can Map Host Memory: Yes Compute Mode: default Concurrent Kernels: Yes ECC Enabled: No Memory Clock Rate: 1566 MHz Memory Bus Width: 384 bits L2 Cache Size: 786432 bytes Max Threads Per SMP: 1536 Async Engines: 2 Unified Addressing: Yes Managed Memory: No PGI Compiler Option: -ta=tesla:cc20