2017-03-18 4 views
0

私はTensorFlowに移植しているシステムと通信するために利用できるリソースをどのように扱うかについていくつかの決定をしています。私はBaseGPUDevice :: Init()のコードを理解しようとしていますafter line 209.TensorFlow:なぜGPUデバイスは1つのデバイスコンテキストしか持たないのですか?

コードはmax_streamsサイクルのループで実行され、デバイス間の通信用の一連のストリームが作成され、そのストリームのセットを使用するGPUDeviceContextがインスタンス化されます。

次に、FillContextMap()の本文では、洗練された関数が呼び出され、使用可能なストリーム間のストリームの最適な割り当てが決定されます。最良のストリームは、返されたマップ内の作成されたストリームの総数に対してモジュロされ、残りの関数では ノードをデバイスコンテキストに割り当てるために使用されます。

これまでのところ、とても良いです。私たちは、リソースをうまく配布するために多くのコードを使用するようなシステムを持っています。しかし、私をスローするのはで、max_streamsの値を1にハードコーディングすることになります。これは、279行目以降のすべてのコンテキストマッピングコードが呼び出されるべきではないことを意味します。

GPUデバイスが複数のコンテキストを持つ将来の日付に対して、適用されなくなった古いコードやプレースホルダコードを見ていますか、GPUデバイスを複数のコンテキストで作成することができない状況があります文脈?

答えて

0

ええ、あなたは少し古くなっているコードを見ています。私たちは複数の計算ストリームを試してみたところ、重要なユースケースではあまり役に立ちませんでした。私たちは技術的に複数のストリームをサポートしていますが、これをオンにすることはありません。

将来的には複数のコンピューティングストリームを使用して再生を開始したいので、そこにコードを入れてもいいです。

デバイスは、必要な数のDeviceContextを使用できます。 GPUではいくつかしか使用せず、FillContextMapを使用してマッピングを行いますが、実際にどのように使用するかはハードウェアによって異なります。

関連する問題