【问题标题】:Cuda GPUDirect to NIC/Harddrive?Cuda GPUDirect 到 NIC/硬盘?
【发布时间】:2015-06-12 15:44:18
【问题描述】:

我目前正在编写一个 CUDA 应用程序,但遇到了一些 IO 问题“喂养野兽”。

我想知道是否有任何方法可以直接从 RAID 控制器或 NIC 读取数据并将该数据直接发送到 GPU。我想要完成的内容直接显示在以下演示文稿的第 3 张幻灯片上:http://developer.download.nvidia.com/devzone/devcenter/cuda/docs/GPUDirect_Technology_Overview.pdf

话虽如此,显然这已经在这里得到了回答:Is it possible to access hard disk directly from gpu?,但是我附上的演示文稿让我相信我所需要的只是在 Linux 中设置一个环境变量(但它没有提供任何有用的代码 sn-ps/示例)。

因此,我想知道是否可以将数据直接从 NIC/RAID 控制器读取到 GPU 中,这样做需要什么?我需要为硬件编写自己的驱动程序吗?有没有避免某些副本的例子?

提前感谢您的帮助。

【问题讨论】:

  • 据我了解,您需要一个支持 GPUdirect 的 RDMA 功能的 NIC、RAID 控制器或 SSD 驱动程序。自己滚动可能非常简单。作为第一步,您可能需要联系您的 NIC、RAID 控制器或 SSD 的供应商,询问他们是否提供或计划为其产品提供支持 GPUdirect 的驱动程序。除非您的 NIC、RAID 控制器或 SSD 具有非常高的吞吐量,或者您有严格的延迟要求,否则直接从/向 GPU 移动数据不太可能购买大量性能; I/O 本身将成为限制因素。

标签: linux cuda driver


【解决方案1】:

GPUDirect 是一个技术“总称”,通常是一个品牌,指的是能够直接与 GPU 进行数据传输和/或从 GPU 传输数据的技术,以某种方式绕过不必要的主机内存行程。

GPUDirect v1 是一种与特定 infiniband 适配器配合使用的技术,可在 GPU 驱动程序和 IB 驱动程序之间共享数据缓冲区。该技术大部分已被 GPUDirect (v3) RDMA 取代。此 v1 技术不支持任何 NIC 的一般用途。环境变量参考:

但是我附上的演示文稿让我相信我所需要的只是在 Linux 中设置一个环境变量

指启用 GPUDirect v1。它不是通用的 NIC 启用程序。

GPUDirect v2 也称为 GPUDirect Peer-to-Peer,它用于在同一 PCIE 结构上的两个 CUDA GPU 之间传输数据。它不支持与任何其他类型的设备的互操作性。

GPUDirect v3 也称为 GPUDirect RDMA。

因此,我想知道是否可以将数据直接从 NIC/RAID 控制器读取到 GPU 中,这样做需要什么?

如今,GPUDirect RDMA 的典型用例是使用 Mellanox Infiniband (IB) 适配器。 (也可以在 Mellanox 的帮助下使用 Mellanox 以太网适配器和 RoCE 使其工作)。如果这符合您对“NIC”的定义,那么可以通过加载适当的软件堆栈,假设您有适当的硬件。 GPU 和 IB 设备需要在同一个 PCIE 结构上,这意味着它们需要连接到同一个 PCIE 根联合体(实际上,连接到同一个 CPU 插槽)。与 Mellanox IB 适配器一起使用时,典型用法将涉及 GPUDirect RDMA-aware MPI

如果您有自己未指定的 NIC 或 RAID 控制器,并且您还没有 GPUDirect RDMA linux 设备驱动程序,则无法使用 GPUDirect。 (如果有 GPUDirect RDMA 驱动程序,请联系制造商或驱动程序提供商寻求帮助。)如果您可以访问驱动程序源代码,并且熟悉编写自己的 linux 设备驱动程序,您可以尝试制作自己的 GPUDirect 驱动程序.所涉及的步骤超出了我的回答范围,但起点是documented here

我需要为硬件编写自己的驱动程序吗?

是的,如果您还没有 GPUDirect RDMA 驱动程序,则需要编写一个。

有没有避免某些副本的例子?

GPUDirect RDMA MPI link 给出了示例并解释了 GPUDirect RDMA 如何在将数据从 GPU 传输到 IB 适配器期间避免不必要的设备主机数据复制。一般来说,数据可以直接(通过 PCIE)从 GPU 设备上的内存传输到 IB 设备上的内存(反之亦然),而无需通过主机内存(GPUDirect v1 没有实现这一点。)

更新:NVIDIA 最近宣布了一项名为 GPU Direct Storage 的新 GPU Direct 技术。

【讨论】:

  • 感谢您阐明 GPUDirect 的所有不同风格。这是我在研究中发现的非常令人困惑的内容。
猜你喜欢
  • 2013-09-26
  • 2014-11-20
  • 1970-01-01
  • 2017-12-07
  • 2012-03-06
  • 1970-01-01
  • 2012-07-10
  • 2019-01-27
  • 2015-05-16
相关资源
最近更新 更多