Презентацию к данной лекции Вы можете скачать здесь.
Intel® Trace Analyzer and Collector
Intel® Trace Collector
Инструмент трассировки параллельных приложений, использующих технологию Message Passing Interface (MPI), приложений, работающих с общей памятью, а также обычных (не-MPI) приложений. Построен на основе Vampirtrace.
Intel® Trace Analyzer
Инструмент анализа и визуализации результатов трассировки параллельных приложений, использующих технологию Message Passing Interface (MPI). Графический интерфейс. Разнообразные виды анализа и графического представления его результатов.
Многоплатформенность
Microsoft Windows и Linux. Совместимость с конкретной платформой можно проверить на сайте продуктов http://www.intel.com/software/products/cluster
Входят в состав Intel® Cluster Studio XE
Трассировка
Intel® Trace Collector перехватывает вызовы MPI-функций. Для каждой функции MPI имеется своя "обертка" (wrapper), которая позволяет выполнять дополнительные проверки, не предусмотренные в стандартных реализациях MPI
Intel® Trace Analyzer and Collector
Трассировка выполняется с помощью инструментовки приложения, то есть внедрения в него обращений к функциям, которые собирают статистику по различным событиям.
Виды инструментовки:
При инструментовке на уровне исходного кода используется заголовочный файл VT.h (C/C++) или включаемый файл VT.inc (Fortran).
При инструментовке любого вида используются библиотеки Intel® Trace Collector.
Библиотеки Intel® Trace Collector
| Библиотека | Назначение |
|---|---|
| libVTnull | "Заглушка" |
| libVT | Трассировка MPI-приложений и SHMEM-приложений |
| libVTfs | Безопасная трассировка MPI-приложений и SHMEM-приложений (результаты трассировки сохраняются даже после аварийного завершения приложения) |
| libVTmc | Проверка корректности |
| libVTcs | Трассировка распределенных приложений |
| VT_sample | Автоматическая трассировка счетчиков с PAPI и getrusage |
Утилиты Intel® Trace Collector
| Утилита | Назначение |
|---|---|
| stftool | Преобразование файлов с результатами трассировки |
| xstftool/expandvtlog.pl | Преобразование трассировочных файлов в читаемый формат |
| itcpin | Трассировка бинарных файлов без перекомпиляции |
Сборка исполняемого файла для трассировки MPI-приложения
Linux
mpicc app.o -L$VT_LIB_DIR -lVT $VT_ADD_LIBS -o app mpif77 app.o -L$VT_LIB_DIR -lVT $VT_ADD_LIBS -o app
Microsoft* Windows*
mpiicc app.obj /link /LIBPATH:%VT_LIB_DIR% VT.lib mpiifort app.obj /link /LIBPATH:%VT_LIB_DIR% VT.lib
Запуск файла для трассировки MPI-приложения
Задать значения переменных окружения.
VT_CONFIG
путь к каталогу, где находится конфигурационный файл трассировки.
VT_CONFIG_RANK
ранг процесса (относительно MPI_COMM_WORLD), который должен считывать
конфигурационный файл трассировки.
Приложение запускается как обычное MPI-приложение.
Файл трассировки формируется в памяти и сохраняется на диске после завершения вызова MPI_Finalize. Имя файла <маршрутное имя исполняемого файла>.stf
Идентификация событий в файле трассировки
Стандартные коммуникаторы
COMM_WORLD для MPI_COMM_WORLD COMM_SELF для MPI_COMM_SELF
Пользовательские коммуникаторы - имя формируется из префикса и имени
"старого" коммуникатора.
Для MPI_Comm_create() префикс CREATE
Для MPI_Comm_dup() префикс DUP
Для MPI_Comm_split() префикс SPLIT
Для MPI_Cart_sub() префикс CART_SUB
Для MPI_Cart_create() префикс CART_CREATE
Для MPI_Graph_create() префикс GRAPH_CREATE
Для MPI_Intercomm_merge() префикс MERGE (<oldname 1>/<oldname
2>)
Аварийное завершение MPI-приложения приводит к потере результатов трассировки, если используется библиотека libVT.
Аварийное завершение MPI-приложения НЕ приводит к потере результатов трассировки, если используется библиотека libVTfs. В этом случае при аварийном завершении приложения его процессы "замораживаются" до того момента, когда на диске будет сохранен файл трассировки.
Фиксируются события:
Сигналы– внутренние (ошибки сегментации, ошибки операций
с плавающей точкой) и внешние (SIGINT, SIGTERM). SIGKILL не фиксируется.
Преждевременное завершение – один или несколько процессов
завершились до вызова MPI_Finalize.
Ошибки MPI – ошибки обменов, неправильно заданные
параметры функций MPI.
Блокировки – фиксируются, если в течение некоторого
времени процессы простаивают (находятся в состоянии вызова одной
MPI-функции). Время простоя задается с помощью DEADLOCK-TIMEOUT.
Ошибки параллельного ввода-вывода фиксируются только в среде ОС Linux.
Intel® Trace Collector позволяет выполнять трассировку односторонних обменов.
Intel® Trace Collector позволяет выполнять трассировку приложений, работающих с общей памятью.
Intel® Trace Collector позволяет выполнять трассировку последовательных
приложений (библиотека libVTcs). Для трассировки требуются вызовы
VT_initialize() и VT_finalize().
"Фолдинг" (сокрытие информации) позволяет уменьшить количество трассировочной информации.
Компиляторная инструментовка запускается ключами:
Компиляторы Intel
-tcollect [=библиотека](Linux)
/Qtcollect [=библиотека] (Windows)
Компиляторы GCC
-finstrument-function (Linux)
Бинарная инструментовка
itcpin выполняет подстановку библиотек ITC, их инициализацию,
запись событий входа в функции и выхода из них.
itcpin [<ключи ITC>] -- <командная строка запуска приложения>
Если ключи не указаны, утилита выполняет проверку возможности инструментовки файла и определение способа такой инструментовки.
Ключ --list позволяет определить функции в исполняемом файле.
Результат записывается в формате:
<имя бинарного файла>:<имя исходного файла>:<имя функции>
Трассировка
Ключ --run запускает приложение в режиме сбора статистики. По
умолчанию, если в исполняемом файле содержатся вызовы MPI-функций,
подключается библиотека libVT.
Ключ --insert используется для подключения определенной
библиотеки.
На всех вычислительных узлах Collector должен быть установлен в каталогах с одинаковым маршрутным именем.
Ключ --profile используется для профилирования функций.
Сбор статистики в "облегченном" режиме
Установка переменных окружения
VT_STATISTICS=ON VT_PROCESS=OFF
позволяет собирать статистику в "облегченном" режиме.
Статистика сохраняется в STF-файле.
Каждая строка содержит:
Собирается следующая статистика:
В поле получателя сообщения записывается:
В поле "Сообщение" записывается:
В поле "Количество процессов-участников" записывается отрицательное значение, если сообщение принимается.
| Функция | Записывается при сборе статистики |
|---|---|
MPI_Barrier
|
0 |
MPI_Bcast
|
Число рассылаемых байтов |
MPI_Gather
|
Число отправленных байтов |
MPI_Gatherv
|
Число отправленных байтов |
MPI_Scatter
|
Число полученных байтов |
MPI_Scatterv
|
Число полученных байтов |
MPI_Allgather
|
Число отправленных+полученных байтов |
MPI_Allgatherv
|
Число отправленных+полученных байтов |
MPI_Alltoall
|
Число отправленных+полученных байтов |
MPI_Alltoallv
|
Число отправленных+полученных байтов |
MPI_Reduce
|
Число отправленных байтов |
MPI_Allreduce
|
Число отправленных+полученных байтов |
MPI_Reduce_Scatter |
Число отправленных+полученных байтов |
MPI_Scan
|
Число отправленных+полученных байтов |
Сбор статистики с привязкой к исходному коду
Для сбора статистики с привязкой к исходному коду необходимо выполнить компиляцию с ключом генерации отладочной информации:
mpicc -g -c app.c mpif77 -g -c app.f
Перед запуском программы следует установить значение переменной окружения VT_PCTRACE равным целому положительному числу (например, 5). Другой способ – указать параметры трассировки в конфигурационном файле:
# trace 4 call levels whenever MPI is used ACTIVITY MPI 4 # trace one call level in all routines not mentioned # explicitly; could also be for example, PCTRACE 5 PCTRACE ON
Сбор данных о производительности процессора
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.
Проверка корректности включает:
Проверка корректности реализована в библиотеке libVTmc. По умолчанию результаты проверки корректности не фиксируются. Включить запись можно установкой флага CHECK-TRACING в файле конфигурации.
| 03_01.jpg | Проверка корректности требует дополнительных ресурсов! Проверка корректности реализована только для 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() – завершение.Некоторые возможности пользовательской инструментовки:
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.