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

0 ответов

Другие вопросы по тегам