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

Средства профилирования и сбора трасс параллельных программ

  • Upload
    charla

  • View
    53

  • Download
    3

Embed Size (px)

DESCRIPTION

Средства профилирования и сбора трасс параллельных программ. Глазкова Е. А., 520 гр. Научный руководитель: Попова Н. Н. Профилирование. Профилирование – это создание таблиц, которые обобщают поведение программы. inclusive, exclusive time , # calls, hardware statistics…. - PowerPoint PPT Presentation

Citation preview

Page 1: Средства профилирования и сбора трасс параллельных программ

Средства профилирования и сбора трасс параллельных программ

Глазкова Е. А., 520 гр.

Научный руководитель:

Попова Н. Н.

Page 2: Средства профилирования и сбора трасс параллельных программ

Профилирование Профилирование –

это создание таблиц, которые обобщают поведение программы.

inclusive, exclusive time, # calls, hardware statistics…

Отслеживает функции, циклы, другие базовые блоки и сущности, определенные пользователем

Page 3: Средства профилирования и сбора трасс параллельных программ

Профилирование Имеет низкие накладные расходы (по

сравнению с трассировкой), позволяет найти «узкие места» в программе

Реализуется через: Sampling – периодические прерывания

ОС или прерывания по значению аппаратных счетчиков

Instrumentation – вставка в программу кода, измеряющего производительность

Page 4: Средства профилирования и сбора трасс параллельных программ

Трассировка Трассировка подразумевает запись потока событий:

вход/выход в участок кода (функцию, цикл…) взаимодействие процессов (нитей) - приемы/передачи

сообщений и т. д. Событие записывается в виде метки, номера

процесса (нити), типа события и данных о событии Трасса позволяет анализировать производительность

и корректность программы Профиль программы может быть восстановлен по ее

трассе. Обычно требует инструментирования кода

Page 5: Средства профилирования и сбора трасс параллельных программ

GNU Profiler Скомпилировать и собрать программу с флагами -g –pg Запустить программу. В рабочей директории появятся

файлы gmon.out.* > gprof <yourexe> 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 75.00 39.36 39.36 20 1.97 1.97 Process::jacobi_iteration()14.46 46.95 7.59 random 5.77 49.98 3.03 20 0.15 0.15 Process::ExchangeData() 1.33 50.68 0.70 1 0.70 0.70 Matrix3::fill() 0.99 51.20 0.52 DMA_RecFifoSimplePollNormalFifoById

Page 6: Средства профилирования и сбора трасс параллельных программ

Tuning and Analysis Utilities: TAU(http://www.cs.uoregon.edu/research/tau)

TAU – набор средств для профилирования и сбора трасс параллельных приложений, написанных на языках Fortran, C, C++, Java, Python.

Поддерживает различные модели параллельного программирования: MPI, OpenMP, гибрид (MPI + OpenMP).

Поддерживает работу с аппаратными счетчиками.

Предоставляются средства визуализации данных.

Page 7: Средства профилирования и сбора трасс параллельных программ

Способы использования TAU собирает информацию во время выполнения

программы через инструментацию функций, базовых блоков и отдельных операторов. Инструментация состоит в вызове процедур из библиотеки TAU, которые могут быть включены в код одним из следующих способов:

На уровне исходного кода: инструментирование вручную с использованием

TAU API автоматическое инструментирование (Program

Database Toolkit (PDT), Opari)

./configure -xlC -prefix=/home/uname/pdtoolkit-3.15make clean install

Page 8: Средства профилирования и сбора трасс параллельных программ

Способы использования На уровне объектного кода:

прединструментированные библиотеки (перехват вызовов библиотеки, например, MPI при помощи PMPI)

автоматическое инструментирование при помощи компилятора (-optCompInst)

На уровне исполняемого кода Java, Python – инструментирование во время

выполнения DyninstAPI

Инструментирование на базе компонентов (Proxy Components)

Page 9: Средства профилирования и сбора трасс параллельных программ

Во время выполнения инструментированного приложения собирается множество информации: время, проведенное в каждой функции, количество вызовов функции, показания аппаратных счетчиков и т.д.

Данные о производительности после завершения выполнения программы записываются в один или несколько файлов, которые могут быть просмотрены, например, при помощи программ pprof, ParaProf, PerfExplorer.

Способы использования

MethodRequires recompiling

Requires PDT

Shows MPI events

Routine-level event

Low level events (loops, phases, etc...)

Throttling to reduce overhead

Ability to exclude file from instrumentation

Ability to exclude other regions of code

Binary rewriting

    Yes     Yes Yes  

Compiler Yes   Yes Yes   Yes Yes  

Source Yes Yes Yes Yes Yes Yes Yes Yes

Page 10: Средства профилирования и сбора трасс параллельных программ

1. Конфигурирование TAU Параметры конфигурации определяют какой тип

информации будет собирать TAU во время выполнения программы.

./configure -arch=bgp -mpi -pdt=/home/uname/pdtoolkit-3.15 -pdt_c++=xlC -BGPTIMERS

./configure -arch=bgp -mpi -openmp -opari -pdt=/home/uname/pdtoolkit-3.15 -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/ к вашему пути.

Page 11: Средства профилирования и сбора трасс параллельных программ

2. Переменные окружения Переменная окружения TAU_MAKEFILE задает

местоположение мейкфайла TAU. Разным параметрам конфигурации соответствуют разные мейкфайлы.

Makefile.tau-bgptimers-mpi-pdtMakefile.tau-bgptimers-mpi-pdt-openmp-opariMakefile.tau-bgptimers-mpi-pdt-trace

Установите переменные окружения:

export PATH=/home/uname/tau-2.19/bgp/bin:$PATHexport TAU_MAKEFILE=/home/uname/tau-2.19/bgp/lib/Makefile.tau-bgptimers-mpi-pdt

Page 12: Средства профилирования и сбора трасс параллельных программ

3. Компиляция с TAU

mpif90 / mpixlf90 ---> tau_f90.sh mpif77 / mpixlf77 ---> tau_f90.sh (add -qfixed for Fortran77)mpicc / mpixlc ---> tau_cc.shmpicxx/ mpixlcxx ---> tau_cxx.sh

После того, как были заданы переменные окружения, следует заменить в makefile стандартные имена компиляторов на скрипты-обертки TAU.

При выполнении этих скриптов сначала вызываются средства предобработки TAU, а потом обычные XL или GNU компиляторы.

Если требуется собрать данные о производительности разного типа, то необходимо скомпилировать приложение несколько раз с разными TAU_MAKEFILE.

Page 13: Средства профилирования и сбора трасс параллельных программ

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

Page 14: Средства профилирования и сбора трасс параллельных программ

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-форматы, а также получить профиль по трассе. Очень тормозит…

Page 15: Средства профилирования и сбора трасс параллельных программ

6. ParaProf.3D Communcation matrix

Page 16: Средства профилирования и сбора трасс параллельных программ

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

Page 17: Средства профилирования и сбора трасс параллельных программ

mpiP. (http://mpip.sourceforge.net) Использование библиотеки mpiP занимает очень

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

mpiP позволяет узнать: mapping процент от времени выполнения программы, который

заняли MPI вызовы время выполнения отдельных MPI-вызовов, его разброс

для различных процессоров и нескольких выполнений одного вызова

статистику для размеров сообщений, передаваемых MPI-вызовами.

Page 18: Средства профилирования и сбора трасс параллельных программ

Файл вывода библиотеки mpiP@ mpiP@ Command : /gpfs/data/kaelin/jacobi/jac_Hdebug 2304 1280 2560 1 1 128 5

@ Version : 3.1.2@ MPIP Build date : Mar 9 2009, 22:17:50@ Start time : 1970 01 01 00:00:40@ Stop time : 1970 01 01 00:01:42@ Timer Used : gettimeofday@ MPIP env var : [null]@ Collector Rank : 0@ Collector PID : 100@ Final Output Dir : .@ Report generation : Single collector task@ MPI Task Assignment : 0 Rank 0 of 128 <0,0,0,0> R01-M1-N08-J23@ MPI Task Assignment : 1 Rank 1 of 128 <1,0,0,0> R01-M1-N08-J04@ MPI Task Assignment : 2 Rank 2 of 128 <2,0,0,0> R01-M1-N08-J12@ MPI Task Assignment : 3 Rank 3 of 128 <3,0,0,0> R01-M1-N08-J31

Page 19: Средства профилирования и сбора трасс параллельных программ

Файл вывода библиотеки mpiP-------------------------------------@--- MPI Time (seconds) --------------------------------------------------Task AppTime MPITime MPI% 0 61.7 2.78 4.50 1 61.7 2.78 4.50 2 61.7 2.78 4.50 3 61.7 2.78 4.50

AppTime – общее время работы приложенияMPITime – время, которое заняли MPI-вызовы

-----------------------------------------------------------@--- Callsites: 34 --------------------------------------------------------------------------------------------------- ID Lev File/Address Line Parent_Funct MPI_Call 1 0 0x01002517 [unknown] Recv 2 0 0x01002477 [unknown] Send 3 0 0x010029db [unknown] Allreduce

Вызовы MPI-функций:

Page 20: Средства профилирования и сбора трасс параллельных программ

Файл вывода библиотеки mpiP----------------------------------------------------------@- Aggregate Time (top twenty, descending, milliseconds)------------------------------------------------------------Call Site Time App% MPI% COVSendrecv 31 1.6e+05 2.02 44.92 0.02Sendrecv 32 1.59e+05 2.02 44.83 0.01Allreduce 11 1.48e+04 0.19 4.16 0.2120 MPI-вызовов, занявших наибольшее суммарное (сумма - по всем вызовам и процессам время).

--------------------------------------------------------------@- Aggregate Sent Message Size (top twenty, descending, bytes)--------------------------------------------------------------Call Site Count Total Avrg Sent%Sendrecv 32 2520 5.95e+10 2.36e+07 49.61Sendrecv 31 2520 5.95e+10 2.36e+07 49.61

20 MPI-вызовов, передавших наибольший суммарный объем сообщений (сумма - по всем вызовам и процессам).

Page 21: Средства профилирования и сбора трасс параллельных программ

Файл вывода библиотеки mpiP----------------------------------------------------------@--- Callsite Time statistics (all, milliseconds): 3840 ------------------------------------------------------------Name Site Rank Count Max Mean Min App% MPI%Sendrecv 32 1 20 63.1 63 63 2.04 45.35Sendrecv 32 2 20 63.7 63 63 2.04 45.35Sendrecv 32 3 20 63 63 63 2.04 45.33Sendrecv 32 4 20 63.1 63 63 2.04 45.34.........................................................Sendrecv 32 * 2520 187 63.3 62.9 2.02 44.83Общая статистика для этого вызова по всем MPI-процессам

Статистика для времени отдельных MPI-вызовов (аналогичная таблица есть для размеров сообщений).

Использование mpiP:Скомпилировать с флагом –gСобрать с флагами –L/home/uname/mpiP-3.1.2/lib –lmpiP -lm

Page 22: Средства профилирования и сбора трасс параллельных программ

PAPI PAPI предоставляет разработчику интерфейс и

методологию использования аппаратных счетчиков, предоставляемых большинством современных процессоров. (http://icl.cs.utk.edu/papi)

Используется многими средствами профилирования и сбора трасс (TAU, Scalasca, Vampir, Rice University HPCToolkit и др.).

В системе Blue Gene/P PAPI базируется на оригинальном интерфейсе UPC. (universal performance counter)

IBM System Blue Gene Solution: Performance Analysis Tools. (http://www.redbooks.ibm.com/abstracts/redp4256.html)

Page 23: Средства профилирования и сбора трасс параллельных программ

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

Page 24: Средства профилирования и сбора трасс параллельных программ

Другие средства Rice University HPCToolkit (

http://hpctoolkit.org) VampirTrace – средство для сбора трасс в

открытом OTF формате.

(http://tu-dresden.de/die_tu_dresden/zentrale_

einrichtungen/zih/forschung/software_werkzeuge_zur_unterstuetzung_von_programmierung_und_optimierung/vampirtrace/)

Page 25: Средства профилирования и сбора трасс параллельных программ

Другие средства : Scalasca (KOJAK) (http://www.scalasca.org)

Трехмерное представление данных. Формат CUBE.

Performance Algebra – возможность объединять, усреднять, сравнивать результаты различных экспериментов

Автоматический анализ производительности. (Wait at Barrier, Early Reduce, Late Sender, Late Receiver...)

Поддержка топологий (физических и виртуальных)

Page 26: Средства профилирования и сбора трасс параллельных программ

Ссылки https://wiki.alcf.anl.gov/index.php/Tuning_and_Analy

sis_Utilities_(TAU)

http://www.ams.sunysb.edu/~tkaman/BlueGene/2009June05_NYCCS_Seminars_TulinKaman.pdf

www.paratools.com/otf/otftutorial.ppt

http://www.fz-juelich.de/jsc/datapool/page/3521/scalasca-tutorial.pdf

http://www.fz-juelich.de/jsc/docs/autoren2005/moore1

Page 27: Средства профилирования и сбора трасс параллельных программ

Вопросы

?