UbuntuでGTX1080なグラボを使おうとして苦労した話

Posted by jolantern on Thursday, August 18, 2016

GTX1080なグラボを買った

GTX1080なグラボを買ったんですね。80000円ぐらいで。たけー。 で、せっかくCUDAを使えるグラボを買ったんだしTensorflowで遊びたいなと思ったわけです。あれは一応UbuntuとOSXでの動作を保証しているものです。 なのでUbuntuを入れましょう。という話。

そして今見ると値段がずいぶん下がっている。なんということだ。

ZOTAC Geforce GTX 1080 AMP EDITION グラフィックスボード VD6068 ZTGTX1080-8GD5XAMP01

posted with カエレバ

ZOTAC 2016-06-17

Amazon

楽天市場

いきなり画面真っ暗なんだが

ドライバがござらぬ。なのでGTX1080から画面出力すると真っ暗です。 これがすでにめんどくさくて、僕の場合はオンボードのHDMIに差し替えたら写ったんですけどそうでない場合グラボを引っこ抜く必要があります。 別にSSHで繋がるようにインストールしてくれるディスク的なものを使えばいいとかそういうお話もありそうですが、僕の場合Windowsとデュアルブートにするので普通にインストールして設定して…とかやりたかった。

グラボのドライバをインストールする

$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt-get update
$ sudo apt-get install nvidia-367
$ sudo apt-get install mesa-common-dev
$ sudo apt-get install freeglut3-dev

これでいいんですが、どうもUbuntuの16.04はネット接続が不安定になるみたいな症状が出ることがあるらしく、一番最初のリポジトリを追加するところで失敗したらそれを疑いましょう。 どうもIPv6の設定が有効になっているとそうなるらしく、 システム→設定→インターネットとネットワーク→ネットワーク接続で接続名を選択してIPv6設定タブから無視にしてあげるとよい、らしい。

CUDAをインストールする

実はここからが一番の鬼門で、すごくめんどくさいことが起きた。

NVIDIAからCUDAをダウンロード

ユーザ登録が必要ですね、CUDA 8.0をダウンロードしましょう。 cuda_8.0.27_linux-runっていうファイルがダウンロードされるはずです。1.4GBとかの。

$ vim ~/.bashrc






<code class="shel">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 CUDA_HOME=/usr/local/cuda

こんな感じで環境変数を設定してあげてからインストール作業。 この時にダウンロードしたファイルをホームディレクトリ(~/)にコピーしておくといいでしょう。Ubuntu、日本語でダウンロードというディレクトリを作ってそこにデフォだとダウンロードされて、此処から先の作業でめんどくさいんで。

CTRL+ALT+F1とかでCUIに切り替えてから作業した方がいいらしい。 ログインしたら

$ sudo init 3
$ cd
$ chmod +x cuda_8.0.27_linux.run
$ sudo sh ./cuda_8.0.27_linux.run
$ reboot

この再起動後にまともに動いてくれない。僕の場合試行錯誤の中2パターンあって

  1. 大量のログが流れてくる画面のまま。Ctrl+Alt+F1でテキストモードにはなれる
  2. 真っ暗。なにもできねえ。テキストにもなれねえ地獄

どちらにせよ、レスキューモードなりなんなりでコンソールに入れれば大丈夫。

$ resolvconf --enable-updates
$ sudo apt-get install nvidia-367 --reinstall

私の場合はこれで治った。カーネルモジュールとNvidiaのドライバのバージョンが違う?みたいな感じのエラーが出ていた。

あとは再起動したら普通にログインできて、

$ nvidia-smi

とかうって、GTX1080が認識されていればいい。 さーてTensorflowのインストールだ。これはまた今度。