如何解释 PCIe 总线的性能可变性?

How do I explain performance variability over PCIe bus?

在我的 CUDA 程序中,我发现不同运行之间的通信时间存在很大差异(高达 50%),其中包括主机到设备和设备到主机通过 PCI Express 固定内存的数据传输时间。我该如何解释这种可变性?当 PCI 控制器和内存控制器忙于执行其他 PCIe 传输时会发生这种情况吗?非常感谢任何 insight/reference。 GPU为Tesla K20c,主机为AMD Opteron 6168,12核运行 Linux操作系统。 PCI Express 版本为 2.0.

您正在执行此操作的系统是一个 NUMA 系统,这意味着两个分立的 CPU 中的每一个(皓龙 6168 有两个 6 核 CPU主机中的单个包)有自己的内存控制器,并且每个 CPU 内存和托管 CUDA 设备的 PCI-e 控制器之间可能存在不同数量的 HyperTransport 跃点。

这意味着,根据 CPU affinity,运行带宽测试的线程对主机内存和 GPU 的延迟可能不同。这将解释您所看到的时间差异