たるこすの日記

たるこすの日記

リアルからバーチャルへ、バーチャルからリアルへ

GTX1070入りPCのUbuntu16.04にCUDA,TensorFlowをインストールする

はじめに

この記事について

GTX1070入りのPCにUbuntu16.04 をインストールするところは、前回の記事で紹介しました。
前回の記事: GTX1070入りのPCにUbuntu16.04を入れ、windows10とデュアルブートする際にはまった箇所について - たるこすの日記

今回の記事はCUDAとTensorFlowのインストールについてです。

CUDA Toolkit 8 のインストール

参考: GTX-1080 など GeForce を Ubuntu 16.04 LTS で CUDA-8.0RC と共に使う - Qiita
上の記事に従ってCUDA Toolkit 8 のインストールを行ったのですが、再起動画面が真っ黒になってしまいました。
記事では以下のようにドライバを再インストールすると治ると書かれていましたがうまくいかず...

$ sudo apt-get install nvidia-367 --reinstall
$ sudo reboot

そこで、以下の記事を参考に修正を行いました。
参考: UbuntuでNVIDIAのディスプレイドライバが動作しない場合のチェック項目 - Qiita

特にはまったのが、以下の部分。

もしうまく行っていない場合は、/etc/ld.so.conf.d/以下のnvidia_settings.conf、あるいは類似のファイル名の設定ファイルをチェックする。おそらくシンボリックリンクになっているが、これが(途中何段階かシンボリックリンクを経由していても良い)最終的に正しく /usr/lib/nvidia-ドライババージョン/ld.so.conf を指し示すように適宜リンクを修正し、ldconfigを一度実行する。先のldconfig -pの出力が正常になればよい。これで再起動すればよい。

別の記事で、設定を変更するには以下のコマンドを実行し mesaではなくnvidia のコンフィグファイルを選択するとよいと書かれていました。

$ sudo update-alternatives --config x86_64-linux-gnu_gl_conf
$ sudo update-alternatives --config i386-linux-gnu_gl_conf

これを実行し、再起動したが状況は変わらず...
しばらくして、再起動後にコンフィグファイルの変更がもとに戻っていることに気づきました。
いろいろ試した結果、以下の記事を参考に、mesaの選択肢を削除することで解決しました。
参考: drivers - Can't switch anymore from Intel to NVIDIA GPU - Ask Ubuntu

$ sudo update-alternatives --remove x86_64-linux-gul_gl_conf /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf
$ sudo update-alternatives --remove i386-linux-gul_gl_conf /usr/lib/i386-linux-gnu/mesa/ld.so.conf

TensorFlowのインストール

以下のページに従ってインストールを進めます。
Download and Setup
GTX1070/1080 では、CUDA Toolkit 8 を使う必要があるのですが、TensorFlow のバイナリインストールはCUDA Toolkit 7.5 のみの対応のようです。
そのため、ソースからのインストールを行いました。
Download and Setup

基本的には手順に従えばうまくいくと思いますが、bazel インストールの際にJDK 9が入ってしまったので、 アンインストールしてJDK 8 を入れなおす必要がありました。
bazel インストールの前に、以下のコマンドで JDK 8 を入れておくのがよいと思います。

$ sudo apt-get install openjdk-8-jdk

他は特に問題なくインストールすることができました。