尽管安装了所有先决条件,但 TensorFlow 并未使用 GPU

问题描述

我已经安装了 CUDA 11.0、cuDNN 8.0.5(用于 CUDA 11.0)和 tensorflow-gpu 2.4.1。在 Windows 10 专业版下。 我正在使用以下代码检查安装:

import tensorflow as tf
from tensorflow.python.client import device_lib
print(tf.version)
print(tf.test.is_built_with_cuda())
print()
print(tf.config.list_physical_devices())
print()
print(device_lib.list_local_devices())

输出似乎表明 TensorFlow 看到了 GPU:

init.py'>

正确

[PhysicalDevice(name='/physical_device:cpu:0',device_type='cpu'),

PhysicalDevice(name='/physical_device:GPU:0',device_type='GPU')]

[name: "/device:cpu:0" device_type: "cpu" memory_limit: 268435456 locality { } 化身:2790105922589511936,名称:“/device:GPU:0” device_type: "GPU" memory_limit: 3173331764 locality { bus_id: 1
链接 { } } 化身:12842674850440179486 physical_device_desc: “设备:0,名称:NVIDIA Quadro M1200,pci 总线 ID:0000:01:00.0, 计算能力:5.0" ]

PATH 中的相关条目:

C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v11.0\bin

C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v11.0\extras\CUPTI\libx64

C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v11.0\include

C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v11.0\libnvvp

这是CUDA_PATH(虽然可能是不必要的,因为我将cuDNN的.dll、.h和.lib文件复制到了CUDA的相应目录中):

C:\cudnn-11.0-windows-x64-v8.0.5.39\cuda\bin

然而,当我训练卷积神经网络时,cpu 负载飙升至几乎 100%,而 GPU 负载保持在 0%。 我需要做什么才能让 TensorFlow 使用 GPU?

更新: 我尝试了以下代码

import numpy as np
import tensorflow as tf
tf.debugging.set_log_device_placement(True)

for i in range(100):
    a = tf.constant(np.random.randn(1000,1000))
    b = tf.constant(np.random.randn(1000,1000))
    c = tf.matmul(a,b)
    print(c[465][266])

输出(部分显示)清楚地表明 TensorFlow 认为它正在使用 GPU:

在设备中执行 op MatMul

/job:localhost/replica:0/task:0/device:GPU:0 执行 op StridedSlice 在设备 /job:localhost/replica:0/task:0/device:GPU:0 执行操作

设备 /job:localhost/replica:0/task:0/device:GPU:0 中的 StrdedSlice tf.Tensor(48.741279799952544,shape=(),dtype=float64)

不过,NZXT Cam显示 cpu 使用率。不过,当我使用 Zoom 时,它确实显示了 GPU 利用率,因此 NZXT Cam 不是问题。 TensorFlow 似乎认为它在使用 GPU 而实际上并没有这样做......

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...