我正在尝试使用 PAPI 读取硬件计数器之一。当我尝试从perf_event
列表中读取事件时,它工作正常。但是现在我需要从perf_event_uncore
列表中读取其中一个计数器,该计数器是用 获得的papi_native_avail
,但我得到一个错误。它在级联湖架构上运行,具有 linux 5.4.0-3-amd64 版本。
int err = PAPI_event_name_to_code("skx_unc_imc0::UNC_M_WPQ_CYCLES_FULL",&native);
if (err != PAPI_OK)
printf("PAPI_event_name_to_code error: %d\n", err);
err = PAPI_add_event(EventSet, native);
if (err!= PAPI_OK)
printf("PAPI_add_event error: %d\n", err);
即使PAPI_event_name_to_code
返回 PAPI_OK,也会PAPI_add_event
返回 -1,即PAPI_EINVAL
- 无效参数。我尝试了几种计数器形式perf_event_uncore
,但遇到了同样的问题。我是否需要使用不同的功能将其添加到事件集中?还是我做错了什么?