質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

解決済

tensorflow GPUでUnknownError: Failed to get convolution algorithm. ~

masaosa
masaosa

総合スコア0

CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

1回答

0評価

1クリップ

21閲覧

投稿2020/12/21 10:54

編集2022/01/12 10:58

tensorflow tutorialでcycle ganのtutorialをやっています.
途中のコードは省きますが次を実行しようとしたらその下のエラーが出ました.

python

OUTPUT_CHANNELS = 3 generator_g = pix2pix.unet_generator(OUTPUT_CHANNELS, norm_type='instancenorm') generator_f = pix2pix.unet_generator(OUTPUT_CHANNELS, norm_type='instancenorm') discriminator_x = pix2pix.discriminator(norm_type='instancenorm', target=False) discriminator_y = pix2pix.discriminator(norm_type='instancenorm', target=False) to_zebra = generator_g(sample_horse) to_horse = generator_f(sample_zebra) plt.figure(figsize=(8, 8)) contrast = 8 imgs = [sample_horse, to_zebra, sample_zebra, to_horse] title = ['Horse', 'To Zebra', 'Zebra', 'To Horse'] for i in range(len(imgs)): plt.subplot(2, 2, i+1) plt.title(title[i]) if i % 2 == 0: plt.imshow(imgs[i][0] * 0.5 + 0.5) else: plt.imshow(imgs[i][0] * 0.5 * contrast + 0.5) plt.show()

python

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]

以前の質問も確認して,バージョンもあっているかと思うのですが,原因が分かりません.

環境

windows10
tensorflow-gpu 2.3.0
CUDA 10.1
cudnn 7.6.5
tensorflow-gpuはpipで入れています.

python

from tensorflow.python.client import device_lib device_lib.list_local_devices()

でGPUを認識しているのですが,

python

conda list absl-py 0.10.0 pypi_0 pypi argon2-cffi 20.1.0 py37he774522_1 astunparse 1.6.3 pypi_0 pypi async_generator 1.10 py37h28b3542_0 attrs 20.3.0 pyhd3eb1b0_0 backcall 0.2.0 py_0 bleach 3.2.1 py_0 ca-certificates 2020.12.8 haa95532_0 cachetools 4.2.0 pypi_0 pypi certifi 2020.12.5 py37haa95532_0 cffi 1.14.4 py37hcd4344a_0 chardet 4.0.0 pypi_0 pypi colorama 0.4.4 pyhd3eb1b0_0 cycler 0.10.0 pypi_0 pypi decorator 4.4.2 py_0 defusedxml 0.6.0 py_0 dill 0.3.3 pypi_0 pypi entrypoints 0.3 py37_0 future 0.18.2 pypi_0 pypi sqlite 3.33.0 h2a8f88b_0 tensorboard 2.4.0 pypi_0 pypi tensorboard-plugin-wit 1.7.0 pypi_0 pypi tensorflow-datasets 4.1.0 pypi_0 pypi tensorflow-gpu 2.3.0 pypi_0 pypi tensorflow-gpu-estimator 2.3.0 pypi_0 pypi tensorflow-hub 0.10.0 pypi_0 pypi tensorflow-metadata 0.26.0 pypi_0 pypi

でCUDA,cudnnが出てきません.
PATHは以下のように通してます.
イメージ説明

原因が分かりません.ご教授よろしくお願いいたします.

追記

「try looking to see if a warning log message was printed above.」

と書いてありますけど、それより上には関係してそうなメッセージは何か書かれてませんか?
以下がエラーメッセージでした.特に問題の原因となるような言葉は書いてなさそうです..

python

UnknownError Traceback (most recent call last) <ipython-input-15-284f1d86293d> in <module> 6 discriminator_x = pix2pix.discriminator(norm_type='instancenorm', target=False) 7 discriminator_y = pix2pix.discriminator(norm_type='instancenorm', target=False) ----> 8 to_zebra = generator_g(sample_horse) 9 to_horse = generator_f(sample_zebra) 10 plt.figure(figsize=(8, 8)) ~\anaconda3\envs\DEP3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in __call__(self, *args, **kwargs) 983 984 with ops.enable_auto_cast_variables(self._compute_dtype_object): --> 985 outputs = call_fn(inputs, *args, **kwargs) 986 987 if self._activity_regularizer: ~\anaconda3\envs\DEP3\lib\site-packages\tensorflow\python\keras\engine\functional.py in call(self, inputs, training, mask) 384 """ 385 return self._run_internal_graph( --> 386 inputs, training=training, mask=mask) 387 388 def compute_output_shape(self, input_shape): ~\anaconda3\envs\DEP3\lib\site-packages\tensorflow\python\keras\engine\functional.py in _run_internal_graph(self, inputs, training, mask) 506 507 args, kwargs = node.map_arguments(tensor_dict) --> 508 outputs = node.layer(*args, **kwargs) 509 510 # Update tensor_dict. ~\anaconda3\envs\DEP3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in __call__(self, *args, **kwargs) 983 984 with ops.enable_auto_cast_variables(self._compute_dtype_object): --> 985 outputs = call_fn(inputs, *args, **kwargs) 986 987 if self._activity_regularizer: ~\anaconda3\envs\DEP3\lib\site-packages\tensorflow\python\keras\engine\sequential.py in call(self, inputs, training, mask) 370 if not self.built: 371 self._init_graph_network(self.inputs, self.outputs) --> 372 return super(Sequential, self).call(inputs, training=training, mask=mask) 373 374 outputs = inputs # handle the corner case where self.layers is empty ~\anaconda3\envs\DEP3\lib\site-packages\tensorflow\python\keras\engine\functional.py in call(self, inputs, training, mask) 384 """ 385 return self._run_internal_graph( --> 386 inputs, training=training, mask=mask) 387 388 def compute_output_shape(self, input_shape): ~\anaconda3\envs\DEP3\lib\site-packages\tensorflow\python\keras\engine\functional.py in _run_internal_graph(self, inputs, training, mask) 506 507 args, kwargs = node.map_arguments(tensor_dict) --> 508 outputs = node.layer(*args, **kwargs) 509 510 # Update tensor_dict. ~\anaconda3\envs\DEP3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in __call__(self, *args, **kwargs) 983 984 with ops.enable_auto_cast_variables(self._compute_dtype_object): --> 985 outputs = call_fn(inputs, *args, **kwargs) 986 987 if self._activity_regularizer: ~\anaconda3\envs\DEP3\lib\site-packages\tensorflow\python\keras\layers\convolutional.py in call(self, inputs) 245 inputs = array_ops.pad(inputs, self._compute_causal_padding(inputs)) 246 --> 247 outputs = self._convolution_op(inputs, self.kernel) 248 249 if self.use_bias: ~\anaconda3\envs\DEP3\lib\site-packages\tensorflow\python\util\dispatch.py in wrapper(*args, **kwargs) 199 """Call target, and fall back on dispatchers if there is a TypeError.""" 200 try: --> 201 return target(*args, **kwargs) 202 except (TypeError, ValueError): 203 # Note: convert_to_eager_tensor currently raises a ValueError, not a ~\anaconda3\envs\DEP3\lib\site-packages\tensorflow\python\ops\nn_ops.py in convolution_v2(input, filters, strides, padding, data_format, dilations, name) 1016 data_format=data_format, 1017 dilations=dilations, -> 1018 name=name) 1019 1020 ~\anaconda3\envs\DEP3\lib\site-packages\tensorflow\python\ops\nn_ops.py in convolution_internal(input, filters, strides, padding, data_format, dilations, name, call_from_convolution, num_spatial_dims) 1146 data_format=data_format, 1147 dilations=dilations, -> 1148 name=name) 1149 else: 1150 if channel_index == 1: ~\anaconda3\envs\DEP3\lib\site-packages\tensorflow\python\ops\nn_ops.py in _conv2d_expanded_batch(input, filters, strides, padding, data_format, dilations, name) 2590 data_format=data_format, 2591 dilations=dilations, -> 2592 name=name) 2593 return squeeze_batch_dims( 2594 input, ~\anaconda3\envs\DEP3\lib\site-packages\tensorflow\python\ops\gen_nn_ops.py in conv2d(input, filter, strides, padding, use_cudnn_on_gpu, explicit_paddings, data_format, dilations, name) 936 return _result 937 except _core._NotOkStatusException as e: --> 938 _ops.raise_from_not_ok_status(e, name) 939 except _core._FallbackException: 940 pass ~\anaconda3\envs\DEP3\lib\site-packages\tensorflow\python\framework\ops.py in raise_from_not_ok_status(e, name) 6841 message = e.message + (" name: " + name if name is not None else "") 6842 # pylint: disable=protected-access -> 6843 six.raise_from(core._status_to_exception(e.code, message), None) 6844 # pylint: enable=protected-access 6845 ~\anaconda3\envs\DEP3\lib\site-packages\six.py in raise_from(value, from_value) 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]

[https://teratail.com/questions/306602

](https://teratail.com/questions/306602)
の「Code2」をGPU有り環境で実行すると

上記のコードを実行したところ同じようなエラーが出ました...

python

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. [[node sequential/conv2d/Relu (defined at <ipython-input-2-de4210406d90>:13) ]] [Op:__inference_train_function_853] Function call stack: train_function

追記

Code2をPCを再起動して実行したところ動きました.
イメージ説明
イメージ説明

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

jbpb0
jbpb0

2020/12/21 11:38

「try looking to see if a warning log message was printed above\.」 と書いてありますけど、それより上には関係してそうなメッセージは何か書かれてませんか\?
jbpb0
jbpb0

2020/12/21 22:37 編集

https://teratail\.com/questions/306602 の「Code2」をGPU有り環境で実行すると、 model\.fit\(\.\.\. の後に、何回か「\.\.\. Successfully opened dynamic library \*\.dll」みたいなのが表示されるはずです こちらの tensorflow 1\.15, CUDA 10\.0 環境では、下記\.dllが、その行で表示されます nvcuda\.dll cudart64_100\.dll cublas64_100\.dll cufft64_100\.dll curand64_100\.dll cusolver64_100\.dll cusparse64_100\.dll cudnn64_7\.dll そのあたりはいかがでしょうか? \(特に、cudnn64_7\.dllが読めてるか\) tf 2\.x, CUDA 10\.1 だと、ファイル名に多少の違いはあると思いますが、ファイル名の64より前は基本的には同じはずです
jbpb0
jbpb0

2020/12/21 22:39

上記「Code2」は実行できますか?
masaosa
masaosa

2020/12/21 22:42

code2いま実行したのですが,できませんでした.
masaosa
masaosa

2020/12/21 22:43

エラー内容等追記させていただきました.
jbpb0
jbpb0

2020/12/21 23:34

「Code2」のエラーより前に、「\.\.\. Successfully opened dynamic library \*\.dll」みたいなのは表示されますか?
masaosa
masaosa

2020/12/22 00:19

表示されていません...
masaosa
masaosa

2020/12/22 00:25

NVIDIA GPU Computing Toolkit\\CUDA\\v10\.1\\binにはcudnn64_7\.dllが確かに入ってます.
jbpb0
jbpb0

2020/12/22 00:47

> NVIDIA GPU Computing Toolkit\\CUDA\\v10\.1\\binにはcudnn64_7\.dllが確かに入ってます. それをtensorflowが見つけられているのか、をお尋ねしているのです 「\.\.\. Successfully opened dynamic library \*\.dll」でcudnn\*\.dll をopenできていると表示されて、その後にエラーになっているのなら、tensorflowは見つけられています そうではなく、openに失敗していると表示されているのなら、tensorflowが見つけられてません tensorflowが見つけられているのかどうかで、エラーの原因の探し方が変わります 「Code2」は、 Train on 50000 samples, validate on 10000 samples Epoch 1/10 とか表示された後にエラーになるので、上記よりももっと前に「\.\.\. Successfully opened dynamic library \*\.dll」みたいなのが表示されてませんか\? あるいは、「cannot open\.\.\.」的なのはありませんか\? \(Could not loadとかnot foundとか、かもしれません\)
masaosa
masaosa

2020/12/22 03:59

知識不足で申し訳ありません.Code2がPCを再起動し実効したところ動きましたが,「\.\.\. Successfully opened dynamic library \*\.dll」などの文字がありませんでした.(追記2に画像を載せました.) なにも表示されていないということは,tensorflowを見つけられていないということでしょうか・・・?
masaosa
masaosa

2020/12/22 04:13

上記訂正です.Successfully opened dynamic libraryの文字がありましたが,cudart64_101\.dlを認識しているようでした(追記2の2枚目の画像)
jbpb0
jbpb0

2020/12/22 04:14

再起動で動いたということは、メモリー不足だった可能性があります tensorflowは、普通の設定だとGPUのメモリーをほとんど占有してしまい、実行が終わってもpythonが止まるまでメモリーを手放しません その状態で別のpythonでtensorflowを動かしても、GPUのメモリーが足りないため、動きません 詳細は、下記を見てください https://betashort-lab\.com/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/python/jupyternotebook%E3%81%A7gpu%E3%81%AE%E3%83%A1%E3%83%A2%E3%83%AA%E3%82%92%E8%A7%A3%E6%94%BE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95-windows%E7%B7%A8/
jbpb0
jbpb0

2020/12/22 04:22 編集

> 「\.\.\. Successfully opened dynamic library \*\.dll」などの文字がありませんでした. Jupyter使ってるのですね たぶんそれは、Jupyterが隠してるのでしょう 必要なDLLが見つからない場合のエラーは隠さないと思うので、エラーが表示されてないなら、たぶん大丈夫だとは思いますが Jupyterを使わずに、Anacondaプロンプトでpythonを実行したら、もっとたくさんtensorflowが表示してるメッセージを読むことができます うまく動いてないかもしれないと思ったら、そのようにしてメッセージを細かく読んでみるのも、一つの方法です 【追記】「Code2」が動いたのだから、cudnnは読み込めてます
masaosa
masaosa

2020/12/22 04:22

Code2の場合再起動すると動きましたが,cycleganのほうがそもそも動きませんでした. Jupyter Notebookのプロンプト?の方に以下が書いてありました.見つけるのが遅くなってしまい申し訳ありません. 2020-12-22 13:19:50\.169578: I tensorflow/stream_executor/platform/default/dso_loader\.cc:48\] Successfully opened dynamic library cudnn64_7\.dll 2020-12-22 13:19:52\.230335: E tensorflow/stream_executor/cuda/cuda_dnn\.cc:328\] Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED 2020-12-22 13:19:52\.235292: E tensorflow/stream_executor/cuda/cuda_dnn\.cc:328\] Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED
jbpb0
jbpb0

2020/12/22 04:27

Windowsのタスクマネージャーで、パフォーマンス→GPUで、下の方にメモリー使用量のグラフがあります メモリーに余裕がありますか? 余裕が無いと、そうなることがあります プログラム実行前は、普通はメモリーは1GBも使われず、ほとんど空いてるはず そうなってなければ、たぶん前に動かしたpythonがメモリーを返してない
jbpb0
jbpb0

2020/12/22 04:30

プログラムを動かす前はGPUのメモリーが十分に空いてるけど、プログラムを実行したらメモリーが足りなくなって動かない、という場合はあります その場合は、メモリー使用量を減らすように、プログラムを修正する必要があります バッチサイズを減らす等して
masaosa
masaosa

2020/12/22 09:19 編集

ご指摘の通り,6\.0GBの専用GPUメモリの使用量が5\.0GBぐらいまでいっぱい使われていました. \[https://teratail\.com/questions/307392\]\(https://teratail\.com/questions/307392\) でもありましたようにjbpb0様のご指摘の「TF_FORCE_GPU_ALLOW_GROWTH」のシステム環境変数の設定をすることでcycle_ganのtutorialが動きました.遅いですが...1EPOCHS6分かかります. (GTX1660SUPER) 何度も詳しいご返答ありがとうございました.

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。