TensorFlow matmul会在GPU上并行运行吗?(或任何GPU操作。)

TensorFlow matmul会在GPU上并行运行吗?(或任何GPU操作。),tensorflow,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可能会并行运行ops(通过选项inter_op_parallelism_threads控制) 我的问题是:在这里(matmul)(并在此基础上扩展:在所有类型的GPU操作上),它真的会这样做吗?我认为

假设此代码:

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

session.run([y1, y2], ...)
TensorFlow可能会并行运行ops(通过选项
inter_op_parallelism_threads
控制)

我的问题是:在这里(
matmul
)(并在此基础上扩展:在所有类型的GPU操作上),它真的会这样做吗?我认为要做到这一点,它需要创建多个CUDA流,对吗?它是否自动(以及如何)做到这一点?或者它们将在GPU上顺序执行

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

(与之相关的是,它基本上会回答所有GPU操作将始终使用单个CUDA流,因此不会并行运行。但不确定这是否是最新的。)

来自官方:

运行时是否将部分图形执行并行化

TensorFlow运行时跨多个不同维度并行执行图形:

单独的ops具有并行实现,在CPU中使用多个内核,或在GPU中使用多个线程

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

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

官员说:

运行时是否将部分图形执行并行化

TensorFlow运行时跨多个不同维度并行执行图形:

单独的ops具有并行实现,在CPU中使用多个内核,或在GPU中使用多个线程

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

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


这是我在问题中已经提到的,它没有回答我的问题。这是我在问题中已经提到的,它没有回答我的问题。