Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

なお記事の都合上、最新の CUDA および cuDNN をインストールしていますが、TensorFlow などの各種ライブラリを動作させるためには、タイミングによっては少し古いのをインストールしないと対応していない場合が多いです。

Ubuntu 18.04 へのインストール方法は https://qiita.com/yukoba/items/4733e8602fa4acabcc35 をご覧ください。

前準備

sudo apt update
sudo apt upgrade

CUDA 9 のインストール

CUDA 7.5 はなかったのですが、CUDA 8.0 ~ 9.2 は Ubuntu 16.04 向けが https://developer.nvidia.com/cuda-downloads で配布されるようになりました。以下は、Installer Type で deb(network) を選択する場合の流れです。ここで apt install で cuda だと最新版がインストールされ、cuda-9-0 とか cuda-9-2 のようにバージョン指定も出来ます。CUDA 9.2 の deb ですが 9.0 や 9.1 もインストールできます。

sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub

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

sudo apt install cuda cuda-drivers
sudo reboot

rm cuda-repo-ubuntu1604_9.2.88-1_amd64.deb

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

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

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

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

Amazon EC2 での Linux カーネル

2016年の時点では Amazon EC2 の Ubuntu16.04 の AMI には linux-virtual というカーネルが入っていて、これだと GPU が動作しなく、カーネルを linux-generic に切り替える必要があったのですが、2017年3月29日より AWS 専用カーネルが導入され https://insights.ubuntu.com/2017/04/05/ubuntu-on-aws-gets-serious-performance-boost-with-aws-tuned-kernel/ これが AWS の GPU に対応しています。なので、現在は、カーネルは AWS 専用 Linux カーネルをそのまま使うのが最善になりました。

古いイメージを使っている人は、この方法で linux-generic から linux-aws に切り替えられます。

sudo apt install linux-aws
sudo reboot
sudo apt purge linux-generic
sudo apt autoremove

デバイスドライバ

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 になります。

cuDNN 7.1 のインストール

cuDNN は NVIDIA のサイト https://developer.nvidia.com/rdp/cudnn-download からダウンロードできるのですが、ここでは NVIDIA の再配布用のアドレスからダウンロードします。もし、上記の NVIDIA のサイトからダウンロードする場合は、Download cuDNN v7.1.4 (May 16, 2018), for CUDA 9.2 の cuDNN v7.1.4 Library for Linux です。

wget http://developer.download.nvidia.com/compute/redist/cudnn/v7.1.4/cudnn-9.2-linux-x64-v7.1.tgz
tar xzf cudnn-9.2-linux-x64-v7.1.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.2-linux-x64-v7.1.tgz

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

cuDNN 4 ~ 7.1 あたりは全てダウンロードするファイル名が違うだけでインストール方法は同じです。例えば CUDA 9.0 の cuDNN 7.0.5 は http://developer.download.nvidia.com/compute/redist/cudnn/v7.0.5/cudnn-9.0-linux-x64-v7.tgz です。

CUDA 7.5 のインストール

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

sudo apt install nvidia-cuda-toolkit nvidia-384
sudo reboot

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

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 autoremove
sudo apt clean
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした