GTX 1070を使用してtensorflowを動かす
GTX1070はまだ安定版cudaには対応されていないため、cuda8を使用した場合はtensorflowについてパッケージでのインストールができない。ビルドしてインストールする必要がある。その手順が大変ややこしいためメモしておく。
早くパッケージでインストールできるようになったらいいな。
ドライバのインストール
現状
下記のようにカードの種類も把握されていない。
lspci | grep -i nvidia
結果
01:00.0 VGA compatible controller: NVIDIA Corporation Device 1b81 (rev a1)
01:00.1 Audio device: NVIDIA Corporation Device 10f0 (rev a1)
把握させる
sudo update-pciids
lspci | grep -i nvidia
結果
01:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GP104 High Definition Audio Controller (rev a1)
OSにデフォルトで入っているドライバを読み込ませないようにする
下記コマンドで調査した所nouveauが有効になっている。
lsmod | grep nouveau
下記のようにファイル類を編集し読み込まないようにする。
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
options nouveau modeset=0
編集後、下記コマンド
sudo update-initramfs -u
reboot
ドライバのインストール
sudo service lightdm stop
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
sudo reboot
sudo nvidia-smi
cudaのインストール
deb形式でインストールする
https://developer.nvidia.com/cuda-release-candidate-download
からダウンロード
sudo dpkg -i cuda-repo-ubuntu1604-8-0-rc_8.0.27-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda
sudo dpkg -i cuda-misc-headers-8-0_8.0.27.1-1_amd64.deb
cd /usr/local/src/
sudo tar xvfz cudnn-8.0-linux-x64-v5.1.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*
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
ドライバ再インストール
cudaインストール時に最新ドライバが消されて古いのが入るのでもう一度ドライバインストール
reboot
sudo service lightdm stop
sudo apt-get install libcuda1-367 nvidia-367 nvidia-367-dev nvidia-opencl-icd-367 --reinstall
reboot
nvidaやcudaコマンドの確認
sudo nvidia-smi
nvcc -V
サンプルの実行
cd /usr/local/cuda-8.0/samples
sudo make
上記ではコンパイルエラーになると思うので
http://stackoverflow.com/questions/30675132/cuda-7-0-error-while-compiling-samples/31202170を参考にコードを修正
「
If you notice, there is -L/usr/lib/"nvidia-346". In my case, I have installed nvidia-349. What worked for me is to edit NVIDIA_CUDA-7.0_Samples/3_Imaging/cudaDecodeGL/findgllib.mk and change UBUNTU_PKG_NAME = "nvidia-346" to nvidia-349.
」
上記の通り修正してビルドすると成功する。
cd /usr/local/cuda-8.0/samples/bin/x86_64/linux/release
sudo ./deviceQuery
sudo ./bandwidthTest
tensorflowのインストール
必要ソフト類のインストール
pipインストール
sudo apt-get install python-pip python-dev
sudo pip install --upgrade pip
jdkインストール
sudo apt-get install openjdk-8-jdk
bazelのインストール
sudo apt-get install pkg-config zip g++ zlib1g-dev unzip
sudo wget https://github.com/bazelbuild/bazel/releases/download/0.3.1/bazel-0.3.1-installer-linux-x86_64.sh
sudo chmod +x bazel-0.3.1-installer-linux-x86_64.sh
sudo ./bazel-0.3.1-installer-linux-x86_64.sh --user
.bashrcに下記記載
export PATH="$PATH:$HOME/bin"
tensorflowのインストール
sudo apt-get install python-numpy swig python-dev python-wheel libcurl3-dev
tensorflowのビルド
mkdir git
cd git/
git clone https://github.com/tensorflow/tensorflow
cd tensorflow/
./configure
そのままではビルドエラーになるので少し修正
cp third_party/gpus/crosstool/CROSSTOOL /tmp/
vi third_party/gpus/crosstool/CROSSTOOL
@@ -52,6 +52,8 @@ toolchain {
cxx_flag: "-std=c++11"
linker_flag: "-lstdc++"
linker_flag: "-B/usr/bin/"
+ linker_flag: "-lrt"
+ linker_flag: "-lm"
ビルド+インストール
bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer
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.10.0rc0-py2-none-any.whl
後はサンプルソースなどを流してGPUが使用されていたら成功!!!
おつかれさまでした。