运行张量流时的低挥发性GPU利用率

时间:2016-12-26 11:03:51

标签: tensorflow neural-network gpu

我无法使tensorflow有效地在我的系统上使用Nvidia GeForce GTX 1080 GPU。我将代码缩减为下面显示的非常简单的版本;我只是循环遍历应该使用GPU的session.run()操作,数据只被提取一次并在循环中重用,所以这段代码应该只使用GPU。

input_training_data=self.val_data[batch_size, :] input_training_label=self.val_label[batch_size, :] feed_dict = self.get_feed_dict(input_training_data, input_training_label) for i in range(1000): acc = sess.run(cost, feed_dict)

我注意到对于batch_size = 16,我的GPU使用率大致稳定在8%左右,因为我将batch_size增加到32,最大GPU使用率增加到9-12%,但利用率大部分保持在0%且来自它不时跳到15%-25%并立即回落到0%。对于较大的batch_sizes,这种模式仍在继续,基本上任何大于16的批量大小都会增加最大利用率,但利用率大多保持在0,并且只会不时出现峰值。我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。我的问题是:我的计算部分在GPU和CPU上执行(因此两个设备之间存在大量通信,导致GPU利用率较低) 我读过另一个帖子:

  1. 不要在循环中使用data_dictornaries(改为使用Tensorvariable)
  2. float64数据类型存在问题(仅在CPU上计算HAS) - >使用float32数据类型(如果可能)
  3. 使用Olivier Moindrot建议的Profiler检查是否在CPU上显式运行了任何内容。然后尝试将所有内容都带到GPU
  4. 顺便提一下,关于你的代码的提示: 您的会话(默认图表)将逐渐增长,直到可能出现OutOfMemory异常... - >我在每次x迭代时关闭会话,同时重置默认图...

相关问题