Ubuntu16.04上でtensorflowをGTX 1070で動かす

#Ubuntu16.04上でtensorflowをGTX 1070で動かす
## Overview
Ubuntu16.04上でGTX1070/1080を用いてtensorflowで機械学習したい人のためのinstall手順

## PCスペック
今回installに使ったPCのスペックは
・CPU： i7-6700
・Memory: DDR4 16GB
・Motherboard: ASUS Z170
・GPU: GeForce GTX1070
PCのスペックや世代が低いとGPU DriverとCUDAがinstallできたとしても、tensorflowが動かない可能性がある。
ちなみに、i5-4440とDDR3 １６GBとGTX1070の組み合わせでは一部のプログラムではエラーが出て強制終了した。

##Install Nvidia Driver
```
$ 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
```
##Install CUDA8.0
 - GTX1070/1080はCUDA8.0しか対応していない
 - NvidiaのサイトからCUDA8.0をダウンロード
https://developer.nvidia.com/cuda-downloads
Installer Typeはrunfile[local]とする。

 - terminalで.bashrcを開く
```$ gedit ~/.bashrc```

 - ~/.bashrcに以下を書き加わる
 
```
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
```

 - CUIインターフェースに入る
  1. Ctrl+Alt+F1を押し
  2. login
  3. sudo init 3
  4. ダウンロードしたcudaパッケージをinstall
  
```
　　$ chmod +x cuda_8.0.44_linux.run
　　$ sudo sh ./cuda_8.0.44_linux.run
　　$ sudo reboot
```
sudo sh ./cuda_8.0.27_linux-run
はTabで補完してくれないため手で入力

- 再起動したら再びCUIインターフェースへ

    1. CTRL+ALT+F1
    2. Login
```
    $ sudo apt-get install nvidia-367 --reinstall
    $ sudo reboot
```
##Nvidia Driverの確認
```$ nvidia-smi```
GPUの認識に成功した場合はGPUの型番やGPU使用率などが表示される

以上は記事
[GTX-1080 など GeForce を Ubuntu 16.04 LTS で CUDA-8.0RC と共に使う](http://qiita.com/hidenorly/items/a3eb3a0375e6703d163b#install-cuda)
を参考にした

##Install Cudnn v5
 - Nvidiaのサイトからcudnn v5をダウンロード
 　https://developer.nvidia.com/cudnn
 - terminalで以下のコマンドを実行
 
```
$ sudo tar -xzvf 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*
```
##必要なパッケージをInstall
```
$ sudo apt-get install openjdk-8-jdk git python-dev python-numpy build-essential python-pip python-virtualenv swig python-wheel libcurl3-dev
```
##BazelをInstall
```
$ echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
$ curl https://bazel.io/bazel-release.pub.gpg | sudo apt-key add -
$ sudo apt-get update && sudo apt-get install bazel
$ sudo apt-get upgrade bazel
```
更新もあるかもしれないので、以下の公式サイト要参照
https://www.bazel.io/versions/master/docs/install.html
##Install Tensorflow
 - githubからTensorflowをclone
 
```
$ git clone https://github.com/tensorflow/tensorflow
```
 - Tensorflow Installationの設定

```
$ cd ~/tensorflow
$ ./configure
```
  注意：GTX1070の場合
　　　Cuda SDKを　8.0
　　　Cudnn versionを　５
　　　GPU Computing capability 6.1 (https://developer.nvidia.com/cuda-gpus)
　とする

 - Tensorflowを構築
 
```
$ 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
$ sudo pip install /tmp/tensorflow_pkg/tensorflow-0.11.0rc1-py2-none-any.whl
```
念のためTensorflowは以下のURLより最新版のinstalling from sourcesをチェックするとよい
https://www.tensorflow.org/versions/r0.11/get_started/os_setup.html#installing-from-sources

以上は記事
[Install GPU TensorFlow From Sources w/ Ubuntu 16.04 and Cuda 8.0](https://alliseesolutions.wordpress.com/2016/09/08/install-gpu-tensorflow-from-sources-w-ubuntu-16-04-and-cuda-8-0-rc/)
を参考した