2017-04-16 73 views
0

我知道訓練DNN當使用多個GPU的一個數據集在一次而不是分裂的數據集,用通常的方式多GPU是拆分數據集,每個分割數據集分配給每個GPU。在tensorflow

然而,有沒有使用多GPU爲不可分割的,整個數據集的計算速度更快的方式?我的意思是當GPU用於訓練網絡時,矩陣乘法在單GPU內並行化。我可以通過一次使用多個GPU來更快地實現矩陣乘法?

例如,我只有一張數據集圖片。由於我沒有多張圖片用於分割並分發到多個GPU,因此我希望利用所有GPU來爲此一個圖片計算做出貢獻。

在Tensorflow中可能嗎?我在互聯網上搜索,但沒有發現,因爲這是非常罕見的情況。

回答

0

你試圖做類似model parallelism。在tensorflow中做這件事有點難。

使用兩個GPU卡並行化matmul的一種方法。 A X B = C,A,B,C是形狀爲(m,k),(k,n),(m,n)的矩陣。 您可以:

  1. 分裂AA1A2(m/2, k), (m/2, k)形狀。

  2. 在GPU1上放置A1並在GPU2上放置A2

  3. 重複B到兩個GPU。

  4. 同時計算A1 X B = C1A2 X B = C2

  5. 連接C1C2得到C

Tensorflow這類運營商splitconcanate,由於乙方應在兩個GPU進行復制,可以將B上的parameter server