2-GPU 卡上的 PCI-e 通道分配?
Posted
技术标签:
【中文标题】2-GPU 卡上的 PCI-e 通道分配?【英文标题】:PCI-e lane allocation on 2-GPU cards? 【发布时间】:2012-10-10 15:36:55 【问题描述】:cudaMemcpy
操作的数据速率很大程度上受分配用于从 CPU 到 GPU 运行的 PCI-e 3.0(或 2.0)通道数的影响。我很好奇如何在包含两个 GPU 的 Nvidia 设备上使用 PCI-e 通道。
Nvidia 的一些产品在单个 PCI-e 设备上具有两个 GPU。例如:
GTX 590 包含两个 Fermi GF110 GPU GTX 690 包含两个 Kepler GK104 GPU与许多较新的显卡一样,这些设备安装在PCI-e 16
插槽中。对于仅包含 一个 GPU 的卡,GPU 可以使用 16 个 PCI-e 通道。
如果我的设备包含两个 GPU(如 GTX 690),但我只在一个 GPU 上运行计算作业,可以全部 16 个 PCI -e 通道为正在使用的一个 GPU 提供服务?
将其显示为 ascii 艺术...
[ GTX690 (2x GF110) ] ------16 PCI-e 通道 ----- [ CPU ]
我不是在谈论这种情况,CPU 连接到两张卡,每张卡都有一个 GPU。 (如下图)
[ GTX670 (1x GK104) ] ------ PCI-e 通道 ----- [ CPU ] ------ PCI-e 通道 ----- [ GTX670 (1x GK104) ]
【问题讨论】:
【参考方案1】:GTX 690 使用PLX PCIe Gen 3 bridge chip 将两个 GK104 GPU 与主机 PCIe 总线连接起来。从主机到 PLX 设备以及从 PLX 设备到每个 GPU 的完整 x16 连接(PLX 设备共有 48 个通道)。因此,如果只使用一个 GPU,您可以为该 GPU 实现大约完整的 x16 带宽。您可以使用 CUDA 示例中包含的 bandwidthTest 来探索这一点。 bandwidthTest 将针对单个 GPU(在卡上的两个 GPU 中,可以通过命令行选项进行选择),您应该会看到大约全带宽,具体取决于系统。如果您的系统支持 Gen3,您应该会看到完整的 PCIe x16 Gen 3 带宽(不要忘记使用 --memory=pinned 选项),这将根据特定系统而有所不同,但应该远高于 6GB/s(可能在 9-11GB/s 范围内)。如果您的系统支持 Gen2,您应该会看到 4-6GB/s 范围内的数据。 GTX 590 也有类似的说法,但它是 Gen2 专用设备并使用不同的桥接芯片。 bandwidthTest 的结果确认根端口和任一 GPU 之间存在完整的 x16 逻辑路径。当然没有免费的午餐,因此您无法同时获得两个 GPU 的全带宽:您受到 x16 插槽的限制。
【讨论】:
以上是关于2-GPU 卡上的 PCI-e 通道分配?的主要内容,如果未能解决你的问题,请参考以下文章