sol*_*les 7 cuda gpu gpgpu nvidia pci-e
操作的数据速率cudaMemcpy
受到分配用于从CPU运行到GPU的PCI-e 3.0(或2.0)通道数量的严重影响.我很好奇PCI-e通道如何在包含两个GPU的Nvidia设备上使用.
Nvidia有一些产品在一个PCI-e设备上有两个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)]
GTX 690使用PLX PCIe Gen 3桥接芯片将两个GK104 GPU与主机PCIe总线连接.从主机到PLX设备,从PLX设备到每个GPU都有一个完整的x16连接(PLX设备总共有48个通道).因此,如果仅使用一个GPU,则可以为该GPU实现大约完整的x16带宽.您可以使用CUDA示例中包含的bandwidthTest来探索此问题.bandwidthTest将针对单个GPU(卡上的两个GPU,可通过命令行选项选择),您应该看到大约全部带宽,具体取决于系统.如果您的系统支持Gen3,您应该看到完整的PCIe x16 Gen 3带宽(不要忘记使用--memory =固定选项),这将根据具体系统而有所不同,但应该在6GB/s以下(可能是在9-11GB/s范围内).如果您的系统支持Gen2,您应该会看到4-6GB/s范围内的内容.关于GTX 590可以做类似的声明,但它只是Gen2设备并使用不同的桥接芯片.bandwidthTest的结果确认根端口和任一GPU之间存在完整的x16逻辑路径.当然没有免费午餐,因此您无法同时获得两个GPU的全带宽:您受到x16插槽的限制.
归档时间: |
|
查看次数: |
1532 次 |
最近记录: |