我无法使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,并且只会不时出现峰值。我在这里缺少什么?
答案 0 :(得分:3)
我遇到了同样的问题。我的问题是:我的计算部分在GPU和CPU上执行(因此两个设备之间存在大量通信,导致GPU利用率较低) 我读过另一个帖子:
顺便提一下,关于你的代码的提示: 您的会话(默认图表)将逐渐增长,直到可能出现OutOfMemory异常... - >我在每次x迭代时关闭会话,同时重置默认图...