web-dev-qa-db-ja.com

Windows上のTensorFlow:「CUDAライブラリcudnn64_5.dllを開けませんでした」

TensorflowはWindowsのサポートをリリースしました。 gpuバージョンとCUDA 8.0をインストールし、python 3.5。ただし、テンソルフローをインポートした後、次のエラーが発生しました。

>>> import tensorflow
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cublas64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library cudnn64_5.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:3459] Unable to load cuDNN DSO
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cufft64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library nvcuda.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library curand64_80.dll locally

誰か助けてもらえますか?ありがとう!

17
Alex

TL; DR:TensorFlowでcuDNNを使用するには、cudnn64_5.dllファイルが%PATH%環境にあるディレクトリに存在する必要があります変数。 cuDNNはCUDAとは別のダウンロードであり、cuDNNのバージョン5.1をダウンロードする必要があることに注意してください。

まず、cuDNNはCUDAツールキットの他の部分と一緒に配布されないため、 NVIDIA Webサイト から個別にダウンロードする必要があります。 Windowsでは、Zipアーカイブとして配布されるため、展開してcudnn64_5.dllを含むディレクトリを見つける必要があります。たとえば、C:\tools\cudaに抽出すると、DLLはC:\tools\cuda\bin\cudnn64_5.dllになります。最後に、コマンドで次のように入力してパスに追加できます。促す:

C:\> set PATH=%PATH%;C:\tools\cuda\bin
C:\> python
...
>>> import tensorflow as tf
24
mrry

pip3 install --upgrade tensorflowtensorflow-gpuそして、それはうまく働きました。

pip3 install --upgrade tensorflow-gpu 直接。

2

私はこの問題を抱えており、それを解決するのに何度か試みました。この回答は、Python 64のWindows 64に適用されます。VS2017には、Python 3.6

クリーンなWindows 64マシンからVisual Studio 2015をインストールします(注:NOT vs2017-少なくともまだ)。コミュニティ版は無料です。必ずC++コンパイラをインストールしてください。これは将来のpython libs。

これにより、msvcp140.dllまたはmsvcrt * .dllsの問題もクリーンアップされます。または、VC Redistributableをインストールできます(ただし、VS2015をインストールすることをお勧めします。これにより、将来のpythonライブラリ)をコンパイルおよびインストールできるようになります。

次に、VS2017をインストールし、今回もPythonおよびData Learning(scikit))を選択します。これにより、デフォルトでPython 3.6(VS2015でビルド) 。いくつかの便利な機能もあります

*また、互換性のあるNvidiaカードがあることを確認してください(前の回答を参照)

次に、コンピューターに最新のNvidiaドライバーがインストールされていることを確認します。

次に、GoogleおよびCuda binsを含む他の人が言及したNvidiaライブラリをインストールしたことを確認します。

* tensorflow 1.2では、Python 3.6がサポートされているため、Python 3.5環境を作成する際の注意事項は不要です。

Tensorflow 1.2で遭遇したいくつかの問題があります。私の環境でもtensorflow 1.31rc2を試しました

問題#1-ファイアウォール(ファイアウォールの背後にあるもの)

これにより、「pip install」によるインストールが防止されます。これを修正するには、-trusted-Host pypi.python.orgを追加します

例えば

pip install tensorflow-gpu --trusted-Host pypi.python.org

問題#2-numpy 1.13.1へのアップグレード

Tensorflowをインストールすると、互換性のないバージョンのnumpy 1.13.1にアップグレードされます(少なくとも私のWindowsマシンでは)。これを修正するには、 http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy でホイールをダウンロードしてくださいnumpy-1.13.1 + mkl-cp36- cp36m-win_AMD64.whl

このホイールをインストールしますbefore tensorflowをインストールします。これにより、テンソルフローは互換性のないバージョンのnumpy 1.13.1パッケージをインストールしなくなります

注:他の投稿にホイールをインストールする方法を参照してください(pip install fullpath_of_wheel)

注:既にtensorflowをインストールしている場合は、pip installで--upgradeオプションを使用して強制的にアップグレードしてください)

問題#3-異なる場所にあるNvidia cudaパッケージ

適切なCU * .DLLパッケージがあるかどうかをテストするには、「where」コマンドを使用します(C:\コマンドプロンプトから)

ここで、cublas64_80.dll

ここで、cudnn64_5.dll

ここで、cufft64_80.dll

ここで、nvcuda.dll

ここで、curand64_80.dll

ここで、cusolver64_80.dll

お使いのマシンが私のようなものである場合、これらのdllは複数の場所にあり、場合によっては存在しないこともあります。たとえば、cublas64_80.dllは、c:\ system32\windowsなどのc:\ program files\Anaconda3ディレクトリnvcuda.dllで見つかりました。 matlabをインストールしている場合、独自のバージョンがあります。 CNTKにも独自のバージョンがあります。 Nvidiaはそれらを別のディレクトリに配置します。これはさらに別の問題です。他の人が述べたように、必要なDLLのいくつかはNvidiaによってZipファイルで提供されています。

パスを修正しようとする代わりに、最初にこれを試すことをお勧めします

上記の6つのDLLを収集し、c:\ tfexperimentなどの1つのディレクトリに配置します

次に、c:\ tfexperimentにcdします

この場所からpython.exeを実行します。 Windowsは、現在のパスで最初にdllを検索します

今一度pythonタイプをロード

tfをtfとしてインポート

うまくいくはずです(うまくいけば)。これが私のマシンで動作するようにすることができた唯一の方法でした。ここまで進んだら、パス環境変数の最初のパスとしてc:\ tfexperimentを追加するだけです。または、正しいパスの順序を把握できます。

それでも動作しない場合は、Microsoftからprocmon.exeをダウンロードして、さらに一歩進めることができます。 procmon.exeを実行します。実行可能ファイルpython.exeでフィルタリングします(procmonの使用方法を説明する時間がありません)。次に、pythonプロンプトに戻り、「tfとしてtensorflowをインポート」と再度入力します。procmonには多くの情報行が必要です。loadimageでフィルタリングする必要がある場合があります。 .pyd拡張子もDLLであることに注意してください。最後に読み込まれた(または読み込まれなかった).dllが問題の原因である可能性があります。

1
Dan Bricklin

上記の回答に加えて、cuDNNのサポートされているバージョンをダウンロードしたことを確認してください。現在、TensorFlowは古いcuDNN v.5.1をサポートしていますが、新しいcuDNN 6.0はNvidiaサイトで利用可能です。 6.0ではこのようなエラーが発生しました。 5.1にロールバックすると、すべてが機能しました。

1
Andrey Kurapov

また、別のパスにcudnn64_5.dll(間違ったバージョン)が追加されていないことを確認してください。

そのため、過去に...\CUDA\v8.0\binにDLLを挿入した場合、古いバージョンを他から削除せずに新しいバージョンを...\CuDNN\v5.1\binに追加したことを忘れないでください。ディレクトリ。

0
michaelosthege

このウェブサイトからcuda.dllファイルをダウンロードしました: https://developer.nvidia.com/cudnn

そして、解凍したフォルダーを残りの私のanacondaライブラリーに移動しました。

私はpycharmを使用しているため、すべての外部ライブラリがanaconda内のどこに保存されているかを簡単に確認できました。お役に立てれば!

0
user4679594

私のテストのように、TF 1.2はcudnn 64_5をサポートし、TF 1.3はcudnn 64_6をサポートすることがわかりました。これが役立つことを願っています。 :)

0
wiwengweng

システムの cudnn をダウンロードし、CUDA_PATHで抽出する必要があります。

CUDA_PATHC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

0
Dev Ross

C:\ Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\binディレクトリにcuda64_5.dllを配置することもできます。

フォルダGUIを使用して、.dllをディレクトリにロードできます。その後、Tensorflowを使用するたびにPATHを定義する必要はありません。

0
Lucid Rage

Dan Bricklin に関しては、かなりの時間がかかりました。
ようやく同じ順序で順番に取得しました。

  1. 私のconda環境から以前のテンソルフローを削除しました。

  2. Windows 8用のCUDA v9.1をインストール(VisualStudioのデフォルトバージョンを使用した標準インストール)および追加 "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1 "パスへ。

  3. ダウンロードして展開cudnn-9.1-windows-7-x64、それを「プログラムファイル」に移動し、パスに追加 "C:\ Program Files\cuda\bin"

  4. 私のconda環境にpipでtensorflowをインストールしました "pip install --ignore-installed --upgrade tensorflow"
0
UrielUVD

以下の理由でここに着陸するあなたのために:

I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library cublas64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_blas.cc:2294] Unable to load cuBLAS DSO.
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cudnn64_5.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library cufft64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_fft.cc:344] Unable to load cuFFT DSO.
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library nvcuda.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library curand64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_rng.cc:338] Unable to load cuRAND DSO.

CUDAの通常のパスを追加する必要があります。なぜそれらを1つのダウンロードとしてまとめなかったのかわかりません。とてもばか。

C:\Users\user>set PATH=%PATH%;C:\tools\cuda\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin
0
TOBlender

そして、次の方法で環境変数を確認できます。

import os
print("Environmental variable:", os.environ["PATH"])
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;

CUDA_pathは「D:/CUDA/v8.0/bin」であり、CUDA_pathがここにありません。不足しているファイルはここにあります(「cublas64_80.dll」、「cudnn64_5.dll」など)。前提は、CUDAのインストールが完了していることです。

環境変数でCUDA_pathが見つからない場合は、CUDA_pathを手動で追加できます(次のコードの順序は非常に重要です。インポートTensorFlowの前にCUDA_pathを追加。)

import os
os.environ["PATH"] += ";D:/CUDA/v8.0/bin;" 
import tensorflow as tf

または、CUDA_pathを追加することもできますCMDで一時的に

set PATH=%PATH%;"D:/CUDA/v8.0/bin"
python3 tensorflow_model.py

私のラップトップ(Windows10、Python3.6、Tensorflow-gpu == 1.5)で動作します。この2つの方法は簡単な解決策だと思います。

0
1943 Yonv