如何解决PAPI:测量 cpu_clk_unhalted.ref_tsc
我试图在 Intel i9-10980XE 上测量多线程程序的性能。更准确地说是总周期数和停顿数。
似乎涡轮增压正在影响线程的运行时间。鉴于两个线程的挂钟呈现相同的时间,但 cpu_clk_unhalted.ref_xclk(thread1) = 2xcpu_clk_unhalted.ref_xclk(thread2)。一个简单的解决方案是禁用涡轮增压,但我不允许这样做。
如果我是对的,应该可以通过 rdtsc() 固定函数获得参考时钟总数,通过 rdtsc()-cpu_clk_unhalted.ref_tsc 获得参考停顿周期总数。
Perf 允许我计算 cpu_clk_unhalted.ref_tsc 事件。但是,当我尝试使用 PAPI 计算相同的指标时,它的行为就像这个计数器不存在一样。例如:
unsigned int code;
if(PAPI_event_name_to_code("CPU_CLK_UNHALTED:REF_TSC",&code) != PAPI_OK){
printf("error coding TSC\n");
}
输出:“错误编码TSC”
我快速查看了 Intel 的 SW Developer's Manual,该事件对应于 Event Num:00H 和 Umask 值:03H。
有没有办法在 PAPI 中使用这些值?如果是这样,我该怎么做?
提前致谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。