我正在使用tensorflow在一台机器上的几个GPU中训练模型。但是,我发现速度比单个GPU上的训练要慢得多。我想知道张量流是否并行或按顺序在不同的GPU中执行子模型。例如:
x = 5
y = 2
with tf.device('/gpu:0'):
z1 = tf.multiply(x, y)
with tf.device('/gpu:1'):
z2 = tf.add(x, y)
/gpu:0
和/gpu:1
内的代码是否按顺序执行?如果按顺序执行,如何使两个部分并行执行?假设这两部分不相互依赖。
答案 0 :(得分:1)
在TensorFlow中,只有第二个块(在gpu:1内)会执行,因为没有任何东西取决于第一个块。
答案 1 :(得分:0)
是的,它按顺序执行,由于其性质,with块将等到计算完成后再移动到下一个代码块。
您可以从tensorflow实现队列和线程,以利用您的额外计算。
请参考tensorflow的thsi教程: https://www.tensorflow.org/api_guides/python/threading_and_queues