#tensorflow
#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 обрабатывает приведенное выше утверждение параллельно, существуют ли какие-либо ограничения на это? Например, если бы я накапливал z в цикле for (или в нескольких строках с промежуточными переменными), потерял бы я это преимущество?
Ответ №1:
Да, он параллельно выполняет несколько путей вычисления одного session.run
вызова, управляемых num_inter_device_parallelism_threads
параметром. Вы можете использовать tf.add_n
для своей суммы. Если у вас их несколько session.run
, вам нужно распараллелить вещи самостоятельно, скажем, запустив их в отдельных потоках Python.