Tensorflow 运行 在 35% 的 GPU 利用率下,分析器显示奇数 cpu activity

Tensorflow running at 35% GPU utilization, profiler shows odd cpu activity

我正在 运行在 GPU 上使用 tensorflow 构建一个典型的 5 层卷积网络。当我 运行 在快速 1080 TI GPU 上时,我得到大约 35% 的 GPU 利用率。在较慢的 M40 上,我获得 80% 的利用率,在 970m 移动 GPU 上获得 97% 的利用率。

我已经实现了 tf.StagingArea GPU 队列,并通过一条警告消息确认 StagingArea 在每个训练步骤之前都不为空,它正在被异步馈送。

我已经 运行 下面看到的 tensorflow 分析器。值得注意的是,GPU 上的主要操作似乎在 15 毫秒内完成,但随后在 15 毫秒和 40 毫秒之间存在间隙,分析器未记录任何内容。在 40 毫秒处,出现三个与优化器相关的小 CPU 操作(全局步骤更新)。

此行为在每一步都是一致的。

知道这里为什么会有这样的延迟吗?

在英特尔 VTune Amplifier 的帮助下,有一种方法可以确定 CPU 在该间隔内发生的事情(该工具不是免费的,但有免费的全功能学术版和试用版) .您可以使用 this article 中的方法将时间线数据导入英特尔 VTune Amplifier 并在那里进行分析。您将需要框架域/源函数分组。展开 [No frame domain - Outside any frame] 行,您将获得您感兴趣的时间间隔内发生的热点列表。