У меня есть вопрос относительно 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
CPU Мин. МГц: 400
Всего ядер: 4
SMT потоков на ядро: 2
Число ядер на сокет: 2
Сокетов: 1
Число ядер на NUMA-область: 4
NUMA-области: 1
Работает на виртуальной машине: нет
Количество Счетчики оборудования: 0
Максимальное число счетчиков мультиплекса: 384
Быстрое считывание счетчика (rdpmc): нет
Предустановленные события PAPI
Name Code Avail Deriv Description (Note)
PAPI_L1_DCM 0x80000000 Нет Нет кэш данных 1-го уровня пропускает
PAPI_L1_ICM 0x80000001 Нет Нет Lпропущен кеш инструкций на уровне 1
PAPI_L2_DCM 0x80000002 Нет нет пропущен кэш данных уровня 2
PAPI_L2_ICM 0x80000003 нет пропущен кеш инструкций уровня 2 .......
Так какЧисло аппаратных счетчиков равно 0, я не могу использовать этот инструмент для подсчета ошибок кэша с предустановленными событиями PAPI?Есть ли какая-нибудь конфигурация, которая может быть полезной, или я должен забыть об этом, пока я не заменю свой ноутбук?