2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TensorFlowのCUDA周りのUnknownError(convolution algorithm)を解決した話

Last updated at Posted at 2020-04-17

Ubuntu 18.04 のCUDA周り(CuDnn)で苦戦したので,簡単にまとめておきます.比較的,初学者向けです.

エラー文は以下

error_log_1
UnknownError: Failed to get convolution algorithm. 
This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.[Op:Conv2D]

先に結論

CuDnnを再インストールしただけ.

cudnn7.4.1.5-1+cuda10.0cudnn7.6.5.32-1+cuda10.0

以前の環境

  • Ubuntu 18.04
  • NVIDIA GeForce GTX 1080
  • nvidia-driver 440
  • CUDA 10.0
  • cudnn 7.4
  • Tensorflow-GPU = 2.0.0

解決後の環境

  • Ubuntu 18.04
  • NVIDIA GeForce GTX 1080
  • nvidia-driver 440
  • CUDA 10.0
  • cudnn 7.6
  • Tensorflow-GPU = 2.0.0

流れ

  1. TensorFlow GPUサポート テスト済みビルド設定を参考に環境構築し,問題なく動作していた
  2. 2020/04/10頃,同じPCにUbuntuを再インストールし,同じように環境構築
  3. keras.layers.Conv2Dを使用したモデルを動かそうとするとエラー(上記のエラー文)
  4. GithubやStackOverflowにて,"CuDnnのバージョンを合わせろ"という議論を見つけたので,それに従う

やったこと

1. CuDnn7.4のバージョンアップ

これまでの経験から,TensorFlowのCUDA周りは,documentに従うべきと知っていたので,cuda 10.0 cudnn 7.4の関係は崩さない(ここが大きな間違いでした;;)ように,

cudnn7.4.1.5-1+cuda10.0cudnn7.4.2.24-1+cuda10.0

にしてみる.
nvidiaのリポジトリからcudnn7.4.2.24-1+cuda10.0を落としてきて,とりあえずぶちこむ.

install_1
xxx@xxx:~$ sudo apt install libcudnn7-dev=7.4.2.24-1+cuda10.0 libcudnn7=7.4.2.24-1+cuda10.0
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:
以下のパッケージには満たせない依存関係があります:
libcudnn7-dev : 依存: libcudnn7 (= 7.4.2.24-1+cuda10.0) しかし、7.6.5.32-1+cuda10.2 はインストールされようとしています
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

当然のエラー.以前のが残っている.まずは,確認.

package_check
dpkg -l | grep cuda

ii  cuda-10-0                                  10.0.130-1                                       amd64        CUDA 10.0 meta-package
ii  cuda-command-line-tools-10-0               10.0.130-1                                       amd64        CUDA command-line tools
ii  cuda-compiler-10-0                         10.0.130-1                                       amd64        CUDA compiler
ii  cuda-cublas-10-0                           10.0.130-1                                       amd64        CUBLAS native runtime libraries
ii  cuda-cublas-dev-10-0                       10.0.130-1                                       amd64        CUBLAS native dev links, headers
ii  cuda-cudart-10-0                           10.0.130-1                                       amd64        CUDA Runtime native Libraries
ii  cuda-cudart-dev-10-0                       10.0.130-1                                       amd64        CUDA Runtime native dev links, headers
ii  cuda-cufft-10-0                            10.0.130-1                                       amd64        CUFFT native runtime libraries
ii  cuda-cufft-dev-10-0                        10.0.130-1                                       amd64        CUFFT native dev links, headers
ii  cuda-cuobjdump-10-0                        10.0.130-1                                       amd64        CUDA cuobjdump
ii  cuda-cupti-10-0                            10.0.130-1                                       amd64        CUDA profiling tools interface.
ii  cuda-curand-10-0                           10.0.130-1                                       amd64        CURAND native runtime libraries
ii  cuda-curand-dev-10-0                       10.0.130-1                                       amd64        CURAND native dev links, headers
ii  cuda-cusolver-10-0                         10.0.130-1                                       amd64        CUDA solver native runtime libraries
ii  cuda-cusolver-dev-10-0                     10.0.130-1                                       amd64        CUDA solver native dev links, headers
ii  cuda-cusparse-10-0                         10.0.130-1                                       amd64        CUSPARSE native runtime libraries
ii  cuda-cusparse-dev-10-0                     10.0.130-1                                       amd64        CUSPARSE native dev links, headers
ii  cuda-demo-suite-10-0                       10.0.130-1                                       amd64        Demo suite for CUDA
ii  cuda-documentation-10-0                    10.0.130-1                                       amd64        CUDA documentation
ii  cuda-driver-dev-10-0                       10.0.130-1                                       amd64        CUDA Driver native dev stub library
ii  cuda-drivers                               440.64.00-1                                      amd64        CUDA Driver meta-package
ii  cuda-gdb-10-0                              10.0.130-1                                       amd64        CUDA-GDB
ii  cuda-gpu-library-advisor-10-0              10.0.130-1                                       amd64        CUDA GPU Library Advisor.
ii  cuda-libraries-10-0                        10.0.130-1                                       amd64        CUDA Libraries 10.0 meta-package
ii  cuda-libraries-dev-10-0                    10.0.130-1                                       amd64        CUDA Libraries 10.0 development meta-package
ii  cuda-license-10-0                          10.0.130-1                                       amd64        CUDA licenses
ii  cuda-memcheck-10-0                         10.0.130-1                                       amd64        CUDA-MEMCHECK
ii  cuda-misc-headers-10-0                     10.0.130-1                                       amd64        CUDA miscellaneous headers
ii  cuda-npp-10-0                              10.0.130-1                                       amd64        NPP native runtime libraries
ii  cuda-npp-dev-10-0                          10.0.130-1                                       amd64        NPP native dev links, headers
ii  cuda-nsight-10-0                           10.0.130-1                                       amd64        CUDA nsight
ii  cuda-nsight-compute-10-0                   10.0.130-1                                       amd64        NVIDIA Nsight Compute
ii  cuda-nvcc-10-0                             10.0.130-1                                       amd64        CUDA nvcc
ii  cuda-nvdisasm-10-0                         10.0.130-1                                       amd64        CUDA disassembler
ii  cuda-nvgraph-10-0                          10.0.130-1                                       amd64        NVGRAPH native runtime libraries
ii  cuda-nvgraph-dev-10-0                      10.0.130-1                                       amd64        NVGRAPH native dev links, headers
ii  cuda-nvjpeg-10-0                           10.0.130.1-1                                     amd64        NVJPEG native runtime libraries
ii  cuda-nvjpeg-dev-10-0                       10.0.130.1-1                                     amd64        NVJPEG native dev links, headers
ii  cuda-nvml-dev-10-0                         10.0.130-1                                       amd64        NVML native dev links, headers
ii  cuda-nvprof-10-0                           10.0.130-1                                       amd64        CUDA Profiler tools
ii  cuda-nvprune-10-0                          10.0.130-1                                       amd64        CUDA nvprune
ii  cuda-nvrtc-10-0                            10.0.130-1                                       amd64        NVRTC native runtime libraries
ii  cuda-nvrtc-dev-10-0                        10.0.130-1                                       amd64        NVRTC native dev links, headers
ii  cuda-nvtx-10-0                             10.0.130-1                                       amd64        NVIDIA Tools Extension
ii  cuda-nvvp-10-0                             10.0.130-1                                       amd64        CUDA nvvp
ii  cuda-repo-ubuntu1804                       10.0.130-1                                       amd64        cuda repository configuration files
ii  cuda-runtime-10-0                          10.0.130-1                                       amd64        CUDA Runtime 10.0 meta-package
ii  cuda-samples-10-0                          10.0.130-1                                       amd64        CUDA example applications
ii  cuda-toolkit-10-0                          10.0.130-1                                       amd64        CUDA Toolkit 10.0 meta-package
ii  cuda-tools-10-0                            10.0.130-1                                       amd64        CUDA Tools meta-package
ii  cuda-visual-tools-10-0                     10.0.130-1                                       amd64        CUDA visual tools
ii  libcudnn7                                  7.4.1.5-1+cuda10.0                               amd64        cuDNN runtime libraries
ii  libcudnn7-dev                              7.4.1.5-1+cuda10.0                               amd64        cuDNN development libraries and headers
ii  libnccl-dev                                2.6.4-1+cuda10.0                                 amd64        NVIDIA Collectives Communication Library (NCCL) Development Files
ii  libnccl2                                   2.6.4-1+cuda10.0                                 amd64        NVIDIA Collectives Communication Library (NCCL) Runtime

libcudnn7を削除.

remove_package
sudo apt-get --purge remove libcudnn7*

改めて,

install_1
sudo apt install libcudnn7-dev=7.4.2.24-1+cuda10.0 libcudnn7=7.4.2.24-1+cuda10.0

インストールが完了し,コードを実行するも,やっぱり同じエラー...

2.CuDnn7.4 → CuDnn7.6

長い長い実行ログを見ると,こんな1文を発見.

error_log_2
Loaded runtime CuDNN library: 7.4.2 but source was compiled with: 7.6.0.
CuDNN library major and minor version needs to match or have higher minor version in case of CuDNN 7.0 or later version.
If using a binary install, upgrade your CuDNN library.
If building from sources, make sure the library loaded at runtime is compatible with the version specified during compile configuration.

おっ!!CuDNN 7.6.0でコンパイルしてるだと!?(それ以外の文はバージョンあげろとか,一致させろとかお決まりの内容)
でも,待てよ...TensorFlow GPUサポート テスト済みビルド設定に従わなくて,何回か痛い目を見たぞ.
まぁ,とりあえずやってみますか!!!
1.と同じ手順で,パッケージをremoveし,cudnn7.6.5.32-1+cuda10.0を再インストール.

install_2
sudo apt install libcudnn7-dev=7.6.5.32-1+cuda10.0 libcudnn7=7.6.5.32-1+cuda10.0

で,コードを実行...

2020-04-15 23:54:10.330338: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.0
2020-04-15 23:54:10.330384: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10.0
2020-04-15 23:54:10.330412: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcufft.so.10.0
2020-04-15 23:54:10.330453: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcurand.so.10.0
2020-04-15 23:54:10.330482: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusolver.so.10.0
2020-04-15 23:54:10.330524: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusparse.so.10.0
2020-04-15 23:54:10.330553: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2020-04-15 23:54:10.333274: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.0

All Success!!!

結論

テスト済みビルドのページはなかなか更新されないみたいなので,ちゃんとログにしたがって,バージョンを合わせましょう.
詳細な原因は分かり次第,記述していくつもりです.(するとは言ってない)
原因をご存知の方はお教えいただけると幸いです.

参考文献

note

ubuntu18.04.2以降使えるようになった

sudo ubuntu-drivers autoinstall

でGPU driverを入れると最新のCUDAバージョン(10.2 : 2020/04/15現在)がインストールされ,tensorflowのバージョンと合わないことがあります.
また,バージョンを合わせようとCUDAを再インストールするとGPU driverもインストールされ,driverが合わなくなる場合があります.
rebootする際には,十分にご注意ください.

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?