【问题标题】:tensorflow transition to gpu versiontensorflow 过渡到 gpu 版本
【发布时间】:2019-10-01 15:05:13
【问题描述】:

我使用 tensorflow 已经有一段时间了,一切正常,直到我尝试切换到 gpu 版本。

卸载之前的tensorflow, pip 安装了 tensorflow-gpu (v2.0) 下载并安装了 Visual Studio Community 2019 下载并安装了 CUDA 10.1 下载并安装cuDNN

使用 CUDA 样本“deviceQuery_vs2019”进行测试,结果为阳性。 考试通过了 英伟达 GeForce rtx 2070

使用以前的工作文件运行测试并得到错误 tensorflow.python.framework.errors_impl.InternalError: cudaGetDevice() 失败。状态:未找到 cudaGetErrorString 符号。

经过一些研究,我发现支持的 CUDA 版本是 10.0 所以我降级了版本,更改了 CUDA 路径,但没有任何改变

使用此代码


import tensorflow as tf
print("Num GPUs Available: ", 
len(tf.config.experimental.list_physical_devices('GPU')))

我明白了

2019-10-01 16:55:03.317232: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library nvcuda.dll
2019-10-01 16:55:03.420537: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1618] Found device 0 with properties: 
Num GPUs Available:  1
name: GeForce RTX 2070 major: 7 minor: 5 memoryClockRate(GHz): 1.62
pciBusID: 0000:01:00.0
2019-10-01 16:55:03.421029: I tensorflow/stream_executor/platform/default/dlopen_checker_stub.cc:25] GPU libraries are statically linked, skip dlopen check.
2019-10-01 16:55:03.421849: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1746] Adding visible gpu devices: 0
[Finished in 2.01s]

CUDA 似乎可以识别卡,tensorflow 也是如此,但我无法摆脱错误: tensorflow.python.framework.errors_impl.InternalError: cudaGetDevice() 失败。状态:未找到 cudaGetErrorString 符号。

我做错了什么?我应该坚持使用 cuda 10.0 吗?我错过了一部分安装吗?

【问题讨论】:

  • tensorflow.org/install/gpu (含蓄地)说需要 CUDA 10.0,我在其他地方(github?)看到使用 10.0 而不是 10.1 的说明。不幸的是,我有 10.0 并且我有完全相同的错误,所以我也会对有用的解释性答案感兴趣。

标签: python tensorflow


【解决方案1】:

已解决,这主要是避免冲突的版本炼金术。 这是我所做的(据我所知,订单很重要)

  1. 卸载所有东西(tf、cuda、visual studio)
  2. pip install tensorflow-gpu
  3. 下载并安装 Visual Studio Community 2017(2019 不起作用)
  4. 我还从 Visual Studio 安装了 c++ 工作负载(不确定是否有必要,但它具有所需的编译器 Visual c++ 15.x)
  5. 下载并安装cuda 10.0(我有的是10.0.130)
  6. 进入系统环境变量(在windows栏中搜索)>高级>点击环境变量...
  7. 创建新的用户变量(不要与系统变量混淆)
  8. 变量名:CUDA_PATH,
  9. 变量值:浏览cuda目录下到版本目录(我的是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0)
  10. 指南说您需要 cudnn 7.4.1,但我收到了一个错误,即预期版本最低为 7.6。转到 nvidia 开发人员 cudnn 存档并下载“cudnn v7.6.0 for CUDA 10.0”(确保获得正确的文件)。解压,把cudnn文件放到对应的cuda目录(lib、include、bin)中。

从那里开始,一切都像魅力一样。我无法从 Visual Studio (devicequery) 构建 cuda 示例文件,但这不是至关重要的一步。 几乎每个错误都是由于文件版本不兼容造成的,我花了 3-4 天的时间来确定正确的组合。希望有所帮助:)

【讨论】:

  • 你救了我的命。我花了一整天的时间来完成这项工作,但没有成功。我不明白的是,为什么 tensorflow 2.0 甚至需要更低的 cuda 和 cudnn 版本才能运行。我的另一台电脑使用 tensorflow 1.14 和 cuda 10.1。但是 2.0 需要 cuda 10.0。不知道为什么!不过谢谢!!!
  • @m4l4 如果我们使用 anaconda ,很容易解决吗?
【解决方案2】:

tensorflow-gpu v2.0.0 是now available on conda,非常容易安装: conda install -c anaconda tensorflow-gpu。无需额外下载或安装 cuda。

【讨论】:

    【解决方案3】:

    我也有类似的问题。 结合我使用 Windows 8 和 pycharm 的事实。但是我最终还是用this post.弄明白了

    有效的组合:

    • 库达 10
    • 适用于 windows7 的 CuDNN 7.6
    • Tensorflow-GPU 2.0
    • 然后使用上述路径环境变量。

    重要的是设置环境变量后重启;)

    我没想到 tensorflow 2.2.将无法使用 cuda 11...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-26
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 2021-04-13
      • 2020-03-08
      相关资源
      最近更新 更多