【问题标题】:CUDA-aware MPI for two GPUs within one K80一个 K80 内的两个 GPU 的 CUDA 感知 MPI
【发布时间】:2016-11-24 12:53:29
【问题描述】:

我正在尝试优化名为 LAMMPS (https://github.com/lammps/lammps) 的 MPI+CUDA 基准测试的性能。现在我正在运行两个 MPI 进程和两个 GPU。我的系统有两个插座,每个插座连接到 2 个 K80。由于每个 K80 内部包含 2 个 GPU,因此每个插槽实际上连接到 4 个 GPU。但我只在一个插槽中使用 2 个内核,以及连接到该插槽的 2 个 GPU(1 K80)。 MPI编译器为MVAPICH2 2.2rc1,CUDA编译器版本为7.5。

那是背景。我分析了应用程序,发现通信是性能瓶颈。我怀疑这是因为没有应用 GPUDirect 技术。所以我切换到 MVAPICH2-GDR 2.2rc1 并安装了所有其他必需的库和工具。但是 MVAPICH2-GDR 需要 Infiniband 接口卡,这在我的系统上不可用,所以我有运行时错误“通道初始化失败。系统上没有找到活动的 HCA”。根据我的理解,如果我们只想在一个节点上使用 1 K80 以内的 GPU,则不需要 Infiniband 卡,因为 K80 具有用于这两个 GPU 的内部 PCIe 开关。这些是我的疑惑。为了让问题更清楚,我将它们列出如下:

  1. 在我的系统中,一个套接字连接到两个 K80。如果一个 K80 中的两个 GPU 需要与另一个 K80 中的 GPU 通信,那么我们要使用 GPUDirect 就必须有 IB 卡,是吗?

  2. 如果我们只需要使用1K80内的两个GPU,那么这两个GPU之间的通信不需要IB卡,对吧?但是,MVAPICH2-GDR 至少需要一张 IB 卡。那么有什么办法可以解决这个问题吗?或者我必须在系统上插入 IB 卡?

【问题讨论】:

    标签: cuda mpi infiniband multi-gpu mvapich2


    【解决方案1】:

    在我的系统中,一个插座连接到两个 K80。如果一个 K80 中的两个 GPU 需要与另一个 K80 中的 GPU 通信,那么我们要使用 GPUDirect 就必须有 IB 卡,是吗?

    唯一需要 IB 卡的情况是当您具有从系统到系统的 MPI 通信(GPU 或其他)时。同一系统中的 GPU 不需要 IB 卡即可相互通信。下面是有关在此(单系统)设置中使用 GPUDirect 的更多信息。

    如果我们只需要使用1个K80内的两个GPU,那么这两个GPU之间的通信就不需要IB卡了,对吧?但是,MVAPICH2-GDR 至少需要一张 IB 卡。那么有什么办法可以解决这个问题吗?或者我必须在系统上插入 IB 卡?

    MVAPICH2-GDR中的GDR指的是GPUDirect-RDMA。 GPUDirect 是一组允许 GPU 直接相互通信的技术的总称。

    对于同一系统中的 GPU,GPUDirect 技术称为 Peer-to-Peer。 K80 上的两个 GPU 应该始终能够使用点对点相互通信,您可以使用名称中包含 P2P 的 CUDA 示例代码(例如 simpleP2P)自己验证这一点。此示例代码还将告诉您您的系统是否能够支持同一系统中任意 2 个 GPU 之间的 P2P。

    对于通过 IB(Infiniband)网络连接的独立系统中的 GPU,还有一种称为 GPUDirect-RDMA 的额外 GPUDirect 技术。这允许独立系统中的两个 GPU 通过 IB 链路相互通信。

    因此,由于 MVAPICH2-GDR 包含与 IB 相关的 GPUDirect RDMA,它可能会默认寻找 IB 卡。

    但是,即使在单个系统中的 GPU 之间(例如使用 K80),您也应该能够通过使用支持 GPUDirect 的 MPI(包括某些风格的 MVAPICH2)来获得通信优势。这种用法简称为“CUDA-aware MPI”,因为它使用 GPUDirect P2P,但不一定是 RDMA。

    详细的教程和如何设置它的演练超出了我在 SO 答案中所能提供的范围,但有关这种用法的更多信息,我建议您参考两篇彻底涵盖该主题的博客文章,第一个是here,第二个是here。更多关于 GPUDirect-RDMA 的信息是here

    【讨论】:

    • 谢谢罗伯特。你的解释很清楚。终于明白这些术语之间的区别和联系了。
    猜你喜欢
    • 2021-01-30
    • 2015-03-10
    • 2012-08-16
    • 2012-07-07
    • 2016-02-21
    • 2013-09-19
    • 2015-12-11
    • 2017-06-21
    • 2017-10-25
    相关资源
    最近更新 更多