システム上で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)
は、私は32に9から12パーセントに最大GPUの使用量は増加するが利用滞在をBATCH_SIZEを増やすようBATCH_SIZE = 16のために、私は、8%前後で、主に着実にGPUの使用状況を取得することに気づきましたほとんど0%であり、时々それは15%-25%にジャンプし、すぐに0%に戻る。このパターンは、より大きなbatch_sizeで継続しますが、基本的に16より大きいバッチサイズは最大使用率を増加させますが、使用率はほとんど0のままであり、時折上昇するだけです。私はここで何が欠けていますか?
各操作の正確な時刻を得るためにプロファイリングツールを適用することができます。[here](http://stackoverflow.com/documentation/tensorflow/3850/)個々の操作の実行時間を測定する)。なぜGPUの使用率が低いのかを理解するのに役立つはずで、質問を詳細で更新することができます。 –
CPUに遅い演算が実行され、GPUが処理を待つか、計算が小さすぎるため、データ転送の転送がGPUに追いつかないというボトルネックがあります。 [ここ](https://github.com/tensorflow/tensorflow/issues/5722#issuecomment-266297116)のようなデータ転送を最適化するためのいくつかのトリックがあります。 –