Опубликован: 11.10.2012 | Уровень: специалист | Доступ: платный
Лекция 3:

Intel® Trace Analyzer and Collector

< Лекция 2 || Лекция 3: 12 || Лекция 4 >

Счетчики

Сбор данных о производительности процессора

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() – завершение.

Некоторые возможности пользовательской инструментовки:

  • Инициализация, управление, завершение.
  • Определение и запись положения в исходном тексте.
  • Определение и запись функций и регионов.
  • Определение изменения состояния.
  • Определение и запись перекрытия областей видимости.
  • Определение групп процессов.
  • Определение и запись счетчиков.
  • Определение событий коммуникации.
< Лекция 2 || Лекция 3: 12 || Лекция 4 >
Евгений Звягин
Евгений Звягин
Россия, Липецк, Липецкий Государственный Технический Университет, 2014
Артур Гибадуллин
Артур Гибадуллин
Россия, Нижневартовск, ФГБОУ ВО НВГУ, Преподаватель