Средства профилирования и сбора трасс параллельных программ Глазкова Е. А., 520 гр. Научный руководитель: Попова Н. Н.

Презентация:



Advertisements
Похожие презентации
Матемтааки ЕТ СТ 2 класс Шипилова Наталия Викторовна учитель начальных классов, ВКК Шипилова Наталия Викторовна учитель начальных классов, ВКК.
Advertisements

Анализ результатов краевых диагностических работ по русскому языку в 11-х классах в учебном году.
Применение генетических алгоритмов для генерации числовых последовательностей, описывающих движение, на примере шага вперед человекоподобного робота Ю.К.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Help: настройка Visual Studio.Net для создания консоль-приложения на основе Intel C++ с применением OpenMP. Инструменты «Практическое параллельное программирование.
Масштаб 1 : Приложение 1 к решению Совета депутатов города Новосибирска от
Результаты сбора и обработки баз данных неработающего населения муниципальных общеобразовательных учреждений города Краснодара за период с 02 по 10 февраля.
Date: File:PRO1_04r.1 SIMATIC ® S7 Siemens AG Все права защищены. SITRAIN Training for Automation and Drives Конфигурация оборудования.
Масштаб 1 : Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Объектно-ориентированное программирование Карпов В.Э. Смолток. Лекция 4. Байт-код.
Фрагмент карты градостроительного зонирования территории города Новосибирска Масштаб 1 : 6000 Приложение 7 к решению Совета депутатов города Новосибирска.
T, °C V, м/с Эквивалентные температуры воздуха в штиль(°С) и скорости ветра (м/с) Опас- ность обморо- жения 02,24,46,68,811,013,316,417,
Многопоточное программирование в OpenMP Киреев Сергей ИВМиМГ.

Интернет Университет Суперкомпьютерных технологий Отладка эффективности OpenMP- программ. Учебный курс Параллельное программирование с OpenMP Бахтин В.А.,
Инструменты VS 2010 для работы с XML языком XML редактор. XSLT отладчик XSLT Profiler, инструмент позволяющий разработчикам измерять, оценивать и решать.
1 Знаток математики Тренажер Таблица умножения 2 класс Школа 21 века ®м®м.
ОДНОМЕРНЫЕ МАССИВЫ. РАБОТА С ЭЛЕМЕНТАМИ СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ.
Урок повторения по теме: «Сила». Задание 1 Задание 2.
Рейтинг территорий с преимущественно городским населением по уровню преступности в 2008 году 1ЗАТО «Звездный»33,10 2Гремячинский230,00 3г. Кунгур242,00.
Транксрипт:

Средства профилирования и сбора трасс параллельных программ Глазкова Е. А., 520 гр. Научный руководитель: Попова Н. Н.

Профилирование Профилирование – это создание таблиц, которые обобщают поведение программы. inclusive, exclusive time, # calls, hardware statistics… Отслеживает функции, циклы, другие базовые блоки и сущности, определенные пользователем

Профилирование Имеет низкие накладные расходы (по сравнению с трассировкой), позволяет найти «узкие места» в программе Реализуется через: Sampling – периодические прерывания ОС или прерывания по значению аппаратных счетчиков Instrumentation – вставка в программу кода, измеряющего производительность

Трассировка Трассировка подразумевает запись потока событий: вход/выход в участок кода (функцию, цикл…) взаимодействие процессов (нитей) - приемы/передачи сообщений и т. д. Событие записывается в виде метки, номера процесса (нити), типа события и данных о событии Трасса позволяет анализировать производительность и корректность программы Профиль программы может быть восстановлен по ее трассе. Обычно требует инструментирования кода

GNU Profiler Скомпилировать и собрать программу с флагами -g –pg Запустить программу. В рабочей директории появятся файлы gmon.out.* > gprof gmon.out.15 > report.15 > vi report.15 Проанализировать данные… Flat profile: Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls s/call s/call name Process::jacobi_iteration() random Process::ExchangeData() Matrix3::fill() DMA_RecFifoSimplePollNormalFifoById

Tuning and Analysis Utilities: TAU ( TAU – набор средств для профилирования и сбора трасс параллельных приложений, написанных на языках Fortran, C, C++, Java, Python. Поддерживает различные модели параллельного программирования: MPI, OpenMP, гибрид (MPI + OpenMP). Поддерживает работу с аппаратными счетчиками. Предоставляются средства визуализации данных.

Способы использования TAU собирает информацию во время выполнения программы через инструментацию функций, базовых блоков и отдельных операторов. Инструментация состоит в вызове процедур из библиотеки TAU, которые могут быть включены в код одним из следующих способов: На уровне исходного кода: инструментирование вручную с использованием TAU API автоматическое инструментирование (Program Database Toolkit (PDT), Opari)./configure -xlC -prefix=/home/uname/pdtoolkit-3.15 make clean install

Способы использования На уровне объектного кода: прединструментированные библиотеки (перехват вызовов библиотеки, например, MPI при помощи PMPI) автоматическое инструментирование при помощи компилятора (-optCompInst) На уровне исполняемого кода Java, Python – инструментирование во время выполнения DyninstAPI Инструментирование на базе компонентов (Proxy Components)

Во время выполнения инструментированного приложения собирается множество информации: время, проведенное в каждой функции, количество вызовов функции, показания аппаратных счетчиков и т.д. Данные о производительности после завершения выполнения программы записываются в один или несколько файлов, которые могут быть просмотрены, например, при помощи программ pprof, ParaProf, PerfExplorer. Способы использования Method Requires recompiling Requires PDT Shows MPI events Routine- level event Low level events (loops, phases, etc...) Throttling to reduce overhead Ability to exclude file from instrume ntation Ability to exclude other regions of code Binary rewriting Yes CompilerYes SourceYes

1. Конфигурирование TAU Параметры конфигурации определяют какой тип информации будет собирать TAU во время выполнения программы../configure -arch=bgp -mpi -pdt=/home/uname/pdtoolkit pdt_c++=xlC -BGPTIMERS./configure -arch=bgp -mpi -openmp -opari -pdt=/home/uname/pdtoolkit pdt_c++=xlC -BGPTIMERS Каждая конфигурация создает уникальный Makefile в /home/uname/tau-2.19/bgp/lib/ Скрипты-обертки для компилятора находятся в /home/uname/tau-2.19/bgp/bin/ Добавьте директорию /home/uname/tau-2.19/bgp/lib/ к вашему пути.

2. Переменные окружения Переменная окружения TAU_MAKEFILE задает местоположение мейкфайла TAU. Разным параметрам конфигурации соответствуют разные мейкфайлы. Makefile.tau-bgptimers-mpi-pdt Makefile.tau-bgptimers-mpi-pdt-openmp-opari Makefile.tau-bgptimers-mpi-pdt-trace Установите переменные окружения: export PATH=/home/uname/tau-2.19/bgp/bin:$PATH export TAU_MAKEFILE=/home/uname/tau-2.19/bgp/lib/Makefile.tau -bgptimers-mpi-pdt

3. Компиляция с TAU mpif90 / mpixlf90 ---> tau_f90.sh mpif77 / mpixlf77 ---> tau_f90.sh (add -qfixed for Fortran77) mpicc / mpixlc ---> tau_cc.sh mpicxx/ mpixlcxx ---> tau_cxx.sh После того, как были заданы переменные окружения, следует заменить в makefile стандартные имена компиляторов на скрипты-обертки TAU. При выполнении этих скриптов сначала вызываются средства предобработки TAU, а потом обычные XL или GNU компиляторы. Если требуется собрать данные о производительности разного типа, то необходимо скомпилировать приложение несколько раз с разными TAU_MAKEFILE.

4. Запуск программы с TAU Эти переменные окружения передаются TAU при запуске приложения mpisubmit.bg -n 128 -m dual -env "OMP_NUM_THREADS=2 NPB_MZ_BLOAD=FALSE TAU_TRACK_MESSAGE=1 TAU_COMM_MATRIX=1 TAU_PROFILE=1 TAU_METRICS=TIME PROFILEDIR=TAU_OUTPUT2" sp-mz.D.256

5. Сбор трасс в TAU export TAU_MAKEFILE=/home/uname/tau- 2.19/bgp/lib/Makefile.tau-bgptimers-mpi-pdt mpisubmit.bg … -env "TAU_TRACE=1 TRACEDIR=DIRNAME appl.tau tau_treemerge.pl (собранное на фронтенде) tau2slog2 tau.trc tau.edf –o appl.slog2 jumpshot appl.slog2 Можно конвертировать в otf, vtf, paraver-форматы, а также получить профиль по трассе. Очень тормозит…

6. ParaProf. 3D Communcation matrix

6. ParaProf. Identify the routines that use the most time

mpiP. ( Использование библиотеки mpiP занимает очень небольшой процент от времени работы приложения, вся информация об MPI-вызовах собирается локально в рамках отдельных MPI-процессов и собирается только на последнем этапе работы приложения для формирования общего отчета. mpiP позволяет узнать: mapping процент от времени выполнения программы, который заняли MPI вызовы время выполнения отдельных MPI-вызовов, его разброс для различных процессоров и нескольких выполнений одного вызова статистику для размеров сообщений, передаваемых MPI-вызовами.

Файл вывода библиотеки Command : /gpfs/data/kaelin/jacobi/jac_Hdebug Version : MPIP Build date : Mar , Start time : Stop time : Timer Used : MPIP env var : Collector Rank : Collector PID : Final Output Dir Report generation : Single collector MPI Task Assignment : 0 Rank 0 of 128 MPI Task Assignment : 1 Rank 1 of 128 MPI Task Assignment : 2 Rank 2 of 128 MPI Task Assignment : 3 Rank 3 of 128 R01-M1-N08-J31

Файл вывода библиотеки mpiP MPI Time (seconds) Task AppTime MPITime MPI% AppTime – общее время работы приложения MPITime – время, которое заняли MPI- вызовы Callsites: ID Lev File/Address Line Parent_Funct MPI_Call 1 0 0x [unknown] Recv 2 0 0x [unknown] Send 3 0 0x010029db [unknown] Allreduce Вызовы MPI-функций:

Файл вывода библиотеки mpiP Aggregate Time (top twenty, descending, milliseconds) Call Site Time App% MPI% COV Sendrecv e Sendrecv e Allreduce e MPI-вызовов, занявших наибольшее суммарное (сумма - по всем вызовам и процессам время). Aggregate Sent Message Size (top twenty, descending, bytes) Call Site Count Total Avrg Sent% Sendrecv e e Sendrecv e e MPI-вызовов, передавших наибольший суммарный объем сообщений (сумма - по всем вызовам и процессам).

Файл вывода библиотеки mpiP Callsite Time statistics (all, milliseconds): Name Site Rank Count Max Mean Min App% MPI% Sendrecv Sendrecv Sendrecv Sendrecv Sendrecv 32 * Общая статистика для этого вызова по всем MPI-процессам Статистика для времени отдельных MPI-вызовов (аналогичная таблица есть для размеров сообщений). Использование mpiP: Скомпилировать с флагом –g Собрать с флагами –L/home/uname/mpiP-3.1.2/lib –lmpiP -lm

PAPI PAPI предоставляет разработчику интерфейс и методологию использования аппаратных счетчиков, предоставляемых большинством современных процессоров. ( Используется многими средствами профилирования и сбора трасс (TAU, Scalasca, Vampir, Rice University HPCToolkit и др.). В системе Blue Gene/P PAPI базируется на оригинальном интерфейсе UPC. (universal performance counter) IBM System Blue Gene Solution: Performance Analysis Tools. (

Интеграция форматов средств профилирования и сбора трасс

Другие средства Rice University HPCToolkit ( VampirTrace – средство для сбора трасс в открытом OTF формате. ( einrichtungen/zih/forschung/software_werkze uge_zur_unterstuetzung_von_programmierun g_und_optimierung/vampirtrace/)

Другие средства : Scalasca (KOJAK) ( Трехмерное представление данных. Формат CUBE. Performance Algebra – возможность объединять, усреднять, сравнивать результаты различных экспериментов Автоматический анализ производительности. (Wait at Barrier, Early Reduce, Late Sender, Late Receiver...) Поддержка топологий (физических и виртуальных)

Ссылки sis_Utilities_(TAU) sis_Utilities_(TAU une05_NYCCS_Seminars_TulinKaman.pdf une05_NYCCS_Seminars_TulinKaman.pdf juelich.de/jsc/datapool/page/3521/scalasca-tutorial.pdf juelich.de/jsc/datapool/page/3521/scalasca-tutorial.pdf

Вопросы ?