gpt4 book ai didi

cuda - 如何在 Infiniband 中使用 GPUDirect RDMA

转载 作者:行者123 更新时间:2023-12-04 13:59:09 68 4
gpt4 key购买 nike

我有两台机器。每台机器上有多张特斯拉卡。每台机器上还有一张 InfiniBand 卡。我想通过 InfiniBand 在不同机器上的 GPU 卡之间进行通信。只需点对点单播就可以了。我当然想使用 GPUDirect RDMA,这样我就可以省去额外的复制操作。

我知道有一个 driver现在可以从 Mellanox 购买其 InfiniBand 卡。但它没有提供详细的开发指南。我也知道 OpenMPI 支持我要求的功能。但是 OpenMPI 对于这个简单的任务来说太重了,它不支持单个进程中的多个 GPU。

我想知道直接使用驱动程序进行通信是否可以获得任何帮助。代码示例,教程,任何东西都会很好。另外,如果有人可以帮助我在 OpenMPI 中找到处理此问题的代码,我将不胜感激。

最佳答案

要使 GPUDirect RDMA 正常工作,您需要安装以下内容:

  • Mellanox OFED 已安装(来自 http://www.mellanox.com/page/products_dyn?product_family=26&mtag=linux_sw_drivers)
  • 最近安装的 NVIDIA CUDA 套件
  • Mellanox-NVIDIA GPUDirect 插件(来自您在上面提供的链接 - 作为访客发布会阻止我发布链接:()

  • 应安装以上所有内容(按上面列出的顺序),并加载相关模块。
    之后,您应该能够注册在 GPU 视频内存上分配的内存用于 RDMA 事务。示例代码如下所示:
    void * gpu_buffer;
    struct ibv_mr *mr;
    const int size = 64*1024;
    cudaMalloc(&gpu_buffer,size); // TODO: Check errors
    mr = ibv_reg_mr(pd,gpu_buffer,size,IBV_ACCESS_LOCAL_WRITE|IBV_ACCESS_REMOTE_WRITE|IBV_ACCESS_REMOTE_READ);

    这将创建(在启用 GPUDirect RDMA 的系统上)一个内存区域,其中包含一个有效的内存 key ,您可以将其用于与我们的 HCA 进行的 RDMA 事务。

    有关在代码中使用 RDMA 和 InfiniBand 动词的更多详细信息,您可以引用此 document .

    关于cuda - 如何在 Infiniband 中使用 GPUDirect RDMA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31046386/

    68 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com