Edited at

GTX-1080でTensorFlow

More than 1 year has passed since last update.

GTX-1080を入手したものの、pip でインストールしたTensorFlowでは使えないとのこと

四苦八苦したのでメモ

Pythonの経験がまだ半年程度なのでインストール周りで無駄が多そう...


環境

Ubuntu 16.04

Python 3.5.2

Nvidiaのドライバが入ってないからかDVDブートだと画面が表示されなかったので、GTX-1080を取り外してインストール

Ubuntuのインストールが終わったらGTX-1080を取り付けて起動しSSHで接続した


Nvidiaドライバーのインストール

GTX-1080 など GeForce を Ubuntu 16.04 LTS で CUDA-8.0RC と共に使う

をがっつり参考にさせてもらってインストール

とりあえず、

まずは Ubuntu 16.04LTS で nVIDIA GeForce を使う一般設定から

だけを行った

これで、ようやくGTX-1080出力の画面が映るようになった


CUDAのインストール

https://developer.nvidia.com/cuda-toolkit

このサイトの CUDA Toolkit 8 RC Now Available

をクリック

Linux -> x86_64 -> Ubuntu -> 16.04 -> deb(local)

を選んでダウンロード

表示されたコマンド通りに実行してインストール


cuDNNのインストール

https://developer.nvidia.com/cudnn

ここのDownloadをクリック

cuDNN Download Survey はスルーしてページ下部の Proceed To Downloads をクリック

I Agree To.. にチェックして

Download cuDNN v5.1 (August 10, 2016), for CUDA 8.0 の中の

cuDNN v5.1 Library for Linux をクリックしてダウンロードする

TensorFlowのチュートリアルを参考にしつつ

$ tar xvzf cudnn-8.0-linux-x64-v5.0-ga.tgz

$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*


CUDAのパス設定

$ echo 'export CUDA_ROOT=/usr/local/cuda' >> ~/.bash_profile

$ echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bash_profile
$ echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH' >> ~/.bash_profile
$ echo 'export CPATH=/usr/local/cuda/include:$CPATH' >> ~/.bash_profile

*追記

akinorihommaさんにご指摘いただきました。

上記コードがecho ... > ... で上書きになってました。

修正依頼を反映しております。申し訳ございませんでした。


Nvidiaドライバーの再インストール

CUDAをインストールしたらGUIでログインできなくなった(どうやらドライバのせいらしい)ので再インストールする

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

$ sudo reboot


Bazelのインストール

TensorFlowをビルドするためにBazelをインストールする

http://www.bazel.io/docs/install.html

このマニュアル通りに行う


Pythonのインストール

Pythonはpyenvを使ってインストールした

pyenvでのインストールは文献がたくさんあるので省略


TensorFlowのビルド

まずはリポジトリをクローンしてくる

$ git clone https://github.com/tensorflow/tensorflow ~/tensorflow

マニュアル通りに依存関係をインストール

pyenvの場合はどうなるのだろうと思いながら...

$ sudo apt-get install python3-numpy swig python3-dev python3-wheel

特に記述はなかったように思うけど、gccのバージョンが5.3以上だとビルドエラーを起こしたので4.9をインストールしておく

$ sudo apt-get install gcc-4.9

$ sudo apt-get install g++-4.9
$ sudo apt-get install libstdc++6-4.9-dbg

クローンしてきたディレクトリに移動

$ cd ~/tensorflow

pyenvのバージョン指定

$ pyenv local YOUR_VERSION

*追記

YusukeSuzuki@githubさんのコメントより、pyenvの設定を行わないとビルド結果が正しくないようなので、

pyenvで用いるバージョンを設定してください。

ご指摘ありがとうございました。

ビルドの設定を行う

$ ./configure

Google Cloud Platform supportGPU supporty

gccはさっきインストールした4.9を指定する/usr/bin/gcc-4.9

それ以外はEnter連打。

設定ができたらさっそくビルド

$ bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

これで/tmp/tensorflow_pkg.whlファイルが生成されてた

ということでpip install

$ pip install /tmp/tensorflow_pkg/tensorflow-0.9.0-py3-none-any.whl

これでmnistのサンプルも実行できた