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的调用)并行运行。如果单个步骤未使用计算机中的所有资源,这将使运行时获得更高的吞吐量
这是我在问题中已经提到的,它没有回答我的问题。这是我在问题中已经提到的,它没有回答我的问题。