假设我在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(或者在具有中间变量的几行中),那么我会失去这个好处吗?
答案 0 :(得分:1)
是的,它会并行运行多个session.run
调用计算路径,由num_inter_device_parallelism_threads
参数控制。您可以使用tf.add_n
作为总和。如果你有多个session.run
,你需要自己并行化,比如在单独的Python线程中启动它们。