Это команда likwid-perfctr, которую можно запустить в провайдере бесплатного хостинга OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
likwid-perfctr - настройка и считывание аппаратных счетчиков производительности на процессоре x86
СИНТАКСИС
likwid-perfctr [-vhHVmaeiMoO] [-c / -C ] [-g or
] [-t ] [-S ] [-s ] [-o
]
ОПИСАНИЕ
likwid-perfctr это легкое приложение командной строки для настройки и чтения
данные мониторинга производительности оборудования на поддерживаемых процессорах x86. Он может измеряться как
оболочку без изменения измеряемого приложения или с функциями API маркеров внутри
код, который будет включать и выключать счетчики. Есть предварительно настроенные группы с полезными
наборы событий и производные метрики. Дополнительно произвольные события могут быть измерены с помощью настраиваемых
наборы событий. Маркер API может измерять несколько именованных регионов. Результаты накапливаются
несколько звонков. Поддерживаются следующие процессоры x86:
· Intel Основные 2: все варианты. Счетчики: PMC [0-1], FIXC [0-2]
· Intel Нехалем: Счетчики: PMC [0-3], FIXC [0-2], UPMC [0-7]
· Intel Nehalem EX: Счетчики: PMC [0-3], FIXC [0-2], MBOX [0-1] C [0-5], BBOX [0-1] C [0-3],
RBOX [0-1] C [0-7], WBOX [0-5], УБОКС0, SBOX [0-1] C [0-3], CBOX [0-9] C [0-4]
· Intel Вестмир:
Счетчики: PMC [0-3], FIXC [0-2], UPMC [0-7]
· Intel Westmere EX: Счетчики: PMC [0-3], FIXC [0-2], MBOX [0-1] C [0-5], BBOX [0-1] C [0-3],
RBOX [0-1] C [0-7], WBOX [0-5], УБОКС0, SBOX [0-1] C [0-3], CBOX [0-9] C [0-4]
· Intel Сэнди Мост: полная поддержка RAPL. Счетчики: PMC [0-3], FIXC [0-2], PWR [0-3]
· Intel Сэнди Мост ЭП: частичная поддержка uncore, полная поддержка RAPL. Счетчики:
PMC [0-3], FIXC [0-2], PWR [0-3]. MBOX [0–3] C [0–3]
· Intel плющ Мост: полная поддержка RAPL. Счетчики: PMC [0-3], FIXC [0-2], PWR [0-3]
· Intel плющ Мост ЭП: частичная поддержка uncore, полная поддержка RAPL. Счетчики:
PMC [0-3], FIXC [0-2], PWR [0-3], CBOX [0-9] C [0-3], MBOX [0-3] C [0-3], MBOX [0-3] ИСПРАВЛЕНИЕ
· Intel Хасуэлл: полная поддержка RAPL. Счетчики: PMC [0-3], FIXC [0-2], PWR [0-3]
· Intel Haswell ЭП: нет поддержки uncore, полная поддержка RAPL. Счетчики: PMC [0-3],
FIXC [0-2], PWR [0-3]
· Intel Atom Сильвермонт: полная поддержка RAPL. Счетчики: PMC [0-1], FIXC [0-2], PWR [0-1]
· Intel Пентиум M: Варианты Баниаса и Дотана. Счетчики: PMC [0-1]
· Intel P6: Проверено на P3.
· AMD K8: все варианты. Счетчики: PMC [0-3]
· AMD K10: Барселона, Шанхай, Стамбул, процессоры на базе MagnyCours. Счетчики:
PMC [0-3]
ДОПОЛНИТЕЛЬНЫЕ УСЛУГИ, НЕ ВКЛЮЧЕННЫЕ В ПАКЕТ
-v выводит информацию о версии на стандартный вывод и завершает работу.
-h выводит справочное сообщение на стандартный вывод и закрывается.
-H выводит справочное сообщение для группы (используется вместе с ключом -g).
-V подробный вывод во время выполнения для отладки.
-m запустить в режиме API маркера
-a распечатать доступные группы производительности для текущего процессора.
-e распечатать доступные счетчики и события производительности текущего процессора.
-o
сохранить весь вывод в файл вместо стандартного вывода. Для имени файла следующее
поддерживаются заполнители:% j для PBS_JOBID,% r для MPI RANK (только Intel MPI в
момент),% h hostname и% p для pid процесса. Заполнители должны быть
разделенные подчеркиванием, например, -o test_% h_% p. Вы должны указать суффикс к
имя файла. Для txt вывод печатается как есть в файл. Другие суффиксы запускают
фильтр на выходе. Доступные фильтры: csv (значения, разделенные запятыми) и xml.
сейчас.
-O Не печатайте таблицы результатов, вместо этого используйте легко анализируемый CSV.
-i распечатать cpuid информацию о процессоре и о мониторинге производительности Intel
функции, затем выйдите.
-c
укажите числовой список процессоров. Список может содержать несколько элементов,
через запятую и диапазоны. Например 0,3,9-11.
-C
укажите числовой список процессоров. Список может содержать несколько элементов,
через запятую и диапазоны. Например 0,3,9-11. Этот вариант также закрепит
потоки к ядрам. Также могут использоваться логические нумерации.
-g <производительность группа> or <производительность мероприятие набор строка>
укажите, какую группу производительности следует измерять. Это может быть один из выводимых тегов с
флаг -a. Также настраиваемый набор событий может быть указан с помощью списка разделенных запятыми
События. Каждое событие имеет формат eventId: register с регистром, равным единице.
поддерживаемых архитектурой регистров счетчика производительности.
-t <частота of измерения>
режим временной шкалы для измерений с разрешением по времени, возможные суффиксы 's' и 'ms', например
100 мс. Вывод имеет формат:
<Результат поток0> <Результат поток1> ...
-S
режим стетоскопа с длительностью в секундах. Может использоваться для измерения приложения
снаружи.
ПРИМЕР
Так как likwid-perfctr меры по процессорам, а не по отдельным приложениям надо
чтобы гарантировать, что процессы и потоки привязаны к выделенным ресурсам. Вы можете прикрепить
приложение самостоятельно или используйте встроенную функцию вывода.
1. В качестве обертки с группой производительности:
likwid-perfctr -C 0-2 -g TLB ./cacheBench -n 2 -l 1048576 -i 100 -t Поток
Родительский процесс привязан к процессору 0, поток 0 - к процессору 1, а поток 1 - к
процессор 2.
2. В качестве оболочки с настраиваемым событием, установленным на AMD:
likwid-perfctr -C 0-4 -g INSTRUCTIONS_RETIRED_SSE: PMC0, CPU_CLOCKS_UNHALTED: PMC3 ./мое приложение
Уточняется, что событие INSTRUCTIONS_RETIRED_SSE измеряется на счетчике PMC0 и
события CPU_CLOCKS_UNHALTED на прилавке ЧВК3. Можно рассчитать время работы
все темы на основе CPU_CLOCKS_UNHALTED мероприятие. Если вы этого хотите, вы должны включить
это событие в строке настраиваемого события, как показано выше.
3. В качестве оболочки с настраиваемым событием, установленным на Intel:
likwid-perfctr -C 0 -g INSTR_RETIRED_ANY: FIXC0, CPU_CLK_UNHALTED_CORE: FIXC1 ./мое приложение
На процессорах Intel фиксированные события измеряются специальными счетчиками. Эти
INSTR_RETIRED_ANY , CPU_CLK_UNHALTED_CORE. и CPU_CLK_UNHALTED_REF Если вы настроите
эти фиксированные счетчики, likwid-perfctr рассчитает показатели времени выполнения и CPI для вашего
бежать.
4. Использование API маркеров для измерения только частей вашего кода (его можно использовать как с
группы или пользовательские наборы событий):
likwid-perfctr -m -C 0-4 -g INSTRUCTIONS_RETIRED_SSE: PMC0, CPU_CLOCKS_UNHALTED: PMC3
./cacheBench
Вы должны связать свой код с liblikwid.a / .so и использовать вызовы API маркеров. В
следующий фрагмент кода показывает необходимые вызовы:
#включают
/ * только один поток вызывает init * /
если (threadId == 0)
{
likwid_markerInit ();
}
/ * если вы хотите измерить многопоточное приложение
* вам нужно вызвать likwid_markerThreadInit () для
* подготовка, пример с OpenMP * /
#pragma omp параллель
{
likwid_markerThreadInit ();
}
БАРЬЕР;
likwid_markerStartRegion («Контрольный показатель»);
/ * ваш код для измерения находится здесь. * /
likwid_markerStopRegion («Контрольный показатель»);
БАРЬЕР;
/ * снова только один поток может закрыть маркеры * /
если (threadId == 0)
{
likwid_markerClose ();
}
5. Использование likwid в режиме шкалы времени:
likwid-perfctr -c 0-3 -g ФЛОПС_DP -t 300ms ./мое приложение > out.txt
Это будет считывать счетчики каждые 300 мс на физических ядрах 0–3 и записывать результаты в
out.txt. Для режима временной шкалы есть интерфейсное приложение likwid-scope, которое позволяет
живое построение выбранных событий. Дополнительные примеры кода см. На Likwid WIKI.
страниц. Процессы не прикреплены к процессорам 0-3.
6. Использование Likwid в режиме стетоскопа:
likwid-perfctr -c 0-3 -g ФЛОПС_DP -S 2s
Это запустит счетчики и прочитает их через 2 секунды на физических ядрах 0-3 и запишет
результаты в стандартный вывод. Процессы не прикреплены к процессорам 0-3.
Используйте likwid-perfctr онлайн с помощью сервисов onworks.net