CUDA 8.0 RCをUbuntu 16.04 LTS + GTX1080にインストール


Ubuntu 16.04 LTS + GeForce GTX 1080の環境に、CUDA 8.0 RCをインストールします。Ubuntu 16.04 LTSでは、デフォルトでgcc 5.4のため、CUDA toolkitのインストール時に適切なコンパイラが無いと怒られます。2016年8月8日にgcc 5.4に対応した公式パッチが出たのですが、これに対するドキュメントが見当たらないため、メモ代わりに残しておきます。(gccを5.3.1にダウングレードすれば、パッチを使用せずにインストールできると思います。)

公式ドキュメントを見る

まずは、公式ドキュメントであるInstallation Guide for Linuxを確認します。以下の手順は基本的に公式ドキュメントのPackage Manager Installationをベースにインストールを試みます。

CUDA 8.0 RCをダウンロードする

CUDAのダウンロードサイトに行って、インストーラをダウンロードします。ダウンロードサイトへのアクセス時にはNvidiaメンバーでのログインが求められますので、アカウントを持っていない場合は作成する必要があります。
今回はPackage Manager Installationを利用するため、debをダウンロードします。以下の、「Base Installer」「Patch 1」の両方をダウンロードして、この後のインストール作業を簡単にするため、Homeフォルダに移動しておきます。

事前確認

CUDA対応のGPUがハードウェア認識されているか確認

ターミナルで以下のコマンドを入力して、GPUが認識されているか確認します。

$ lspci | grep -i nvidia

認識されていない場合は、PCIスロットにハードウェアがきちんとささっていることを確認した上で、update-pciidsコマンドを入力するなどして、認識させてください。

gccのバージョンを確認する

CUDA Toolkitをコンパイルするためにgccが必要になります。gccのバージョンを確認して下さい。Ubuntu 16.04 LTSを最新状態にしている場合は、gcc 5.4となっているはずです。

$ gcc --version

適切なKernel HeadersとDevelopment Packagesがインストールされていることを確認

現在のカーネルのバージョンを確認するには、以下のコマンドを入力します。

$ uname -r

現在のカーネルに合わせてKernel HeadersとDevelopmemt Packagesをインストールするには以下のコマンドを入力します。

$ sudo apt-get install linux-headers-$(uname -r)

競合するインストールの削除

過去のバージョンのCUDA Toolkitがrunfileでインストールされている場合、以下のコマンドで削除します。

$ sudo /usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl

また、CUDA Driverがrunfileでインストールされている場合、以下のコマンドで削除します。

$ sudo /usr/bin/nvidia-uninstall

RPM/DebでNvidiaのドライバなどがインストールされている場合は、以下のコマンドで削除します。

$ sudo apt-get --purge remove nvidia-*

CUDAのインストール

以下のコマンドでCUDAをインストールします。

$ sudo dpkg -i cuda-repo-ubuntu1604-8-0-rc_8.0.27-1_amd64.deb
$ sudo apt-get update
$ sudo apt-get install cuda
$ sudo apt-get remove --purge -y cuda-repo-ubuntu1604-8-0-rc

パッチを当てます。

$ sudo dpkg -i cuda-misc-headers-8-0_8.0.27.1-1_amd64.deb

インストール後の作業

環境変数の設定

~/.bashrcに以下の変数を追加してください。

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda

ここで再起動しましょう。再起動後に動作が不安定の場合は、Ctrl + Alt + F1を押して仮想コンソールを起動し、Nvidiaのドライバを再インストールします。

$ sudo apt-get install nvidia-367 --reinstall
$ sudo reboot

正常にインストールできたか確認する

ドライバのバージョンを確認する

$ cat /proc/driver/nvidia/version

nvccのバージョンを確認する

$ nvcc -V

書き込み可能なサンプルをインストールする

いくつかサンプルを動かす必要があるため、サンプルをインストールします。

$ cd /usr/local/cuda-8.0/samples
$ sudo make

deviceQueryを実行してみましょう。Result=PASSであれば動いているはずです。

$ cd bin/x86_64/linux/release
$ sudo ./deviceQuery

もう一つ、bandwidthTestを実行します。

sudo ./bandwidthTest

ついでにcuDNNをインストール

Deep Learningの環境を整える場合は、cuDNNが必要になります。
cuDNNのダウンロードサイトでログインしたあと、「cuDNN v5.1 Library for Linux」をダウンロードします。

ダウンロードしてきたファイルを解答して所定の場所に配置すれば完了です。
(パスは上記のCUDAのインストール時に設定しています)

tar -zxf cudnn-8.0-linux-x64-v5.1.tgz
sudo cp lib64/libcudnn* /usr/local/cuda-8.0/lib64/
sudo cp include/cudnn.h /usr/local/cuda-8.0/include