提问人:Frontier_Setter 提问时间:9/26/2023 最后编辑:Peter CordesFrontier_Setter 更新时间:9/26/2023 访问量:62
如何测试内部函数的延迟和吞吐量?
How to test the latency and throughput of an intrinsic function?
问:
在英特尔的内部指南中,每个函数都有自己的延迟和吞吐量。例如:_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 机器上执行相同的测试进行比较。
是否有任何方法或基准来测试内部函数的延迟和吞吐量?
特别是对于延迟测试,如何避免无序执行的影响?
答:
2赞
Soonts
9/26/2023
#1
以下是其他人测量的数据: https://www.uops.info/table.html 该表包括 Intel 和 AMD 处理器的数据。处理器由表顶部的复选框选择。例如,要查看我的 AMD 处理器的数据,我在那里选中“Zen 3”复选框。
内部函数编译成具有存储器源和寄存器目标的指令。您应该选中 AVX 复选框,在搜索中输入,然后在该表中查找行。_mm256_loadu_ps
vmovups
VMOVUPS
VMOVUPS (YMM, M256)
在实践中测量这些数字相对困难,但这是他们用来为该表生成数字的 Linux 工具。
评论
1赞
Peter Cordes
9/26/2023
对于像负载这样的东西,延迟是很困难的,因为结果与源(寄存器与内存)位于不同的“域”中,因此你不能构造一个只涉及你想要测试的指令的循环。吞吐量与延迟很容易对像这样的指令进行微基准测试。uops.info 甚至显示了它们用于每个微基准测试的循环体,因此您可以准确地看到它们是如何测试的,而无需深入研究自己。例如,uops.info/html-tp/ZEN4/VMOVUPS_XMM_M128-Measurements.html 显示了他们如何在 Zen 4 上测试吞吐量和 uop。(单击表中的任意数字。vaddps
nanobench
评论