首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用perf正确测量IPC (每周期指令)

如何用perf正确测量IPC (每周期指令)
EN

Stack Overflow用户
提问于 2018-07-20 08:35:42
回答 1查看 2.7K关注 0票数 3

我想知道如何使用perf正确地测量每个周期的指令。作为参考:ISPASS18.pdf使用inst_retired.anycpu_clk_unhalted.ref_tsc进行计算,我现在想知道这是否是正确的方法。相比之下,PAPI使用硬件计数器PAPI_TOT_INSPAPI_TOT_CYC来计算IPC。

经过一些测量,我得出结论:

  • inst_retired.any:u似乎和PAPI_TOT_INS一样
  • cpu-cycles似乎和PAPI_TOT_CYC一样

在一个例子中,cpu-cyclescpu_clk_unhalted.ref_tsc的差别约为25%。现在的问题是,这两个值中哪一个是计算正确的?还是两种方法都错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-20 09:47:07

cpu-cycles是随涡轮/省电P状态变化的实际核心时钟频率.如果你关心的是微体系结构的东西,比如每个时钟前端瓶颈离你有多近,那就用它吧。

cpu_clk_unhalted.ref_tsc是参考周期,总是以(接近) CPU的额定/粘贴速度运行。(例如,我的4 4GHz i7-6700k上有一个固定的4008 MHz )。使用它(或task-clock),如果你关心的工作时间,包括选择涡轮增压或保持低时钟速度时,部分内存限制。(取决于EPP能源-性能-首选项设置。)

有趣的事实:它使用与RDTSC相同的时钟源,但是当时钟停止时,事件计数器不会勾选,例如在CPU频率转换期间)。TSC

(半相关:64 from C++?获得更多关于TSC和rdtsc的信息)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51438407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档