1

我正在使用 PAPI 收集 skylake 处理器的性能和能量信息。目标应用程序是多线程的,我想汇总所有正在运行的线程的统计信息。如果我只跟踪非 RAPL 事件,这很好用,但如果我尝试跟踪 RAPL 和 CPU 计数器,CPU 计数器不会聚合(即它们只对应一个线程。

一切似乎都在正常工作。我检查了 PAPI 调用的所有错误代码,一切都是PAPI_OK.

我适用PAPI_INHERIT_ALL于组件 0 (CPU) 的事件集。对 RAPL 组件执行相同操作会失败,所以我不这样做。

下面的输出是我的测试程序的两次运行。唯一的区别是第二次运行包括rapl:::PACKAGE_ENERGY:PACKAGE0. 如果没有 RAPL 事件,周期和指令计数会随着线程计数而变化。有了它,他们就不会(但能量计数器显示包裹能量一直在缩放)。

我在 papi-5.7.0 下运行。

uname -a

Linux 80b3989af663 4.4.0-134-generic #160-Ubuntu SMP Wed Aug 15 14:58:00 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

没有 RAPL 事件

WallTime | threads | PAPI_TOT_CYC | PAPI_TOT_INS 
-------------------------------------------------
2.0      | 1.0     | 2.997G       | 12.945G      
2.0      | 2.0     | 5.995G       | 25.888G      
2.0      | 3.0     | 8.992G       | 38.835G      
2.0      | 4.0     | 11.989G      | 51.778G

与 RAPL 一起举办活动

 WallTime | threads | PAPI_TOT_CYC | PAPI_TOT_INS | rapl:::PACKAGE_ENERGY:PACKAGE0 
-----------------------------------------------------------------------------------
 1.999    | 1.0     | 2.997G       | 12.944G      | 10.643G                        
 2.0      | 2.0     | 2.997G       | 12.945G      | 12.896G                        
 2.0      | 3.0     | 2.997G       | 12.92G       | 16.109G                        
 2.0      | 4.0     | 2.997G       | 12.946G      | 19.471G                        
4

0 回答 0