【问题标题】:GPUDirect RDMA transfer from GPU to remote hostGPUDirect RDMA 从 GPU 传输到远程主机
【发布时间】:2012-08-10 15:33:24
【问题描述】:

场景:

我有两台机器,一个客户端和一个服务器,用 Infiniband 连接。服务器机器有一个 NVIDIA Fermi GPU,但客户端机器没有 GPU。我有一个在 GPU 机器上运行的应用程序,它使用 GPU 进行一些计算。 GPU 上的结果数据从不被服务器机器使用,而是直接发送到客户端机器而不进行任何处理。现在我正在使用cudaMemcpy 将数据从 GPU 获取到服务器的系统内存,然后通过套接字将其发送到客户端。我正在使用SDP 启用RDMA 进行此通信。

问题:

在这种情况下,我是否可以利用 NVIDIA 的 GPUDirect 技术摆脱cudaMemcpy 调用?我相信我已正确安装了 GPUDirect 驱动程序,但如果不先将数据复制到主机,我不知道如何启动数据传输。

我的猜测是无法将 SDP 与 GPUDirect 结合使用,但是否有其他方法可以启动从服务器机器的 GPU 到客户端机器的 RDMA 数据传输?

奖励:如果有人有一种简单的方法来测试我是否正确安装了 GPUDirect 依赖项,那也会很有帮助!

【问题讨论】:

  • 在 CUDA 代码示例 SDK 中,您可以找到一些演示您想要的示例代码 - developer.nvidia.com/cuda/cuda-cc-sdk-code-samples。您需要使用 cudaMemcpyAsync 异步复制到 GPU w.r.t 主机。
  • 我有 CUDA SDK,但我没有看到任何使用 GPUDirect 技术的示例。您知道我应该查看的特定示例程序吗?
  • 我目前没有下载它,但我认为我提供的链接中的“使用多 GPU 进行简单点对点传输”示例就是你想要的。
  • 如果我错了,我会去看看并回帖,但我不是在寻找 GPU 到 GPU (P2P) 传输。我很确定我可以通过普通的cudaMemcpy 调用来做到这一点。我正在寻找一种使用 RDMA 和 Infiniband 直接从 GPU 传输到另一台主机上的内存的方法。
  • 好的,在这种情况下,您肯定需要使用固定内存(通过cudaMallocHost 进行malloc),或者使用cudaHostRegister 函数。我猜你只需要固定内存,如果设置正常,GPUDirect 将启用 RDMA 传输(如果你这样做后的吞吐量比当前更好,那么你可以肯定会有所改进)。而且据我所知,GPUDirect 只会加速 cudaMemCpy,而且它不能被移除,如果你有很多 memcpy 函数(H2D,D2H),那么你可以使用cudaMemcpyDefault

标签: cuda infiniband rdma gpudirect


【解决方案1】:

是的,支持网络硬件是可能的。请参阅GPUDirect RDMA documentation

【讨论】:

  • 我见过这个功能,但它看起来像是针对 GPU P2P 传输。它是否也允许我直接将数据复制到远程节点而不涉及源节点上的 CPU?
  • 引用您链接到的页面:“使用 GPU 和其他 PCIe 设备之间的直接内存访问 (DMA) 消除 CPU 带宽和延迟瓶颈 ...”我不清楚 CUDA 驱动程序是否支持我上面描述的情况的 RDMA,或者它是否仅适用于 P2P 传输。似乎很容易支持它,但是该页面在这件事上似乎不是很明确。不过,这似乎仍然是一个不错的答案,所以我会接受。
  • 这里的关键词是“远程”,即不在同一 PCI-e 总线上的对等点。这需要 NVIDIA 合作的特定 Infiniband 卡制造商的支持。
  • @harrism 但是我们能否通过 Infiniband-RDMA 进行点对点访问,即 GPU1-Core 是否可以通过内核中的指针>>-函数访问 GPU2-RAM? GPU1-Core GPU2-RAM
  • @Alex,不,PC1 的 GPU1 无法通过正常的内存读取操作访问远程 PC2 的 RAM (GPU2-RAM)。 RDMA 意味着 PC1 可以使用 infiniband 发布请求,将一些内存从 PC2(或 GPU2-RAM)复制到一些本地内存(PC1 RAM 或 GPU1 RAM),而无需远程 PC2 进行中断或 memcpy。请求在 QP 中显式发布:mellanox.com/related-docs/prod_software/… 第 106 页“5.2.7 rdma_post_read...远程内存区域的内容将被读入本地数据缓冲区”。只有在此请求完成后,您才能访问数据的本地副本。
猜你喜欢
  • 2017-10-26
  • 2014-12-21
  • 2015-09-11
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
相关资源
最近更新 更多