2

我正在尝试测量 ATI FirePro 8750 上的 PCIe 带宽。SDK 中的 amd 应用程序示例 PCIeBandwidth 测量以下传输的带宽:

  1. 主机到设备,使用 clEnqueueReadBuffer()。
  2. 要托管的设备,使用 clEnqueueWriteBuffer()。

在我的系统(Windows 7,Intel Core2Duo 32 位)上,输出如下所示:

Selected Platform Vendor : Advanced Micro Devices, Inc.
Device 0 : ATI RV770
Host to device : 0.412435 GB/s
Device to host : 0.792844 GB/s

此特定卡具有 2 GB DRAM,最大时钟频率为 750 Mhz

1-为什么每个方向的带宽不同?

2-为什么带宽这么小?

另外我知道这种通信是通过 DMA 进行的,所以带宽可能不受 CPU 的影响。

4

1 回答 1

0

微软研究实验室的这篇论文给出了为什么 GPU - CPU 之间存在不对称 PCIe 数据传输带宽的一些线索。本文描述了 FPGA 的性能指标——PCIe 上的 GPU 数据传输带宽。它还包括来自 CPU 的指标——PCIe 上的 GPU 数据传输带宽。

引用相关部分

'还应该注意的是,GPU-CPU 传输本身也表现出某种程度的不对称行为。在 GPU 到 CPU 传输的情况下,GPU 正在启动总线主控写入,GPU 达到最大值 6.18 GByte/Sec。在从 CPU 到 GPU 的相反方向上,GPU 正在启动总线主读取,由此产生的带宽下降到 5.61 GByte/Sec。在我们的观察中,由于协议开销和实现的相对复杂性,对于任何 PCIe 实现,总线主控写入通常比总线主控读取更有效。虽然解决这种不对称的可能方法是通过使用 CPU 启动的总线主控写入来处理 CPU 到 GPU 的方向,但该硬件设施通常在 PC 架构中不可用。'

关于带宽的第二个问题的答案可能是数据传输大小的单位。参见图 2、3、4 和 5。我还在第 1 届 AMD Fusion Conference 上看到了这样的图表。解释是由于协议和设备延迟,数据的 PCIe 传输具有开销。开销对于较小的传输大小更为重要,而对于较大的大小则变得不那么重要。

你有什么杠杆来控制或提高绩效?

获得芯片/主板和 GPU 的正确组合是硬件杠杆。具有最大 PCIe 通道数的芯片更好。使用更高规格的 PCIe 协议,PCIe 3.0 优于 PCIe 2.0。所有组件都需要支持更高的标准。

作为程序员控制数据传输大小,是一个非常重要的杠杆。

128K - 256K 字节的传输大小大约占最大带宽的 50%。1M - 2M 字节的传输获得超过 90% 的最大带宽。

于 2013-08-02T19:22:06.883 回答