PAPI_num_counters () показывает, что система не имеет доступных счетчиков - PullRequest
0 голосов
/ 08 февраля 2019

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

...