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

时间:2013-07-25 19:55:14

标签: cuda nvidia pci-e

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

1 个答案:

答案 0 :(得分:1)

PCIe使用多种不同的处理器架构来扩展CUDA上this text book中涵盖的一个领域。

是的,您需要为每次传输使用单独的流,因为这会使您远离默认的,序列化的流零。您还将达到各种带宽限制,但是,它们将同时运行,并且您可以加快顺序执行传输。

但是,您将受到处理器/内存/ pcie控制器提供并发(PCIe 2)5GB / s流的能力的限制。添加更多卡片并不会减少可用的PCIe通道数量,通常会看到显着的好处。一般情况下,对于2张卡,这种方法效果很好,但是当添加更多卡时,带宽问题会妨碍超过3张卡的快速丢失。特别是对于超过2张卡,您不太可能在许多系统上提供完整的16个PCIe通道。

Nsight工具非常擅长显示时间表,显示传输的内容,并显示实际的传输速率,因此我建议您尝试让它看看实际发生的情况。