Я пытаюсь прочитать один из счетчиков оборудования с помощью 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
, и у меня возникла та же проблема. Нужно ли использовать другую функцию, чтобы добавить это даже в набор событий? или я что-то не так делаю?