Россия, Липецк, Липецкий Государственный Технический Университет, 2014 |
Intel® Trace Analyzer and Collector
Счетчики
Сбор данных о производительности процессора
PAPI (Performance Application Programming Interface) – интерфейс, позволяющий собирать статистику с аппаратных счетчиков и системную статистику.
Поддержка PAPI реализована поверх ITC – в файле VT_sample.c.
Сбор статистики с аппаратных счетчиков включается с помощью опции конфигурации:
COUNTER <имя счетчика> ON
В имени счетчика допускается использование метасимвола *.
Системные счетчики (список неполон)
Название счетчика | Единицы измерения | Собираемая информация |
---|---|---|
RU_UTIME | Сек. | Время в режиме задачи |
RU_STIME | Сек. | Время в режиме ядра |
RU_MAXRSS | Байты | Максимальный размер резидентной части |
RU_IXRSS | Байты | Суммарный размер разделяемой памяти |
RU_MAJFLT | # | Ошибки страниц |
RU_NSWAP | # | Выгрузки |
RU_INBLOCK | # | Блочные операции ввода |
RU_OUBLOCK | # | Блочные операции вывода |
RU_MSGSND | # | Отправленные сообщения |
RU_MSGRCV | # | Полученные сообщения |
RU_NSIGNALS | # | Полученные сигналы |
Системные счетчики (локальные, для узла)
Название счетчика | Единицы измерения | Собираемая информация |
---|---|---|
disk_io | кб/сек | Ввод-вывод на диск |
net_io | кб/сек | Сетевой ввод-вывод (не включает транспортный уровень MPI) |
cpu_ . . . | % | Средняя доля процессорного времени всех процессоров, проведенного в . . . |
cpu_idle | % | . . . режиме простоя |
cpu_sys | % | . . . режиме ядра |
cpu_usr | % | . . . режиме задачи |
"Заглушки"
Заглушка – библиотека VTnull.
Проверка корректности
Проверка корректности включает:
- проверку переносимости;
- проверку нарушений стандарта MPI, не приводящие к немедленным фатальным последствиям, но проявляющиеся при переходе на другие платформы или к другим реализациям MPI;
- проверку ошибок в среде исполнения.
Проверка корректности реализована в библиотеке libVTmc. По умолчанию результаты проверки корректности не фиксируются. Включить запись можно установкой флага CHECK-TRACING в файле конфигурации.
Проверка корректности требует дополнительных ресурсов! Проверка корректности реализована только для Intel® MPI Library! |
Как это делается:
1 вариант. При запуске использовать переменную окружения LD_PRELOAD (только Linux):
mpiexec -genv LD_PRELOAD libVTmc.so -n ...
2 вариант. Бинарная инструментовка.
3 вариант. Пересборка приложения.
4 вариант. Использование ключа –check для mpiexec (только Intel® MPI).
Для того, чтобы добавить результат в трассировочный файл
Установить значение переменной окружения При запуске использовать переменную окружения VT_CHECK_TRACING, например:
mpiexec -genv LD_PRELOAD libVTmc.so -genv VT_CHECK_TRACING on -n ...
Сигнатуры ошибок
Локальные ошибки
Сигнатура | Описание |
---|---|
LOCAL:EXIT:SIGNAL | Процесс остановлен "фатальным" сигналом |
LOCAL:EXIT:BEFORE_MPI_FINALIZE | Процесс завершен без вызова MPI_Finalize() |
LOCAL:MEMORY:OVERLAP | Несколько операций MPI используют одну область памяти |
LOCAL:MEMORY:ILLEGAL_MODIFICATION | Некорректная модификация данных |
LOCAL:MEMORY:INACCESSIBLE | Буфер недоступен |
LOCAL:MEMORY:ILLEGAL_ACCESS | Некорректный доступ к памяти, уже используемой MPI |
LOCAL:MEMORY:INITIALIZATION | Проверка распределенной памяти |
LOCAL:REQUEST:ILLEGAL_CALL | Неправильная последовательность вызовов |
LOCAL:REQUEST:NOT_FREED | Неправильная последовательность вызовов |
LOCAL:BUFFER:INSUFFICIENT_BUFFER | Недостаточно памяти для буферизованной отправки сообщения |
Глобальные ошибки
Сигнатура ошибки | Описание |
GLOBAL:MSG/COLLECTIVE:DATATYPE:MISMATCH | Несогласованность типов |
GLOBAL:MSG/COLLECTIVE:DATA_TRANSMISSION_CORRUPTED | Модификация данных во время передачи |
GLOBAL:MSG:PENDING | Завершение программы до приема всех сообщений |
GLOBAL:DEADLOCK:HARD | Цикл процессов, ожидающих друг друга |
GLOBAL:DEADLOCK:NO_PROGRESS | Возможна блокировка |
GLOBAL:COLLECTIVE:OPERATION_MISMATCH | Процессы участвуют в разных коллективных операция |
GLOBAL:COLLECTIVE:REDUCTION_OPERATION_MISMATCH | Данных больше или меньше, чем должно быть |
GLOBAL:COLLECTIVE:SIZE_MISMATCH | Ошибка в операции приведения |
GLOBAL:COLLECTIVE:INVALID_PARAMETER | Неправильные параметры коллективной операции |
Инструментовка, определенная пользователем
Intel® Trace Collector позволяет пользователю описать процесс трассировки. Инструментовка выполняется на уровне исходного кода.
Заголовочный файл VT.h для программ на C/C++. Включаемый файл VT.inc для программ на Fortran.
Минимальный набор функций:
- VT_initialize() – инициализация;
- VT_getrank() – ID процесса;
- VT_finalize() – завершение.
Некоторые возможности пользовательской инструментовки:
- Инициализация, управление, завершение.
- Определение и запись положения в исходном тексте.
- Определение и запись функций и регионов.
- Определение изменения состояния.
- Определение и запись перекрытия областей видимости.
- Определение групп процессов.
- Определение и запись счетчиков.
- Определение событий коммуникации.