Install CUDA8.0 in Ubuntu16.04-amd64 LTS

Web上にはなぜか、曖昧か不正確な情報ばかり載っています。なので本記事も、不正確な情報をひとつ増やしてもgoogle検索のノイズは大して増えないよなと思って雑に書いています。

なお手順は実機へのインストールです。



ところでCUDA7.5でcuDNNは別途インストールが必要って話だけれどCUDA8.0ではどうなの?
(まだ必要になってないので調べてない)

多くの場合には、本ブログ記事のように、記憶からいい加減に再現しているためだと思います。
とはいえ、他の理由も考えられます。
- 環境ごとにインストール済みアプリケーションがかなり違う。NVIDIAのLinux版プロプライエタリドライバとか、最近のデスクトップでは不要だし入れないほうが運用も楽だと思うのだけれど、何故必要だったのか知らないけれど既に入れてあったり。gcc入ってない環境とか何やってたんだ感があるけれど、きっとRubyOnRailsアプリを書いていたのだろう。
-  逆に不要なものを入れるように手順に指示がある場合も有る。mesaとかxorg-edgeとか、linux-kernel-gnericとか、その他グラフィックライブラリらしきものとか。私の手順では不要だったのだが、もう入っていたというだけ?
- 今はインストール先が実機以外にいろいろある。 それらによって手順が違う。
- 昔の知識のまんま。上記ライブラリは既にいらないし、今のCUDA8.0は、GDI/XWindowを落とさなくても普通にインストールできる。(たぶんパッケージ版の手順では依存関係が自動で解決されている)
- っていうかインストールの検証してないけれど、あなた達らほんとにそれCUDA導入に成功してるの? (わたしは面倒なので雑にしかしてない)
多くの人たちでそれぞれ手順が違うのは、多分そんな理由。
べつ「CUDAもインストールできないお前らにはまだTenserFlowは早すぎる」とか言って初心者を妨害しているわけではないと思う。

CUDAのインストール方法で、一番正確な情報は、(当然もちろんこのブログ記事ではなく)NVIDIAの公式なCUDAインストールガイドです。
CUDA公式のインストーラーのダウンロードページからリンクもあるので手に入れましょう。
https://developer.nvidia.com/cuda-downloads
CUDA_Installation_Guide_Linux.pdf です。
Qiitaの日本語記事とかはいい加減なことしか書いてないように見えるし統一見解が無いので参考にとどめて、書いてある通りに作業するのはやめましょう。
これももう数年前の記憶で今はどうかわからなくて申し訳ないですが、LinuxのNVIDIAドライバはとても繊細な子です。CUDAインストーラはそれに輪をかけて繊細な子です。インストールの順番を間違えると、OSのGUIが上がってこなくなったり、CUDAが動かなかったりして、OSから再インストールする羽目になります。
公式ドキュメントによると、Ubuntu向けのインストール方法が2つあります(.debと.run)。これもインストール方法ブログ記事乱立&混乱の理由かと思いますが、まあNVIDIAの気持ちを察しましょう。
私はdebパッケージ版をインストールしました。インストール手順は上記の公式ドキュメントの通りにしました。
動作確認も公式ドキュメントの通りにしましょう。具体的には付属サンプルをmakeしてdeviceQuery呼び出しです。
なお、ここだけ公式ドキュメントに足りていない箇所があって、幾つかの必要パッケージが足りないのと、LD_LIBRARY_DIR等の環境変数を追加する作業が記載されていません。


環境変数は、公式ドキュメントに記載されている下記のほかに、
```
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 LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
```
以下を足すと私の環境で上手く行きました。
```
export LD_LIBRARY_PATH=/usr/lib/nvidia-375:${LD_LIBRARY_PATH}
export LIBRARY_PATH=/usr/lib/nvidia-375:${LIBRARY_PATH}

``` 
この設定、Web上では /etc/environment に入れろと書いてあります。開発環境の全ユーザに適用するならそれで正しいです。たぶんこちらのほうが良いのでしょう。
私はユーザごとに設定すべきかと考えて、 ~/.bashrc に設定しています。

```
/usr/bin/ld: cannot find -lnvcuvid
```

-lnvcuvid の不足がこれで解決できます。

あと、glutあたりが足りないと言われます。freeglut3-dev は必要です。
これは apt-get install freeglut3-dev で解決します。

mesaも必要らしいです。
sudo apt-get install mesa-common-dev

以上です。



インストール時のbashのhistoryを公開しました。
History of Install CUDA8.0 in Ubuntu16.04-amd64 LTS


このブログの人気の投稿

GIMP2.8でイラストにペン入れを行う

squid3プロキシサーバの設定(Ubuntu13.10)

ubuntu13.04で無線LANが繋がらない場合の対処