【问题标题】:Sending the same data to N GPUs将相同的数据发送到 N 个 GPU
【发布时间】:2013-11-16 17:03:06
【问题描述】:

在基于 Haswell 的系统上,我有 4 个 GPU 挂在同一个 PCIe 交换机 (PLX PEX 8747) 上。我想向每个 GPU 发送相同的数据。 PCIe 交换机是否可以将数据复制到 N 个目标,而不是进行 N 个单独的传输?实际上是否可以通过 PCIe 总线向 N 个 GPU 广播数据?

我想知道 SLI / Crosssfire 如何处理此类问题?我可以想象在渲染的给定场景中,每个 GPU 的大量数据都是相同的。我记得读到过旧的 NVIDIA 890 Ultra SLI 系统在他们的 SLI 开关中包含了这种广播机制。

http://www.nvidia.com/docs/IO/52280/NVIDIA_Broadcast_PWShort_TB.pdf

较新的 PCIe 交换机可以做到这一点吗?

更新:PCIe 标准似乎支持多播,如下面的答案所述。我在

找到了一些关于此的信息

www.pcisig.com/developers/main/training_materials/get_document?doc_id=31337695e3bc0310ea570c9df49e507b9d3eb4a5

是的,我特别想要一个 CUDA 或 OpenCL 接口来将数据传输到 N 个设备。 API 还不支持这个似乎很遗憾。

【问题讨论】:

  • 没有 CUDA API 可以做到这一点。如果您的问题与 CUDA 无关,请删除 CUDA 标签。否则,我会将其发布为答案。

标签: cuda pci-e


【解决方案1】:

大约 5 年前,PCI-e SIG 批准了一项基于 PCI-e 的交换机级多播方案,并且(我相信)它在 PCI-e 3.0 标准中得到了充分描述。但是,我不相信任何 GPU/加速供应商都支持多播,而且从 CUDA 5.5 开始,肯定没有任何 CUDA 级别的 API 支持此类功能。

【讨论】:

  • 我很确定 NVIDIA 驱动程序在某些情况下会在后台使用多播(例如多 GPU 渲染),但是 AFAIK 没有公开的 API 可以利用 NVIDIA 提供的这一点。在我看来,赞成,因为这个答案是正确和完整的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多