一部の新しいTensorFlowバージョンは、古いCUDAおよびcuDNNバージョンと互換性がないことに気付きました。互換性のあるバージョンの概要、または公式にテストされた組み合わせのリストさえ存在しますか?TensorFlowのドキュメントでは見つかりません。
一部の新しいTensorFlowバージョンは、古いCUDAおよびcuDNNバージョンと互換性がないことに気付きました。互換性のあるバージョンの概要、または公式にテストされた組み合わせのリストさえ存在しますか?TensorFlowのドキュメントでは見つかりません。
回答:
CUDAのバージョンを確認します。
cat /usr/local/cuda/version.txt
とcuDNNバージョン:
grep CUDNN_MAJOR -A 2 /usr/local/cuda/include/cudnn.h
そして、画像またはここで以下に示す組み合わせをインストールします。
次の画像とリンクは、Linux、macOS、WindowsでのCUDAとTensorFlowの公式にサポート/テスト済みの組み合わせの概要を示しています。
以下の特定の仕様は場合によっては広すぎる可能性があるため、機能する特定の構成を以下に示します。
tensorflow-gpu==1.12.0
cuda==9.0
cuDNN==7.1.4
(2020年5月20日更新の図)
(2018年5月31日更新の図)
2020年1月14日の時点で更新:更新情報については、Link for LinuxおよびLink for Windowsを参照してください。
tensorflowサイトで提供されている互換性テーブルには、 cudaおよびcuDNNの特定のマイナーバージョンは含まれていません。ただし、特定のバージョンが満たされていない場合、テンソルフローを使用しようとするとエラーが発生します。
以下の場合tensorflow-gpu==1.12.0
とcuda==9.0
、互換性のあるcuDNN
バージョンがある7.1.4
からダウンロードすることができ、ここで登録した後。
を使用してcudaバージョンを確認できます
nvcc --version
使用するcuDNNバージョン
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
tensorflow-gpuバージョンを使用
pip freeze | grep tensorflow-gpu
更新: tensorflow 2.0がリリースされて以来、互換性のあるcudaおよびcuDNNバージョンも共有します(Ubuntu 18.04用)。
tensorflow-gpu
= 2.0.0cuda
= 10.0cuDNN
= 7.6.0この構成をcuda 10.0に使用できます(10.1は3/18の時点では機能しません)。これは私のために実行されます:
バージョンtensorflow gpuをインストールします。
pip install tensorflow-gpu==1.4.0
誤ってCUDA 10.1とCUDNN 7.6をインストールしてしまいました。次の構成を使用できます(これは私にとってはうまくいきました-9/10現在)。:
しかし、テンソルフローが元々CUDA 10で機能するため、シンボリックリンクを作成する必要がありました。
sudo ln -s /opt/cuda/targets/x86_64-linux/lib/libcublas.so /opt/cuda/targets/x86_64-linux/lib/libcublas.so.10.0
sudo cp /usr/lib/x86_64-linux-gnu/libcublas.so.10 /usr/local/cuda-10.1/lib64/
sudo ln -s /usr/local/cuda-10.1/lib64/libcublas.so.10 /usr/local/cuda-10.1/lib64/libcublas.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcusolver.so.10 /usr/local/cuda/lib64/libcusolver.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcurand.so.10 /usr/local/cuda/lib64/libcurand.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcufft.so.10 /usr/local/cuda/lib64/libcufft.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcudart.so /usr/local/cuda/lib64/libcudart.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcusparse.so.10 /usr/local/cuda/lib64/libcusparse.so.10.0
そして、以下を〜/ .bashrcに追加します-
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cuda/targets/x86_64-linux/lib/
TF 2.0にアップグレードした後、同様の問題が発生しました。TFが報告していたCUDAのバージョンは、Ubuntu 18.04が私がインストールしたと思っていたものと一致しませんでした。私はCUDA 7.5.0を使用していたと言いましたが、適切なバージョンがインストールされているとaptは思っていました。
最終的に私がしなければならなかったのは、/usr/local
forを再帰的にgrepすることでしたがCUDNN_MAJOR
、/usr/local/cuda-10.0/targets/x86_64-linux/include/cudnn.h
実際にはバージョンをと指定していることがわかりました7.5.0
。
/usr/local/cuda-10.1
それを正しく理解し、を/usr/local/cuda
指摘した/usr/local/cuda-10.1
ので、TFがを見ていたのは、私にとっては謎のままでした(そして、今も残っています)/usr/local/cuda-10.0
。
とにかく、私はちょうど移動/usr/local/cuda-10.0
に/usr/local/old-cuda-10.0
TFがこれ以上それを見つけることができませんでしたし、すべてが、その後の魅力のように働いたので。
それはすべて非常にイライラさせられました、そして私はまだ私がちょうどランダムなハックをしたように感じています。しかし、それはうまくいった:)そしておそらくこれは同様の問題を持つ誰かを助けるでしょう。