CUDA-将缓冲区传输到多个设备



如果我有三个GPU,并且我需要向它们三个都传输一个巨大的缓冲区,那么如果我为它们中的每一个使用CUDA流,以便它们的复制引擎可以同时执行传输,这会有什么不同吗?我的意思是:到达他们三个的PCI-E总线是一样的,不是吗?

PCIe使用多种不同的处理器体系结构扩展本CUDA教材中涵盖的领域之一。

是的,每次传输都需要使用一个单独的流,因为这会使您远离默认的序列化流零。你也会遇到各种带宽限制,但是的,它们会同时运行,而且你确实比顺序传输更快。

但是,您将受到处理器/内存/pcie控制器提供并发(pcie 2)5GB/s流的能力的限制。如果添加更多的卡并不能减少可用PCIe通道的数量,您通常会看到显著的好处。一般来说,对于2张卡来说,这很好,但在添加更多卡时,由于带宽问题,超过3张卡时,这一效果会迅速下降。特别是对于2个以上的卡,您不太可能在许多系统上拥有完整的16个PCIe通道。

Nsight工具非常善于显示时间表,显示转会情况,以及实际实现的转会率,所以我建议你尝试一下,让你看看真正发生了什么。

相关内容

最新更新