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

  • 84
    いいね
  • 1
    コメント

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

前準備

sudo apt update
sudo apt upgrade

CUDA 9.0 のインストール

CUDA 7.5 はなかったのですが、CUDA 8.0 と 9.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_9.0.176-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
sudo apt update

sudo apt install linux-generic
sudo apt install cuda cuda-drivers
sudo reboot

sudo apt remove linux-virtual
sudo apt autoremove

rm 7fa2af80.pub cuda-repo-ubuntu1604_9.0.176-1_amd64.deb

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

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

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

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

Linuxカーネル

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

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

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

デバイスドライバ

2017年10月9日現在、元々 Ubuntu 16.04 では nvidia-375 でデバイスドライバをインストールするのですが、NVIDIA 側が配布している cuda-drivers でインストールするとより新しいデバイスドライバ nvidia-384 がインストールされるのでこちらの方が良いと思います。上記の apt install では cuda-drivers を使っています。なお、nvidia-375 には https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-375/+bug/1662860 で報告されているシンボリックリンクに関するバグがあります。

CUDA 8.0 の場合

CUDA 8.0 の場合ダウンロードアドレスが http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb になり、上の 9.0 を 8.0 に置き換えてください。

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 7.0 のインストール

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

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

rm -R -f cuda cudnn-9.0-linux-x64-v7.tgz

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

cuDNN 4, 5, 5.1, 6.0, 7.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