2017-04-16 76 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