3

是否可以在 GPU 和远程主机之间执行 RDMA 操作?

Nvidia 网站上的在线文档仅讨论了在 GPU 之间进行 RDMA,并没有提到在 GPU 主机之间进行此操作的可能性。

注意:我可以访问配备 K80 GPU 和 Mellanox NIC 的集群。

4

1 回答 1

4

是否可以在 GPU 和远程主机之间执行 RDMA 操作?

是的,自 2012 年(Kepler 级 GPU 和 CUDA 5.0)以来,可以使用 Nvidia Compute GPU(Tesla 和 Quadro)的“ GPUDirect RDMA ”功能在 GPU 和 Infiniband 卡之间移动数据。CUDA Toolkit 中有关于 GPUDirect RDMA 的网页http://docs.nvidia.com/cuda/gpudirect-rdma/

GPUDirect RDMA 是 Kepler 级 GPU 和 CUDA 5.0 中引入的一项技术,该技术使用 PCI Express 的标准功能为 GPU 和第三方对等设备之间的数据交换提供直接路径。第三方设备的示例有:网络接口、视频采集设备、存储适配器。

GPUDirect RDMA 可在 Tesla 和 Quadro GPU 上使用。

可以应用许多限制,最重要的是两个设备必须共享相同的上游 PCI Express 根联合体。一些限制取决于所使用的平台,并且可以在当前/未来的产品中取消。

必须对设备驱动程序进行一些简单的更改,才能在各种硬件设备上启用此功能。本文档介绍了该技术并描述了在 Linux 上启用与 NVIDIA GPU 的 GPUDirect RDMA 连接所需的步骤。

有一些限制:http ://docs.nvidia.com/cuda/gpudirect-rdma/index.html#supported-systems

2.4. 支持的系统

一般意见。尽管 GPUDirect RDMA 在第三方设备和 NVIDIA GPU 之间工作的唯一理论要求是它们共享相同的根复合体,但存在导致其性能不佳或根本无法工作的错误(主要在芯片组中)某些设置。

我们可以区分三种情况,这取决于GPU和第三方设备之间的路径是什么:PCIe只切换单CPU/IOH CPU/IOH <-> QPI/HT <-> CPU/IOH 第一种情况,在路径上只有 PCIe 交换机的情况下,是最优的并产生最佳性能。第二种涉及单个 CPU/IOH,虽然有效,但性能较差(尤其是对等读取带宽已被证明在某些处理器架构上受到严重限制)。最后,路径穿过 QPI/HT 链路的第三种情况可能会受到极大的性能限制,甚至无法可靠地工作。提示:lspci可用于检查PCI拓扑:

$ lspci -t 

平台支持 对于 IBM Power 8 平台,不支持 GPUDirect RDMA 和 P2P,但未明确禁用。它们可能无法在运行时工作。

在 ARM64 上,必要的点对点功能取决于特定平台的硬件和软件。因此,虽然 GPUDirect RDMA 在这种情况下没有被明确禁用,但不能保证它会完全正常工作。

IOMMU 的 GPUDirect RDMA 目前依赖于从不同 PCI 设备的角度来看相同的所有物理地址。这使得它与执行除 1:1 之外的任何形式的转换的 IOMMU 不兼容,因此必须禁用或配置它们以实现 GPUDirect RDMA 的直通转换才能工作。

于 2017-05-25T22:35:41.383 回答