2个GPU卡的PCI-e lane分配是什么?

7

cudaMemcpy操作的数据传输速率受PCI-e 3.0(或2.0)通道数量的影响,该通道从CPU到GPU进行分配。我想了解在包含两个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个回答

9

GTX 690使用PLX PCIe Gen 3 bridge chip将两个GK104 GPU与主机PCIe总线连接。从主机到PLX设备和从PLX设备到每个GPU都有完整的x16连接(PLX设备共有48条线路)。因此,如果只使用一个GPU,则可以实现大约完整的x16带宽到该GPU。您可以通过使用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插槽的限制。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接