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