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,那么您只需要正确设置 PATH
和 LD_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:+:$PATH
。 echo $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却不能用的情况