TensorFlow matmul是否可以在GPU上并行运行? (或任何GPU操作。)

时间:2018-07-24 09:16:41

标签: tensorflow

假设此代码:

w1 = tf.get_variable(...)
w2 = tf.get_variable(...)
x = ...
y1 = tf.matmul(x, w1)
y2 = tf.matmul(x, w2)

session.run([y1, y2], ...)

TensorFlow可以并行运行操作(通过选项inter_op_parallelism_threads控制)。

我的问题:在这里(matmul)上是否真的适合这种情况(并扩展为:在各种GPU操作上)?我认为要这样做,就需要创建多个CUDA流,对吗?它会自动(以及如何)执行此操作吗?还是将它们在GPU上顺序执行?

(请注意,对于这个简单的示例,您还可以通过串联w1w2,然后执行一个matmul,然后进行拆分来重写代码。但这不是我的问题。)

(相关的是this question,这基本上可以回答为所有GPU ops都将始终使用单个CUDA流,因此不会并行运行。尽管不确定是否是最新的) )

1 个答案:

答案 0 :(得分:-1)

来自官方FAQ

  

运行时是否并行化图执行的一部分?

     

TensorFlow运行时在多个不同维度上并行执行图执行:

     

各个操作具有并行实现,使用CPU中的多个内核或GPU中的多个线程。

     

TensorFlow图中的独立节点可以在多个设备上并行运行,这使得使用多个GPU加速CIFAR-10训练成为可能。

     

Session API允许多个并行步骤(即,并行调用tf.Session.run。如果单个步骤未使用计算机中的所有资源,则运行时可以获得更高的吞吐量。