【发布时间】:2013-07-25 19:55:13
【问题描述】:
如果我有 3 个 gpu,并且需要向所有这三个 gpus 传输一个巨大的缓冲区,如果我为每个 gpus 使用一个 CUDA 流以便它们的复制引擎可以同时执行传输,会有什么不同吗?我的意思是:到达它们三个的 PCI-E 总线是一样的,不是吗?
【问题讨论】:
-
问题的最后一部分完全取决于主机的PCI-e拓扑。没有一般的答案。
-
@sj755 也许我错过了一些东西。您链接的演示文稿解释了用于利用
streams和P2P memcpy的说明。我认为用户的主要问题是:如果所有这些 GPU 都在异步交换数据(也许用户已经知道如何去做),它们将通过哪些机制竞争 PCI-E 总线的带宽,可能取决于主机的 PCI-E 拓扑,正如 talonmies 所指出的那样? -
sj 的演示对我有所帮助,因为我看到从 CPU 到“IOH”芯片的单一总线,即使它们下面有多个 GPU。我敢假设同一总线是从如果它们属于同一个 IOH 芯片,则主机可以访问多个 gpu。如果它们属于不同的 IOH 芯片,则可能不是...这是正确的吗?
-
实际上 PCIE 通道并没有在任何设备之间共享。 PCIE 是一种点对点的“总线”。从理论上讲,PCIE 根复合体(IOH/CPU 内所有 PCIE 通道上游的逻辑实体)同时支持多个传输是可能的。但其他系统瓶颈可能会出现。正如 talonmies 所说,您确实需要知道自己的特定拓扑和能力,没有通用的答案。