2017-04-16 1 views
0

複数のGPUを使用する通常の方法は、データセットを分割して各GPUに割り当てることです。テンソルフローでデータセットを分割する代わりに、一度に1つのデータセットに複数のGPUを使用する

しかし、分割されていないデータセット全体の高速計算に複数のGPUを使用する方法はありますか?私は、GPUがトレーニングネットワークに使用されるとき、マトリックス乗算が単一のGPU内で並列化されることを意味します。一度に複数のGPUを使用することで、この行列の乗算を高速化できますか?

たとえば、データセットには1つの画像しかありません。複数のGPUに分割して配布するための複数の画像がないので、この1枚の画像の計算にすべてのGPUを使用したいと考えています。

Tensorflowで可能ですか?私はインターネットで検索しましたが、非常にまれであるため何も見つかりませんでした。

答えて

0

model parallelismのような操作をしようとしています。テンソルフローでそれを行うのは少しハッキーです。

2つのGPUカードでmatmulを並列化する1つの方法。 A X B = C,A,B,Cは、形状が(m,k),(k,n),(m,n)の行列です。 次のことが可能です。

  1. (m/2, k), (m/2, k)の形状にA1A2Aを分割します。

  2. GPU1にA1GPU2A2があります。

  3. Bを両方のGPUに複製します。

  4. A1 X B = C1A2 X B = C2を同時に計算します。

  5. C1C2を連結してCを得る。 Bは、両方のGPU上で複製されなければならないので、

Tensorflowは、splitconcanateのような演算子を提供し、あなたはparameter serverにBを配置することができます。

関連する問題