TensorFlow 不能使用 GPU。 tf.test.is_gpu_available() 显示 GPU 但不能使用

Posted

技术标签:

【中文标题】TensorFlow 不能使用 GPU。 tf.test.is_gpu_available() 显示 GPU 但不能使用【英文标题】:Tensorflow can't use GPU. tf.test.is_gpu_available() show GPU but cannot use 【发布时间】:2020-02-05 18:55:34 【问题描述】:

我有 Ubuntu 18.04。 Python 3.7.3、张量流 2.0.0

这是我的 cuda 版本:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85

我的电脑是UX430UQ,显卡是GeForce 940MX

这是 nvidia-smi 的输出:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.87.01    Driver Version: 418.87.01    CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce 940MX       On   | 00000000:01:00.0 Off |                  N/A |
| N/A   45C    P0    N/A /  N/A |    283MiB /  2004MiB |      9%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1014      G   /usr/lib/xorg/Xorg                            24MiB |
|    0      1164      G   /usr/bin/gnome-shell                          47MiB |
|    0      1440      G   /usr/lib/xorg/Xorg                           123MiB |
|    0      1615      G   /usr/bin/gnome-shell                          84MiB |
+-----------------------------------------------------------------------------+

这是我run sudo apt-get install cuda时的输出:

Reading package lists...
Building dependency tree...
Reading state information...
cuda is already the newest version (10.1.243-1).
0 upgraded, 0 newly installed, 0 to remove and 138 not upgraded.

这是我运行tf.test.is_gpu_available()时的输出

2019-10-08 21:04:37.186069: 我 tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1006] 成功 从 SysFS 读取的 NUMA 节点具有负值 (-1),但必须有 至少有一个 NUMA 节点,所以返回 NUMA 节点零

2019-10-08 21:04:37.188434: 我 tensorflow/core/common_runtime/gpu/gpu_device.cc:1618] 找到设备 0 具有属性:

名称:GeForce 940MX 主要:5 次要:0 memoryClockRate(GHz):1.2415

pciBusID:0000:01:00.0

2019-10-08 21:04:37.188863: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] 可以 不加载动态库'libcudart.so.10.0';错误: libcudart.so.10.0:无法打开共享对象文件:没有这样的文件或 目录; LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64

2019-10-08 21:04:37.189156: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] 可以 不加载动态库'libcublas.so.10.0';错误: libcublas.so.10.0:无法打开共享对象文件:没有这样的文件或 目录; LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64

2019-10-08 21:04:37.189426: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] 可以 不加载动态库'libcufft.so.10.0';错误: libcufft.so.10.0:无法打开共享对象文件:没有这样的文件或 目录; LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64

2019-10-08 21:04:37.189687: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] 可以 不加载动态库'libcurand.so.10.0';错误: libcurand.so.10.0:无法打开共享对象文件:没有这样的文件或 目录; LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64

2019-10-08 21:04:37.189946: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] 可以 不加载动态库'libcusolver.so.10.0';错误: libcusolver.so.10.0:无法打开共享对象文件:没有这样的文件或 目录; LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64

2019-10-08 21:04:37.190202: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] 可以 不加载动态库'libcusparse.so.10.0';错误: libcusparse.so.10.0:无法打开共享对象文件:没有这样的文件或 目录; LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64

2019-10-08 21:04:37.190236: 我 tensorflow/stream_executor/platform/default/dso_loader.cc:44] 成功打开动态库libcudnn.so.7

2019-10-08 21:04:37.190244: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1641] 无法 dlopen 一些 GPU 库。请确保提到的缺失库 如果您想使用 GPU,以上已正确安装。跟着 在https://www.tensorflow.org/install/gpu 指导如何下载 并为您的平台设置所需的库。

跳过注册 GPU 设备...

2019-10-08 21:04:37.190261: 我 tensorflow/core/common_runtime/gpu/gpu_device.cc:1159] 设备 将 StreamExecutor 与强度为 1 的边矩阵互连:

2019-10-08 21:04:37.190268: 我 张量流/核心/common_runtime/gpu/gpu_device.cc:1165] 0

2019-10-08 21:04:37.190276: 我 张量流/核心/common_runtime/gpu/gpu_device.cc:1178] 0:N

【问题讨论】:

让我们看看:1 您安装的 TF 需要 CUDA 10.0:Could not load dynamic library 'libcudart.so.10.0',2.您安装的 CUDA 版本似乎是 9.1:Cuda compilation tools, release 9.1, V9.1.85,以及 3.您的 LD_LIBRARY_PATH 指向 CUDA 8.0 :LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64 如果您仔细安装 CUDA,可能会解决大部分问题。 CUDA 10.0 linux 安装指南是here。您应该从正确安装 CUDA 10.0 开始。 嗨,nvidia-smi 显示我已经安装了 Cuda 10.1,但不知何故 nvcc - 版本是 9.1.85。我只是将 nvidia-smi 的输出包含为编辑 nvidia-smi 不会按照您认为的方式告诉您已安装的 CUDA 版本,请参阅here。无论如何,如果您确实正确安装了 CUDA 10.1,那么您只需要正确设置 PATHLD_LIBRARY_PATH 变量即可使用它,这在我已经链接的 CUDA linux 安装指南中有所介绍(步骤 7)。但是,您的 TF 需要 CUDA 10.0,并且您不能使用 CUDA 10.1 作为 TF 的 CUDA 10.0 的替代品/替代品 我只做了两个步骤:1)export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64$LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH 和 2)export PATH=/usr/local/cuda-10.0/bin$PATH:+:$PATHecho $LD_LIBRARY_PATH 的输出是 /usr/local/cuda-10.1/lib64,但 tf.test.is_gpu_available() 仍然是 LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64。此外,当我运行sudo apt-get install cuda 时,它会显示cuda is already the newest version (10.1.243-1).。 (我刚刚将其编辑到问题中)。对于 TF 的 CUDA 10.1 和 CUDA 10.0,我应该怎么做? 运行 export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.1$PATH:+:$PATH 后,nvcc --version 现在显示 Cuda compilation tools, release 10.1, V10.1.243。但是,即使 echo $LD_LIBRARY_PATH 的输出为 /usr/local/cuda-10.0/lib64,运行 tf.test.is_gpu_available() 仍会显示 LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64 【参考方案1】:

你应该使用 cuda10 和 cudnn7.4 参考这个web

【讨论】:

以上是关于TensorFlow 不能使用 GPU。 tf.test.is_gpu_available() 显示 GPU 但不能使用的主要内容,如果未能解决你的问题,请参考以下文章

tensorflow 和 torch.cuda 可以找到 GPU,但 Keras 不能

tensorflow使用CPU可以跑(运行),但是使用GPU却不能用的情况

mac 上keras不能用GPU?

tensorflow-gpu 不适用于 Blas GEMM 启动失败

tensorflow cpu版本和gpu版本可以同时安装吗

tensorflow怎么gpu加速