首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从GPUDirect到NIC/硬盘?

从GPUDirect到NIC/硬盘?
EN

Stack Overflow用户
提问于 2015-04-07 21:41:50
回答 1查看 2.1K关注 0票数 3

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

我想知道是否有任何方法可以直接从RAID控制器或NIC读取数据,并将数据直接发送到GPU。我想要完成的任务直接显示在以下演示文稿的幻灯片#3上:Overview.pdf

尽管如此,这显然已经在这里得到了回答:是否可以直接从gpu访问硬盘?,但是我所附的演示文稿让人相信,我所需要的只是在Linux中设置一个环境变量(但它没有提供任何有用的代码片段/示例)。

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

提前谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-07 22:11:16

GPUDirect是一种技术“伞式术语”,它一般是指允许直接与GPU之间和/或从GPU传输数据的技术,以某种方式绕过了通过主机内存进行不必要的访问。

GPUDirect v1是一种与特定infiniband适配器一起工作的技术,它允许GPU驱动程序和IB驱动程序之间共享数据缓冲区。这种技术大多被GPUDirect (v3) RDMA所取代。这种v1技术不允许与任何NIC一起使用。环境变量引用:

不过,我所附的演示文稿使人相信,我所需要的只是在Linux中设置一个环境变量

指启用GPUDirect v1。这不是一个通用的NIC使能器。

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

GPUDirect v3也称为GPUDirect RDMA。

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

今天,(IB)适配器是GPUDirect RDMA的规范用例。(也可以使用Mellanox以太网适配器和RoCE来工作,也许是在梅拉诺克斯的帮助下)。如果这符合您对"NIC“的定义,那么可以通过加载适当的软件栈来实现,前提是您有适当的硬件。GPU和IB设备需要在同一个PCIE结构上,这意味着它们需要连接到同一个PCIE根复合体(有效地连接到同一个CPU套接字)。当与Mellanox适配器一起使用时,典型的用法将涉及基于GPUDirect RDMA的MPI

如果您有自己的未指定的NIC或RAID控制器,并且还没有GPUDirect RDMA linux设备驱动程序,那么就不可能使用GPUDirect。(如果有GPUDirect RDMA驱动程序,请与制造商或驱动程序提供程序联系以获得帮助。)如果您能够访问驱动程序源代码,并且熟悉编写自己的linux设备驱动程序,则可以尝试编写自己的GPUDirect驱动程序。所涉及的步骤超出了我的回答范围,但起点是记录在这里

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

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

是否有避免某些副本的例子?

GPUDirect RDMA MPI 链接给出了示例,并解释了在从GPU向IB适配器传输数据时,GPUDirect RDMA如何避免不必要的设备<->主机数据副本。通常,数据可以直接(通过PCIE)从GPU设备上的内存传输到IB设备上的内存(反之亦然),而不需要经过主机内存(GPUDirect v1没有做到这一点)。

更新: NVIDIA最近宣布了一种名为GPU直接存储的新GPU技术。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29501853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档