2016-10-12 29 views
1

比方說,我的代碼TensorFlow(Python接口)以下行:TensorFlow會自動並行獨立操作嗎?

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

是的,它運行多個路徑並行計算單個session.run調用,由num_inter_device_parallelism_threads參數控制。你可以使用tf.add_n作爲你的總和。如果你有多個session.run,你需要自己並行化,比如說,在不同的Python線程中啓動它們。