Python 无法加载动态库';cudart64_101.dll';仅在tensorflow CPU上安装
我刚刚通过Python 无法加载动态库';cudart64_101.dll';仅在tensorflow CPU上安装,python,python-3.x,tensorflow,keras,tensorflow2.0,Python,Python 3.x,Tensorflow,Keras,Tensorflow2.0,我刚刚通过pip install Tensorflow安装了最新版本的Tensorflow,每当我运行程序时,我都会收到日志消息: W tensorflow/stream_executor/platform/default/dso_loader.cc:55]无法加载动态库“cudart64_101.dll”;错误:找不到cudart64_101.dll 这不好吗?如何修复错误?Tensorflow 2.1+ 发生什么事? 对于,默认的tensorflowpip包包含TF的CPU和GPU版本。在以
pip install Tensorflow
安装了最新版本的Tensorflow,每当我运行程序时,我都会收到日志消息:
W tensorflow/stream_executor/platform/default/dso_loader.cc:55]无法加载动态库“cudart64_101.dll”;错误:找不到cudart64_101.dll
这不好吗?如何修复错误?Tensorflow 2.1+
发生什么事?
对于,默认的tensorflow
pip包包含TF的CPU和GPU版本。在以前的TF版本中,找不到CUDA库会发出错误并引发异常,而现在库会动态搜索正确的CUDA版本,如果找不到,则会发出警告(开头的W代表警告,错误有E(或F表示致命错误)并返回到仅CPU模式。事实上,这也会在警告后立即作为信息消息写入日志中(请注意,如果您的最低日志级别高于默认值,则可能看不到信息消息)。完整日志为(我的重点):
2020-01-20 12:27:44.554767:W tensorflow/stream_executor/platform/default/dso_loader.cc:55]无法加载动态库“cudart64_101.dll”;错误:未找到cudart64_101.dll
2020-01-20 12:27:44.554964:I tensorflow/stream_executor/cuda/cudart_stub.cc:29]如果您的机器上没有设置GPU,请忽略上面的cudart数据错误。
我该担心吗?我该怎么解决?
如果您的机器上没有支持CUDA的GPU,或者如果您不关心没有GPU加速,则无需担心。另一方面,如果您安装了tensorflow并且想要GPU加速,请检查您的CUDA安装(TF2.1需要CUDA10.1,而不是10.2或10.0)
如果您只是想消除警告,您可以选择取消显示警告,但这可能有点过头了,因为它会使所有警告静音
Tensorflow 1.X或2.0:
您的CUDA安装程序已损坏,请确保安装了正确的版本。要在TensorFlow 2.1中安装GPU支持的先决条件,请执行以下操作:
- 如果CUDA安装程序报告“您正在安装较旧的驱动程序版本”,您可能希望选择自定义安装并取消选择某些组件。事实上,请注意,TensorFlow不需要与CUDA捆绑的软件,包括GeForce体验、PhysX、显示驱动程序和Visual Studio集成
- 另外请注意,TensorFlow需要CUDA工具包的特定版本,除非您从源代码构建;对于TensorFlow 2.1和2.2,当前版本为10.1
pip安装tensorflow安装tensorflow
2020-02-23 13:31:44.910213: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found
2020-02-23 13:31:44.925815: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll
2020-02-23 13:31:44.941384: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_10.dll
2020-02-23 13:31:44.947427: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_10.dll
2020-02-23 13:31:44.965893: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_10.dll
2020-02-23 13:31:44.982990: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_10.dll
2020-02-23 13:31:44.990036: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudnn64_7.dll'; dlerror: cudnn64_7.dll not found
我是如何解决第一个警告的:
我只是在这里下载了一个包含所有cudnn文件(dll等)的zip文件:
我是如何解决第二个警告的:
我查找了最后一个丢失的文件(cudart64_101.dll)在我的conda创建的虚拟环境中,我只是将它复制/粘贴到与.dll cudnn相同的lib文件夹中,一种更简单的方法是创建一个名为
cudart64_101.dll的链接,指向cudart64_102.dll
。这不是很传统,但因为TensorFlow正在寻找cudart64_101.dll
导出的符号和tnvidia的人不是业余爱好者,他们很可能不会删除101到102之间的符号。基于这个假设(里程可能会有所不同),它是有效的。Tensorflow 2.1与Cuda 10.1配合使用
如果您想要快速破解:
- 只需从下载
cudart64_101.dll
。解压缩zip文件并将cudart64_101.dll
复制到CUDAbin
目录
其他:
- 安装Cuda 10.1
在
conda
环境中,这就是解决我问题的方法(我缺少cudart64-100.dll
:
下载自
把它放在我的康达环境中
C:\Users\\Anaconda3\envs\\Library\bin
仅此而已!您可以再次检查它是否正常工作:
import tensorflow as tf
tf.config.experimental.list_physical_devices('GPU')
Tensorflow gpu 2.2和2.3每晚
(沿CUDA Toolkit 11.0 RC)
为了解决与OP相同的问题,我只需在磁盘上找到cudart64_101.dll(在我的例子中是C:\Program Files\NVIDIA Corporation\nStreamSrv),并将其添加为变量环境(即将值C:\Program Files\NVIDIA\Corporation\nStreamSrv)cudart64_101.dll添加到用户的环境变量路径中.通过将NVIDIA设备驱动程序更新为最新版本(v446.14),解决了该问题。
NVIDIA驱动程序下载。TensorFlow 2.3.0适用于CUDA 11。但您必须每晚安装tf gpu(安装TensorFlow和CUDA 11后):
尝试:
之后,您将在控制台中看到以下消息:
I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_110.dll
如果
pip install tf-nightly-gpu
I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_110.dll
pip install tensorflow-gpu==2.0.0
I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_100.dll