首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行tensorflow训练作业时Gpu util为0,上下文切换率很高

运行tensorflow训练作业时Gpu util为0,上下文切换率很高
EN

Stack Overflow用户
提问于 2017-08-15 10:27:17
回答 1查看 1.9K关注 0票数 1
代码语言:javascript
复制
tensorflow: 1.2.0
gpu: TITAN X (Pascal)
driver: 370.28

我运行了分布式tensorflow来训练图像分类模型,但没有看到gpu使用率(实际上,mnist或其他训练任务的gpu util也是0)。

在训练过程中有许多轮询系统调用( poll fd是/dev/nvidia0):

代码语言:javascript
复制
 poll([{fd=8, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}, {fd=14, events=POLLIN}, {fd=15, events=POLLIN}, {fd=17, events=POLLIN}, {fd=18, events=POLLIN}, {fd=19, events=POLLIN}, {fd=20, events=POLLIN}, {fd=21, events=POLLIN}], 10, 100 <unfinished ...>
 futex(0x2d1eca4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 3340677, {1502763800, 428734182}, ffffffff) = -1 ETIMEDOUT (Connection timed out)

vmstat显示了非常高的上下文切换,每秒数百万毫秒。

以前有人见过这个吗?

EN

回答 1

Stack Overflow用户

发布于 2017-09-08 15:49:32

我以前遇到过同样的问题,但这是因为我的GPU没有设置为运行--我在CPU上运行了tensorflow,但我以为它是在gpu上运行的。如果你把每件事都做对了,事情就不会是这样了。

1)您可以使用nvidia-smi检查:尽管gpu util为0%,但gpu内存util是否也为0%?如果进程中根本没有任何进程呢?

--如果是这样,您的gpu根本没有被使用,tensorflow必须在CPU上运行(您可以使用top来检查cpu使用率,如果它高于100%,则这是程序实际上在CPU上并行的额外证明)

在这种情况下,您应该检查是否安装了tensorflow的gpu版本。你可以在www.tensorflow.org中找到两个不同版本的安装介绍。CPU版本的tensorflow可能永远不会在GPU上运行。

此外,一些机器环境要求您明确指定要使用的gpu设备。使用如下命令进行检查:

CUDA_VISIBLE_DEVICES=0 python rnn_mnist.py

(注=?必须采用正确的格式,例如CUDA_VISIBLE_DEVICES=无效但不会发出警告,程序将在CPU上运行)

2)如果不是这样,python实际上是在GPU上运行的,只是util是0%。还有一种可能是数据获取耗费了太多的时间,这是在CPU上,而GPU总是在等待数据,所以util是平均0%。

--最可能的原因是您将batch_size设置得太小,请尝试128或1024。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45685676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档