Це команда 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 Core 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], UBOX0, SBOX[0-1]C[0-3], CBOX[0-9]C[0-4]
· Intel Вестмір:
Лічильники: PMC[0-3], FIXC[0-2], UPMC[0-7]
· Intel Вестміре 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], UBOX0, SBOX[0-1]C[0-3], CBOX[0-9]C[0-4]
· Intel Сенді Bridge: повна підтримка RAPL. Лічильники: PMC[0-3], FIXC[0-2], PWR[0-3]
· Intel Сенді Міст PS: часткова підтримка uncore, повна підтримка RAPL. Лічильники:
PMC[0-3], FIXC[0-2], PWR[0-3]. MBOX[0-3]C[0-3]
· Intel плющ Bridge: повна підтримка RAPL. Лічильники: PMC[0-3], FIXC[0-2], PWR[0-3]
· Intel плющ Міст PS: часткова підтримка 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 Haswell: повна підтримка RAPL. Лічильники: PMC[0-3], FIXC[0-2], PWR[0-3]
· Intel Haswell PS: відсутність неосновної підтримки, повна підтримка RAPL. Лічильники: PMC[0-3],
FIXC[0-2], PWR[0-3]
· Intel Atom Сільвермонт: повна підтримка RAPL. Лічильники: PMC[0-1], FIXC[0-2], PWR[0-1]
· Intel Пентіум M: Варіанти Banias і Dothan. Лічильники: 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 ім'я хосту та %p для ідентифікатора процесу. Заповнювачі повинні бути
розділені символом підкреслення як, наприклад, -o test_%h_%p. Ви повинні вказати суфікс до
ім'я файлу. Для txt результат друкується як є у файлі. Інші суфікси викликають а
фільтр на виході. Доступні фільтри: csv (значення, розділені комами) і xml
на даний момент
-O Не друкуйте таблиці для результатів, замість цього використовуйте CSV, який легко аналізується.
-i роздрукувати інформацію cpuid про процесор та про моніторинг продуктивності Intel
функції, а потім вийдіть.
-c
вкажіть числовий список процесорів. Список може містити кілька пунктів,
розділяються комами та діапазонами. Наприклад 0,3,9-11.
-C
вкажіть числовий список процесорів. Список може містити кілька пунктів,
розділяються комами та діапазонами. Наприклад 0,3,9-11. Цей варіант також буде закріпленим
ниток до ядер. Також можна використовувати логічну нумерацію.
-g <performance група> or <performance подія комплект рядок>
вкажіть, яку групу продуктивності виміряти. Це може бути один із тегів, що виводяться
прапор -a. Також спеціальний набір подій можна вказати за допомогою списку розділених комами
події. Кожна подія має формат eventId:register, де реєстр є одним
Регістри лічильника продуктивності, що підтримується архітектурою.
-t <frequency of вимірювання>
режим часової шкали для вимірювань з роздільною здатністю, можливі суфікси «s» і «ms».
100 мс. Вихід має такий формат:
<Result поток0> <Result поток1> ...
-S
режим стетоскопа з тривалістю в секундах. Можна використовувати для вимірювання програми
ззовні.
приклад
Тому що likwid-perfctr заходи на процесори і не поодинокі програми потрібні
щоб переконатися, що процеси та потоки закріплені на виділених ресурсах. Ви можете або закріпити
програму самостійно або скористайтеся вбудованою функцією PIN-коду.
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 ./myApp
Уточнюється, що захід INSTRUCTIONS_RETIRED_SSE вимірюється на лічильнику PMC0 та
подія CPU_CLOCKS_UNHALTED на прилавок PMC3. Можна розрахувати час виконання
всі потоки на основі CPU_CLOCKS_UNHALTED подія. Якщо ви хочете цього, ви повинні включити
цю подію у вашому рядку спеціальної події, як показано вище.
3. Як обгортка зі спеціальним набором подій на Intel:
likwid-perfctr -C 0 -g INSTR_RETIRED_ANY:FIXC0,CPU_CLK_UNHALTED_CORE:FIXC1 ./myApp
На процесорах 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 маркерів. The
наступний фрагмент коду показує необхідні виклики:
#включати
/* тільки один потік викликає init */
якщо (ідентифікатор потоку == 0)
{
likwid_markerInit();
}
/* якщо ви хочете виміряти програму з потоками
* вам потрібно викликати likwid_markerThreadInit() для
* підготовка, приклад з OpenMP */
#pragma omp паралельно
{
likwid_markerThreadInit();
}
БАР'ЄР;
likwid_markerStartRegion("Порівняльний аналіз");
/* ваш код для вимірювання знаходиться тут.*/
likwid_markerStopRegion("Порівняльний аналіз");
БАР'ЄР;
/* знову тільки один потік може закрити маркери */
якщо (ідентифікатор потоку == 0)
{
likwid_markerClose();
}
5. Використання likwid у режимі шкали часу:
likwid-perfctr -c 0-3 -g FLOPS_DP -t 300ms ./myApp > out.txt
Це буде зчитувати лічильники кожні 300 мс на фізичних ядрах 0-3 і записувати результати
out.txt. Для режиму часової шкали є інтерфейс програми likwid-scope, який вмикає
живі сюжети вибраних подій. Щоб отримати додаткові приклади коду, перегляньте likwid WIKI
сторінок. Процеси є НЕ закріплено на ЦП 0-3.
6. Використання likwid в режимі стетоскопа:
likwid-perfctr -c 0-3 -g FLOPS_DP -S 2s
Це запустить лічильники і прочитати їх через 2 секунди на фізичних ядрах 0-3 і записати
результати для стандартного виведення. Процеси є НЕ закріплено на ЦП 0-3.
Використовуйте likwid-perfctr онлайн за допомогою служб onworks.net