friend 们! 我有一个关于使用多个 GPU 进行处理的问题。 我使用 4 个 GPU,并以如下 3 种方式尝试了简单的 A^n + B^n 示例。
单 GPU
with tf.device('/gpu:0'): ....tf.matpow codes...
多 GPU
with tf.device('/gpu:0'): ....tf.matpow codes... with tf.device('/gpu:1'): ....tf.matpow codes...
没有指定特定的 GPU(我想可能使用了所有 GPU)
....just tf.matpow codes...
当尝试这样做时,结果令人难以理解。 结果是 1.单GPU:6.x秒 2. 多个 GPU(2 个 GPU) : 2.x 秒 3.没有指定特定的GPU(可能是4个GPU):4.x秒
我不明白为什么#2 比#3 快。 有人可以帮助我吗?
谢谢。
最佳答案
虽然 Tensorflow 调度程序在单 GPU 上运行良好,但它在优化多 GPU 上的计算布局方面还不够出色。 (尽管目前正在研究中。)如果没有进一步的细节,很难确切地知道发生了什么。为了获得更好的了解,您可以记录调度程序实际放置计算的位置。您可以通过在创建 tf.Session
时设置 log_device_placement
标志来完成此操作:
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
关于多 GPU 下的 Tensorflow 处理性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41569242/