Cuda 将相同的数据发送到N个GPU

Cuda 将相同的数据发送到N个GPU,cuda,pci-e,Cuda,Pci E,在基于Haswell的系统上,我有4个GPU挂在同一个PCIe交换机(PLX PEX 8747)上。我想向每个GPU发送相同的数据。PCIe交换机是否可以将数据复制到N个目标,而不是N个单独的传输?实际上,是否可以通过PCIe总线向N个GPU广播数据 我想知道SLI/CrossFire是如何处理这些问题的?我可以想象给定场景中渲染的每个GPU的大量数据是相同的。我记得读到过一些关于旧的NVIDIA 890 Ultra SLI系统在SLI交换机中包含了这种广播机制的文章 对于较新的PCIe交换机

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

我想知道SLI/CrossFire是如何处理这些问题的?我可以想象给定场景中渲染的每个GPU的大量数据是相同的。我记得读到过一些关于旧的NVIDIA 890 Ultra SLI系统在SLI交换机中包含了这种广播机制的文章

对于较新的PCIe交换机,这可能吗

更新:PCIe标准似乎支持多播,如下所示。我在网站上找到了一些这方面的信息

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


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

大约5年前,PCI-e SIG批准了一项通过PCI-e的交换机级多播方案,并且(我相信)在PCI-e 3.0标准中对其进行了充分描述。然而,我不相信任何GPU/加速供应商支持多播,当然也没有任何CUDA级别的API支持CUDA 5.5这样的功能。

没有CUDA API可以做到这一点。如果您的问题与CUDA无关,请删除CUDA标签。否则,我会将此作为一个答案发布。我非常确定NVIDIA驱动程序在某些情况下(例如多GPU渲染)会使用引擎盖下的多播,但是目前还没有公开的API来利用NVIDIA提供的这一点。在我看来,这个答案是正确和完整的。