CUDAとインストールには罠が多い。OS, グラフィックボード, CUDA, 深層学習フレームワークのそれぞれのバージョンの違いでうまくいかないことが多すぎる。

なので自分の失敗例をまとめておく。

Ubuntu16.04の外部カーネルの罠

今までUbuntu14.04を使っていたが、新しいLTSである16.04が出たので、こちらでやってみようと試した。

まずは基本となるNVidiaのドライバーを入れねばならない。

GPUによって入れるべきドライバは異なるので、これを参考にして入れる。

今回の場合、GTX1080のUbuntuなので、nvidia-367をインストールした。

sudo apt-get install nvidia-367

しかし、再起動すると、ログイン画面から進まなくなる。

どういう状況かというと、正しいパスワードを入れても、すぐに画面が暗くなり、再びログイン画面に戻される。ログインループである。 sshではログインできる。

これは、さっき入れたグラフィックドライバが正しく動作していないからだ。

16.04からubuntuのセキュアブート仕様が厳格になって、セキュアブートが有効の時は署名のないカーネルモジュールを読み込まなくなったみたいですね。
nvidiaのドライバーは署名のないカーネルモジュールとしてインストールされるので、セキュアブートを無効にするのが最も簡単な対処のようです。

https://forums.ubuntulinux.jp/viewtopic.php?id=18599

これに尽きる。セキュアブートをdisableにすると、きちんとログインできた。

Ubuntu 16.04にはCUDA7.5がインストールができない?

CUDA7.5の公式ページには、Ubuntu14.04用と15.04用しかなく、16.04の選択肢がない。

https://developer.nvidia.com/cuda-75-downloads-archive

だが、一応2通りのインストール方法がある。

aptによるインストール

一つは、aptを使うやり方。

sudo apt install nvidia-cuda-toolkit

登録されているパッケージが7.5なので、これを叩くとCUDA7.5がインストールできる。

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

しかしこの方法では、ChainerやTensorFlowでCUDAを利用できる方法が見つからず、どうしようもなかった。ネットを調べたが、このインストール方法は推奨されていないそう。

なのでもう一つの方法をお勧めする。

14.04用runファイルでインストール

どうやら14.04用のものでインストールできてしまうらしい。ソースは思い出せないが、ubuntuの人が、16.04と14.04は似てるから14.04用でもインストールできると書いてあった。

公式から14.04のrunファイルをダウンロード、実行権限与えて実行してあげるとうまくいく。

PATHをちゃんと通してあげると、chainer等でも使えるようになる。

参考
Install Ubuntu 16.04 or 14.04 and CUDA 8 and 7.5 for NVIDIA Pascal GPU

GTX 1080にはCUDA8.0以上

CUDA7.5をインストールしてみてChainerのMNISTを実行させても、エラーが出てうまくいかなかった。

エラーの内容及び調べたサイトは忘れてしまったが、内容としては、GTX1080ではCUDA7.5を使えないという内容だった。CUDA8.0以上が必要らしい。

なので、CUDA7.5でしか動かないフレームワーク依存のライブラリは使えないので注意。