我無法有效地使tensorflow在我的系統上使用Nvidia GeForce GTX 1080 GPU。我將我的代碼簡化爲下面顯示的簡單版本;我只循環使用GPU的session.run()操作,數據只取一次並在循環內重用,所以這段代碼應該只使用GPU。運行張量流時低揮發性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,並且只會不時出現峯值。我在這裏錯過了什麼?
您可以嘗試應用分析工具以獲取每個操作的確切時間,請參閱示例[here](http://stackoverflow.com/documentation/tensorflow/3850/測量最處決時間的個體操作)。它應該可以幫助您理解爲什麼GPU利用率很低,並且可以通過更多信息更新您的問題。 –
你可能有一些瓶頸,一些緩慢的操作被放置在CPU上,而GPU需要等待它完成,或者你的計算太小,並且你的數據傳輸傳輸跟不上GPU。有一些技巧來優化數據傳輸,如[here](https://github.com/tensorflow/tensorflow/issues/5722#issuecomment-266297116) –