久しぶりにtensorflow-gpuを使おうとしたらエラーでできなかった時の対処メモ
参考
tensorflow-gpuとCUDAのバージョン
TensorFlow > cuDNN v4.0のアンインストール / cuDNN v5.1のインストール
cuDNNのバージョン確認
[NV] How to check CUDA and cuDNN version
エラー
↓実行したらこんな感じのエラーが出てきた
tensorflow/stream_executor/cuda/cuda_dnn.cc:222] Check failed: s.ok()
対処
tensorflow-gpu、cuda、cudnnが対応したバージョンではなかったようです
対応させるために対応するバージョンをこちらで確認し, 各バージョンを直します
各バージョンの確認
・tensorflow-gpuのバージョン確認コマンド
pip list
Package Version
---------------------- ---------
bleach 1.5.0
enum34 1.1.6
h5py 2.8.0
...
tensorflow-gpu 1.0.0
・cudaのバージョン確認コマンド
nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Tue_Jan_10_13:22:03_CST_2017
Cuda compilation tools, release 8.0, V8.0.61
・cudnnのバージョン確認コマンド
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 6
#define CUDNN_MINOR 0
#define CUDNN_PATCHLEVEL 21
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
#include "driver_types.h"
以上のコマンドから今
tensorflow-gpu == 1.0.0
cuda == 8.0
cudnn == 6
という状態であることがわかります
今回はtensorflowのバージョンを変えたくない場合だったので
バージョン対応表より
cudnnのバージョンを6から5.1に変えます
cudnnのバージョン変更
まず、欲しいバージョンのcudnnをダウンロードしておく
ダウンロードはこちらから
※ダウンロードにはNVIDIAのアカウントが必要になります
次にすでに入っているcudnnを削除する
sudo rm /usr/local/cuda/include/cudnn.h
ls /usr/local/cuda/lib64/libcudnn*
(すでに入っているバージョンのlibとか出てくる)
sudo rm /usr/local/cuda/lib64/libcudnn*
削除完了!
最後に導入したいバージョンのcudnnをインストールする
最初にダウンロードしておいたcudnnがあるディレクトリに移動
cd ~/ダウンロード
インストール!
tar xvzf cudnn-8.0-linux-x64-v5.1.tgz
cuda/include/cudnn.h
cuda/lib64/libcudnn.so
cuda/lib64/libcudnn.so.5
cuda/lib64/libcudnn.so.5.1.3
cuda/lib64/libcudnn_static.a
なんかよくわかんないけどやるらしいやつ
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/lib64/libcudnn*
確認
ls -l /usr/local/cuda/lib64/libcudnn*
以上!!!