Intel Trace Analyzer and Collector

IntelTraceAnalyzerandCollector предназначен для трассировки MPI-процессов.

Основные задачи:

      • Визуализация поведения параллельного приложения;
      • Оценка профилей статистики и балансировки нагрузки;
      • Анализ производительности подпрограмм или блоков кода;
      • Детализация модели обмена, параметров и данных о производительности;
      • Определение горячих точек связи;
      • Уменьшение времени выполнения и повышение эффективности приложения.

Для запуска приложения нужно повторить пункты 1-2 из раздела MPI Performance Snapshot.Затем запустить программу на счет с ключем –trace. Ниже показан пример используемого скрипта:

Для просмотра результатов нужно воспользоваться графической оболочкой ITAC GUI с помощью команды

В результате будет открыто приложение, в которое необходимо загрузить файл (по умолчанию a.out.stf) . Пример работы трассировщика ITAC представлен  на Рис.2.

В верхней части Рис.2. отображается распределение вычислительной нагрузки на MPI-процессах и межпроцессорные коммуникации (шкала Event Timeline), числовые значения отображаются в нижней части рисунка.

itac1

Рис.2  Пример коммуникации в MPI-приложении.

На графике Message Profile можно оценить, какие именно процессы обмениваются сообщениями и какие коммуникации наиболее затратные по времени (Рис. 3).

itac2

Рис.3 Обмены между процессами в MPI приложении.

В пункте Collectiveoperations можно построить таблицу с временными  затратами на коллективные MPI-операции (рис. 4).

Collective_operations-2

Рис. 4 Таблица временных затрат на коллективные операции в MPI-приложении.

Заключение

Из представленного обзора инструментов профилирования и трассировки MPI-приложений можно сделать следующие выводы:

      • MPI Performance Snapshot —  предназначен для  быстрой оценки эффективности, имеет минимальные накладные расходы, обеспечивает профилировку до 32000 MPI процессов, позволяет получить быструю оценку дисбаланса MPI и OpenMP, и получить общую оценку производительности (GFLOPS).
      • Intel Trace Analyzer and Collector —  позволяет провести детальное исследование MPI- приложения, выявить шаблоны коммуникации, локализовать конкретные «узкие» места программы.

MPI Performance Snapshot

MPIPerformanceSnapshot представляет из себя инструмент для профилирования MPI приложений. Данное приложение входит в состав IntelParallelStudio 2017, которая установлена на кластере HybriLIT.

MPIPerformanceSnapshot позволяет анализировать основные параметры, такие как использование памяти, объем пересылок, время работы каждого процесса, задержки в работе и т.д.

Для профилирования приложения необходимо:

  1. Подключить модуль, обеспечивающий поддержку переменных окружения для работы с IntelParallelStudio:

  1. Скомпилировать приложение при помощи подключенной библиотеки MPI:

где name_app.cpp — название компилируемого файла.

  1. Запустить исполняемый файл (по умолчанию a.out) с ключом mps, или при помощи script-файла:

  1. Все полученные профилировщиком данные будет размещены в папке stat_[дата запуска]_[время запуска]. Для генерации отчета в формате HTML (Рис. 1) используется команда:

Рис.1. Скриншот output-файла MPI Perfomance Snapshot (нажмите на картинку, для перехода на страницу отчета).

Для вывода избранной информации по полученным профилировщиком данных о приложении рекомендуется использовать ключи из Таблицы 1, например:

Таблица 1. Ключи для выборки данных

КлючФункционалПример
-R "number"Выводит статистику для конкретного вычислительного узлаmps -R 1
-g Создание HTML отчета mps -g
-sОбщая информацияmps -s
-oСтатистика использования памятиmps -o
-fИнформация о функциях для каждого вычислительного узлаmps -f
-tВремя для каждого вычислительного узлаmps -t
-cКоллективные операции для каждого вычислительного узлаmps -c
-mИнформация об объеме пересылок для каждого вычислительного узлаmps -m
-xПередача данных между вычислительными узламиmps -x
-rПередача данных для каждого вычислительного узлаmps -r
-uИнформация о передаваемых каждой функцией данныхmps -u

Intel Inspector — Memory and Threading Checking

раздел в стадии разработки

Intel VTune — Amplifier Performance Profiler

раздел в стадии разработки

Intel Advisor — Vectorization Optimization and Thread Prototyping

раздел в стадии разработки

Intel Math Kernel Library — Optimized Routines for Science, Engineering,  and  Financial

раздел в стадии разработки

Intel Data Analytics Acceleration Library — Optimized for Data Analytics & Machine Learning

раздел в стадии разработки

Intel® Integrated Performance Primitives — Image, Signal, and Compression Routines

раздел в стадии разработки

Intel Math Kernel Library — Optimized Routines for Science, Engineering,  and  Financial

раздел в стадии разработки

Intel Threading Building Blocks — Task-Based Parallel C++ Template Library

раздел в стадии разработки