TensorFlow是否自动并行化独立操作?

时间:2016-10-12 20:50:13

标签: tensorflow

假设我在TensorFlow(Python界面)中有以下代码行:

z = tf.matmul(W_1,x_1) + tf.matmul(W_2,x_2) + ... + tf.matmul(W_N, x_N) + b

以上N个操作都是独立的,结果在z中累计。例如,TensorFlow会独立启动N个内核然后累积结果,还是会连续处理N个操作?

我问,因为这会影响我需要花费多少精力去操作矢量化,这会降低可读性和便利性。我希望TF能够异步启动所有N GPU内核,在z中累积输出,并返回结果。

另外,假设TF确实并行处理上述语句,对此有任何限制吗?例如,如果我要在for循环中累积z(或者在具有中间变量的几行中),那么我会失去这个好处吗?

1 个答案:

答案 0 :(得分:1)

是的,它会并行运行多个session.run调用计算路径,由num_inter_device_parallelism_threads参数控制。您可以使用tf.add_n作为总和。如果你有多个session.run,你需要自己并行化,比如在单独的Python线程中启动它们。