Ubuntu 16.04へのCUDAインストール方法

  • 70
    いいね
  • 2
    コメント

Ubuntu 16.04 に NVIDIA の CUDA のインストール方法です。私は主に Amazon EC2 の GPU インスタンスを使っているので、それ前提で書きます。Amazon EC2 の GPU インスタンス、g2.2xlarge や p2.xlarge で使えます。完全仮想化の hvm の方を使ってます。ストレージは20GB程度必要です。

前準備

sudo apt update
sudo apt upgrade

CUDA 8.0 のインストール

CUDA 7.5 はなかったのですが、CUDA 8.0 から Ubuntu 16.04 向けが https://developer.nvidia.com/cuda-downloads で配布されるようになりました。以下は、Installer Type で deb(network) を選択する場合の流れです。

wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
cat 7fa2af80.pub | sudo apt-key add -

wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
sudo apt update

sudo apt install linux-generic
sudo apt install cuda nvidia-375
sudo reboot

sudo apt remove linux-virtual
sudo apt autoremove

rm 7fa2af80.pub cuda-repo-ubuntu1604_8.0.61-1_amd64.deb

その後、~/.bashrc の末尾にこれを追加する必要があります。

export PATH="/usr/local/cuda-8.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH"

そして一度ログオフして再度ログインしてください。

nvidia-smi で動作確認です。cuBLAS など cuDNN 以外は一通りついてきます。

linux-generic は、Amazon EC2 などのクラウドの場合に必要です。物理マシンにインストールした人には最初から linux-generic が入っているはずです。
Ubuntu には

  • linux-generic - 一般用
  • linux-virtual - 仮想マシン用

の2種類があるのですが、linux-generic の方を使わないと、NVIDIA の GPU が動作しません。Ubuntu 16.04 では linux-image-extra が入ってくるかなどの差のようです。

nvidia-375 のバグ対策

NVIDIA のデバイスドライバ nvidia-375 に限り、例えば sudo ldconfig とかやると、/sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 is not a symbolic link とエラーが出ます。以下のようにシンボリックリンクを張り直すと解決します。情報は https://stackoverflow.com/questions/43016255/libegl-so-1-is-not-a-symbolic-link より。nvidia-378 では解決済みだそうですが、Ubuntu 16.04 には、まだ来ていません。

sudo mv /usr/lib/nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.orig
sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.orig
sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.66 /usr/lib/nvidia-375/libEGL.so.1
sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.66 /usr/lib32/nvidia-375/libEGL.so.1

CUDA 7.5 のインストール

CUDA 8.0 がリリースされましたが 7.5 の方もここに残しておきます。7.5 は Ubuntu 16.04 のパッケージからインストールする必要があります。

sudo apt install linux-generic
sudo apt install nvidia-cuda-toolkit nvidia-375
sudo reboot

sudo apt remove linux-virtual
sudo apt autoremove

ただし、この方法は Ubuntu 16.04 である限り、ずっと CUDA 7.5 です。

cuDNN 6.0 のインストール

NVIDIA のサイトからダウンロードします。https://developer.nvidia.com/rdp/cudnn-download の Download cuDNN v6.0 (April 27, 2017), for CUDA 8.0 の cuDNN v6.0 Library for Linux をダウンロードします。

tar xzf cudnn-8.0-linux-x64-v6.0.tgz
sudo cp -a cuda/lib64/* /usr/local/lib/
sudo cp -a cuda/include/* /usr/local/include/
sudo ldconfig

rm -R -f cuda cudnn-8.0-linux-x64-v6.0.tgz

シンボリックリンクがシンボリックリンクとしてコピーされるように cp には -a をつける必要があります。

cuDNN 4, 5, 5.1, 6.0 あたりは全てダウンロードするファイル名が違うだけでインストール方法は同じです。

LightDM を止める

上記のやり方で nvidia-cuda-toolkit をインストールすると、ディスプレイマネージャーの LightDM が動いてしまいます。普通のパソコンでは動くべきですが、クラウドで動かしている場合は無意味です。しかも、Ubuntu 16.04 では、gst-plugin-scanner が1コア分 CPU 使用率 100% になるというバグが付いてきます。

止めるには、/etc/default/grub を編集して、12行目をこれにします。

GRUB_CMDLINE_LINUX="systemd.unit=multi-user.target"

保存して、

sudo update-grub
sudo reboot

後始末

sudo apt clean