【问题标题】:tensorflow multi-GPUs running at same time?tensorflow 多 GPU 同时运行?
【发布时间】:2018-04-21 14:33:20
【问题描述】:

为了了解分布式tensorflow的机制,我用multi-gpus写了一个简单的tensorflow测试代码

def cv_data(SEED):
    np.random.seed(SEED)
    return np.random.rand(5,2,2)


def test(data):
    for i in range(5):
        with tf.device('/gpu:%d' %i ):
            with tf.name_scope('cv%d' %i):
                x = tf.placeholder(tf.float32,[2,2],name='x')
                y = tf.matmul(x,x)
    init = tf.initialize_all_variables()
    sess = tf.Session()
    with sess as sess:
        writer=tf.summary.FileWriter("test_graph",sess.graph)
        sess.run(init)
        print("y is ")
        print(sess.run(y,feed_dict={'cv0/x:0':np.ones((2,2)),'cv1/x:0':2*np.ones((2,2)),'cv2/x:0':3*np.ones((2,2)),'cv3/x:0':4*np.ones((2,2)),'cv4/x:0':5*np.ones((2,2))))
        #tf.train.Saver.save(sess,"./model")
        writer.close()

但是 sess.run() 只执行 /gpu:4 的图,如何让所有 gpus 同时运行?

【问题讨论】:

    标签: tensorflow deep-learning distributed-computing multi-gpu


    【解决方案1】:

    您可以建立一个 Python 操作列表并将它们全部传递给sess.run。或者您可以汇总结果(例如tf.add_n)并运行该操作。

    无论哪种方式,您都可能希望在循环之外有一个占位符,这意味着您将提供该值并将其复制到所有设备。

    【讨论】:

    • 谢谢,你是这个意思吗? sess.run(['cv2/MatMul:0','cv1/MatMul:0'],feed_dict={'cv0/x:0':np.ones((2,2)),'cv1/x:0':2*np.ones((2,2)),'cv2/x:0':3*np.ones((2,2))}) #runing at the same time我发现它确实是并行运行的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 2021-04-18
    相关资源
    最近更新 更多