2

友達!マルチGPUでの処理について質問です。私は 4 つの gpu を使用しており、以下のような 3 つの方法で単純な A^n + B^n の例を試しました。

  1. シングル GPU

    with tf.device('/gpu:0'):
         ....tf.matpow codes...
    
  2. 複数の GPU

    with tf.device('/gpu:0'):
         ....tf.matpow codes...
    with tf.device('/gpu:1'):
         ....tf.matpow codes...
    
  3. 特定の GPU は指定されていません (おそらくすべての GPU が使用されていると思います)

    ....just tf.matpow codes...
    

これを試してみると、結果は理解できませんでした。結果は 1. 単一の GPU : 6.x 秒 2. 複数の GPU (2 つの GPU) : 2.x 秒 3. 特定の GPU が指定されていない (おそらく 4 つの GPU) : 4.x 秒

#2 が #3 よりも速い理由がわかりません。誰でも私を助けることができますか?

ありがとう。

4

2 に答える 2

2

Tensorflow スケジューラは単一の GPU ではうまく機能しますが、複数の GPU での計算の配置を最適化するのにはまだ適していません。(ただし、現在作業中です。) 詳細が不明なため、何が起こっているのかを正確に知ることは困難です。より良い全体像を得るために、スケジューラによって計算が実際に配置されている場所をログに記録できます。log_device_placementを作成するときにフラグをオンに設定することで、これを行うことができますtf.Session

# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
于 2017-01-11T17:43:26.160 に答える