TensorFlow-GPU未使用GPU且输出显示N而非Y的问题求助
别担心,先帮你拆解一下你困惑的日志信息和实际情况:
关于日志里的0: N
这个N完全不是GPU未启用的标志!它是TensorFlow打印的GPU设备互连矩阵——因为你只有1块GPU,矩阵里只需要显示这台GPU和自身的连接状态,N代表"No Peer-to-Peer Communication",意思是单GPU场景下不需要跨GPU的直接通信,这是完全正常的输出,和GPU是否被使用没有关系。
反而后面这条日志已经明确告诉你GPU被成功初始化并分配了资源:
2018-05-26 17:39:54.449194: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1053] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 1416 MB memory) -> physical GPU (device: 0, name: GeForce GTX 960M, pci bus id: 0000:01:00.0, compute capability: 5.0)
这条日志说明TensorFlow已经正确识别到你的GeForce GTX 960M,并且给它分配了1416MB显存,设备已经就绪。
如何验证GPU真的在工作?
给你几个简单的验证方法:
- 实时监控GPU状态:在运行TensorFlow代码的同时,打开另一个终端反复执行
nvidia-smi,观察GPU-Util(GPU使用率)和Memory-Usage(显存占用),如果代码执行时这两个数值明显上升,说明GPU正在处理计算任务; - 打印可用设备列表:在Python里执行这段代码,会列出所有TensorFlow能使用的设备,确认GPU在列表中:
from tensorflow.python.client import device_lib print(device_lib.list_local_devices())
- 对比运行速度:写一个大一点的张量运算(比如大矩阵乘法或者简单的CNN),分别用
/cpu:0和/gpu:0设备执行,GPU版本的运行时间应该会比CPU版本快很多(尤其是计算量越大,差距越明显)。
额外说明
你看到的AVX2 FMA警告只是提示TensorFlow编译时没有用到CPU的这些高级指令,不影响GPU的正常使用,完全可以忽略;另外你的NVIDIA驱动版本396.24和当时的TensorFlow版本是兼容的(2018年的TensorFlow要求驱动版本≥384),驱动层面没有问题。
总的来说,你的TensorFlow-GPU已经正常工作了,那个0: N只是单GPU场景下的正常日志,不用再为此焦虑啦!
内容的提问来源于stack exchange,提问作者Hobbes




