当分配和放置在不同设备中时,tensorflow变量分配真正发生在哪里

时间:2018-12-11 03:31:28

标签: python tensorflow

我对张量流中的变量分配和位置感到困惑

如果我们在某个设备中创建变量,例如在gpu0中。而我们将需要在其他设备(例如gpu2)中更新此变量的值。确切的任务将在哪里发生?

def foo():
    tf.reset_default_graph()
    with tf.device("/gpu:0"):
        x = tf.Variable(3, name='x')
    with tf.device("/gpu:1"):
        y = tf.Variable(6, name='y')
    return x, y

x, y = foo()

with device("/gpu:2")  
    z1 = tf.assign(x, 1)    ---(1)
    z2 = tf.assign(y, 2)    ---(2)
    z3 = tf.multipy(x, y)   ---(3)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    sess.run(z1)
    sess.run(z2)
    sess.run(z3)

对于上面的示例,我的理解是,z1 / z2将会在gpu2上发生,但是实际上,x将在gpu0中更新,而y将在gpu1中更新。在-(3)中,gpu2将再次从gpu0和gpu1获取x / y,然后在gpu2中的乘法运算中完成

如果我想念的东西请纠正我

0 个答案:

没有答案