【问题标题】:Copy to CUDA GPU Memory from a PCI Device从 PCI 设备复制到 CUDA GPU 内存
【发布时间】:2013-06-06 22:12:04
【问题描述】:

有什么方法可以从 PCI 设备写入 CUDA 设备内存。该 PCI 设备正在以非常快的速度记录数据。因此,为了获得最大性能,我想将数据直接复制到 GPU 内存中,以便通过主机传输进行处理。

我在 CUDA 5.0 中了解了 RDMA。我如何使用 RDMA/GPUDirect 将数据从 PCI 传输到 GPU 内存。

请帮助我为此提供一些示例。

我使用的操作系统是 Windows 7 64 位和 CentOS 64 位 CUDA SDK是5.0,GPU是Tesla K20

【问题讨论】:

  • 基本上是通过为您使用的任何 PCI 设备编写/修改您自己的设备驱动程序。使用 GPUDirect 所需的代码运行在内核空间,而不是用户空间。
  • 但是如果我没有PCI设备驱动的源代码,我该如何实现呢?
  • 你不能。您的 PCI-e 设备必须具有使用特定 NVIDIA 内核空间 API 的驱动程序,以便向 GPU 驱动程序注册固定内存并激活 GPUDirect 数据路径。如果您的设备驱动程序是闭源的,那么您需要与供应商讨论添加 GPUdirect 支持。

标签: linux windows cuda gpgpu pci


【解决方案1】:

适用于 GPUDirect 的 RDMA 是 Kepler 级 GPU 和 CUDA 5.0 中引入的一项功能,它支持使用 PCI Express 的标准功能在 GPU 和对等设备之间建立直接通信路径。
这些设备必须共享相同的上游根联合体。
必须对设备驱动程序进行一些简单的更改才能启用此功能。

详情请见NVIDIA Documentation regarding RDMA for GPUDirect

【讨论】:

  • 从技术上讲,RDMA 不是问题所在。 RMDA 是远程 DMA,即。跨低延迟网络结构(如 Infiniband)的主机之间的零复制。 GPUDirect 是支持 RDMA 的网络适配器通过 PCI-e 总线直接传输到 GPU 内存的机制。问题实际上是关于后一种机制,而不是前者。
猜你喜欢
  • 2012-11-04
  • 2017-03-23
  • 2015-04-22
  • 2014-08-30
  • 1970-01-01
  • 2011-02-03
  • 1970-01-01
  • 2016-07-25
  • 2015-03-11
相关资源
最近更新 更多