如何测试内部函数的延迟和吞吐量?

How to test the latency and throughput of an intrinsic function?

提问人:Frontier_Setter 提问时间:9/26/2023 最后编辑:Peter CordesFrontier_Setter 更新时间:9/26/2023 访问量:62

问:

英特尔的内部指南中,每个函数都有自己的延迟和吞吐量。例如:_mm256_loadu_ps

Architecture, Latency, Throughput (CPI)
Alderlake, 7, 0.333333333
Icelake Intel Core, 7, 0.5
Icelake Xeon, 7, 0.56
Sapphire Rapids, 7, 0.333333333
Skylake, 7, 0.5

我想在 AMD 机器上执行相同的测试进行比较。
是否有任何方法或基准来测试内部函数的延迟和吞吐量?

特别是对于延迟测试,如何避免无序执行的影响?

CPU架构 内部函数 AVX AMD处理器 微基准测试

评论


答:

2赞 Soonts 9/26/2023 #1

以下是其他人测量的数据: https://www.uops.info/table.html 该表包括 Intel 和 AMD 处理器的数据。处理器由表顶部的复选框选择。例如,要查看我的 AMD 处理器的数据,我在那里选中“Zen 3”复选框。

内部函数编译成具有存储器源和寄存器目标的指令。您应该选中 AVX 复选框,在搜索中输入,然后在该表中查找行。_mm256_loadu_psvmovupsVMOVUPSVMOVUPS (YMM, M256)

在实践中测量这些数字相对困难,但这是他们用来为该表生成数字的 Linux 工具

评论

1赞 Peter Cordes 9/26/2023
对于像负载这样的东西,延迟是很困难的,因为结果与源(寄存器与内存)位于不同的“域”中,因此你不能构造一个只涉及你想要测试的指令的循环。吞吐量与延迟很容易对像这样的指令进行微基准测试。uops.info 甚至显示了它们用于每个微基准测试的循环体,因此您可以准确地看到它们是如何测试的,而无需深入研究自己。例如,uops.info/html-tp/ZEN4/VMOVUPS_XMM_M128-Measurements.html 显示了他们如何在 Zen 4 上测试吞吐量和 uop。(单击表中的任意数字。vaddpsnanobench