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支持的先决条件,请执行以下操作:

  • 安装最新的GPU驱动程序
  • 安装。
    • 如果CUDA安装程序报告“您正在安装较旧的驱动程序版本”,您可能希望选择自定义安装并取消选择某些组件。事实上,请注意,TensorFlow不需要与CUDA捆绑的软件,包括GeForce体验、PhysX、显示驱动程序和Visual Studio集成
    • 另外请注意,TensorFlow需要CUDA工具包的特定版本,除非您从源代码构建;对于TensorFlow 2.1和2.2,当前版本为10.1
  • 安装cuDNN。 CUDA 10.1。这将要求您注册英伟达开发者程序。
  • 解压到合适的位置,并将bin目录添加到您的路径中
  • 通过
    pip安装tensorflow安装tensorflow
  • 我用另一种方法解决了这个问题。 首先,我从这里安装了cuda 10.1工具包

    其中,我选择了安装程序类型(exe(本地))并在自定义模式下安装了10.1(没有visual studio集成,NVIDIA PhysX,因为之前我安装了CUDA 10.2,所以自动安装了所需的依赖项)

    安装后,从以下路径 (C:\Program Files\NVIDIA GPU计算工具包\CUDA\v10.1\bin) ,在我的例子中,我复制了“cudart64_101.dll”文件并粘贴进去 (C:\Program Files\NVIDIA GPU计算工具包\CUDA\v10.2\bin)

    然后导入Tensorflow工作顺利

    注意:很抱歉英语不好

    这对我很有用:

    我用anaconda预装了Environment(以下是代码)

    但在我收到这些警告之后

    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
      复制到CUDA
      bin
      目录
    其他:

    • 安装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