多 GPU 下的 Tensorflow 处理性能

标签 tensorflow multi-gpu multiple-gpu

friend 们! 我有一个关于使用多个 GPU 进行处理的问题。 我使用 4 个 GPU,并以如下 3 种方式尝试了简单的 A^n + B^n 示例。

  1. 单 GPU

    with tf.device('/gpu:0'):
         ....tf.matpow codes...
    
  2. 多 GPU

    with tf.device('/gpu:0'):
         ....tf.matpow codes...
    with tf.device('/gpu:1'):
         ....tf.matpow codes...
    
  3. 没有指定特定的 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/

相关文章:

python - 如何查看安装另一个包需要哪些包?

opencl - 关于在多个 GPU 上使用 openCL 的任何新想法?

python - Tensorboard 未在 Windows 上填充图形

tensorflow - 张量板:错误:无效选择: 'code'(从 'serve' 、 'dev' 中选择)- 尝试运行张量板时

memory - cudaMemGetInfo 在 GTX 690 的两个设备上返回相同数量的可用内存

java - 将 Java 与 Nvidia GPU (CUDA) 结合使用

cuda - 我可以在没有 SLI 支持 CUDA 计算的系统中使用两 block NVIDIA GPU 卡吗?

c++ - 多 GPU 环境中单应用线程的 CUDA 5.0 上下文管理

python - 在 Tensorflow 中执行特征选择