PAPI_num_counters() показывает, что система не имеет доступных счетчиков
У меня есть вопрос относительно PAPI (интерфейс прикладного программирования производительности). Я скачал и установил библиотеку PAPI. До сих пор не уверен, как правильно его использовать и какие дополнительные вещи мне нужны, чтобы он работал. Я пытаюсь использовать его в C. У меня есть эта простая программа:
int retval;
retval = PAPI_library_init(PAPI_VER_CURRENT);
if (retval != PAPI_VER_CURRENT && retval > 0) {
printf("PAPI error: 1\n");
exit(1);
}
if (retval < 0)
printf("PAPI error: 2\n");
retval = PAPI_is_initialized();
if (retval != PAPI_LOW_LEVEL_INITED)
printf("PAPI error: 2\n");
int num_hwcntrs = 0;
if ((num_hwcntrs = PAPI_num_counters()) <= PAPI_OK)
printf("This system has %d available counters. \n", num_hwcntrs);
Я включил библиотеку papi.h, и я компилирую с флагом gcc -lpapi. Я добавил библиотеку в путь, чтобы она могла компилироваться и запускаться, но в результате я получаю это:
Эта система имеет 0 доступных счетчиков.
Кажется, что инициализация мысли работает, поскольку она не дает код ошибки. Любой совет или предложение было бы полезно, чтобы определить, что я не сделал правильно или пропустил, чтобы выполнить это правильно. Я имею в виду, что в моей системе должны быть доступные счетчики, точнее, мне нужны счетчики пропущенных и кэш-памяти.
Я попытался посчитать доступные счетчики после того, как запустил эту другую простую программу, и она выдала код ошибки -25:
int numEvents = 2;
long long values[2];
int events[2] = {PAPI_L3_TCA,PAPI_L3_TCM};
printf("PAPI error: %d\n", PAPI_start_counters(events, numEvents));
ОБНОВЛЕНИЕ: Я только что попытался проверить информацию об оборудовании терминала с помощью команды: papi_avail | Больше; и я получил это:
Доступна предустановка PAPI и определенные пользователем события, а также информация об оборудовании.
Версия PAPI: 5.7.0.0
Операционная система: Linux 4.15.0-45-generic
Строка и код поставщика: GenuineIntel (1, 0x1)
Строка и код модели: Intel(R) Core(TM) i5-6200U CPU @ 2,30 ГГц (78, 0x4e)
Версия процессора: 3.000000
CPUID: семейство / модель / степпинг 6/78/3, 0x06/0x4e/0x03
Максимальная частота процессора: 2800
Минимальная частота процессора: 400
Всего ядер: 4
SMT потоков на ядро: 2
Количество ядер на розетку: 2
Розетки: 1
Количество ядер на NUMA регион: 4
NUMA регионы: 1
Запуск в ВМ: нет
Количество аппаратных счетчиков: 0
Максимальное количество мультиплексных счетчиков: 384
Быстрое считывание счетчика (rdpmc): нет
PAPI Preset Events
Name Code Avail Deriv Description (Note)
PAPI_L1_DCM 0x80000000 Нет Нет Отсутствует кэш данных уровня 1
PAPI_L1_ICM 0x80000001 Нет Нет Отсутствует кэш инструкций уровня 1
PAPI_L2_DCM 0x80000002 Нет Нет Нет кеша данных уровня 2
PAPI_L2_ICM 0x80000003 Нет Нет Отсутствует кэш инструкций уровня 2.......
Таким образом, поскольку Number Hardware Counters равно 0, я не могу использовать этот инструмент для подсчета ошибок кэша с предустановленными событиями PAPI? Есть ли какая-нибудь конфигурация, которая может быть полезна, или я должен забыть об этом, пока я не заменю свой ноутбук?