Upload
mikhail-kurnosov
View
229
Download
4
Embed Size (px)
Citation preview
MPIPerf: пакет оценки эффективности
коммуникационных функций
стандарта MPI
Курносов Михаил Георгиевич1,2
1 Институт физики полупроводников им. А.В. Ржанова СО РАН,
Новосибирск, Россия
2 Сибирский государственный университет телекоммуникаций и информатики,
Новосибирск, Россия
Международная научная конференция
«Параллельные вычислительные технологии» (ПаВТ-2012),
Новосибирск, 26 – 30 марта 2012 г.
Коммуникационные функции стандарта MPI
Курносов М.Г. MPIPerf 2ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
Тип коммуникационной
операции
Библиотеки стандарта MPI
(MPICH2, Open MPI)
Point-to-point MPI_Send, MPI_Recv
One-to-all Broadcast MPI_Bcast, MPI_Scatter
All-to-one Broadcast MPI_Gather, MPI_Reduce
All-to-all Broadcast MPI_Alltoll, MPI_Allreduce
Synchronization
(Barrier, Eureka)MPI_Barrier
…
Коммуникационные функции стандарта MPI
Курносов М.Г. MPIPerf 3ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
Тип коммуникационной
операции
Библиотеки стандарта MPI
(MPICH2, Open MPI)
Point-to-point MPI_Send, MPI_Recv
One-to-all Broadcast MPI_Bcast, MPI_Scatter
All-to-one Broadcast MPI_Gather, MPI_Reduce
All-to-all Broadcast MPI_Alltoll, MPI_Allreduce
Synchronization
(Barrier, Eureka)MPI_Barrier
…
На коллективные обмены
приходится 70 – 80 % времени всех обменов
MPI-программы (R. Rabenseifner, 2000)
Алгоритмы коллективных операций обмена информацией
Курносов М.Г. MPIPerf 4ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
One-to-all Broadcast (MPI_Bcast, MPI_Scatter)
� Алгоритм биномиального дерева (Binomial tree)
� Scatter + Allgather
All-to-one Broadcast (MPI_Reduce, MPI_Gather):
� Алгоритм биномиального дерева
� Reduce_Scatter + Gather
All-to-all Broadcast
(MPI_Allgather, MPI_Allreduce)
� Алгоритм рекурсивного
сдваивания (Recursive doubling)
� Алгоритм Дж. Брука
(J. Bruck, 1997)Диаграмма выполнения операции MPI_Reduce
алгоритмом биномиального дерева
(суммирование элементов 6 ветвей)
1. Определение оптимального алгоритма коллективной
операции – алгоритма, обеспечивающего минимум времени
её выполнения на заданной подсистеме процессорных ядер
(Bruck vs. Binomial tree vs. Ring).
2. Экспериментальное сравнение эффективности библиотек MPI
(MPICH2 smpcoll vs. OpenMP tuned vs. Intel MPI + Intel mpitune)
3. Верификация аналитических и имитационных моделей
Измерение времени выполнения коллективных операций
Курносов М.Г. MPIPerf 5ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
� �� , �� � log � ∙
∙ � �� ∙ max � �� , �� �� � ���
▪ Аналитические модели оценки времени
выполнения коллективных операций
Время выполнения операции MPI_Reduce
в модели PLogP (T. Angskun et al., 2005):
▪ Имитационные модели выполнения
параллельных программ
LogGOPSim, PSINS, DIMEMAS,
BigSim, MPI-SIM
Измерение времени выполнения коллективных операций
Курносов М.Г. MPIPerf 6ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
int MPI_Bcast(void *buf, int count, MPI_Datatype datatype,
int root, MPI_Comm comm)
1. Задана MPI-функция и значения её параметров
3. Требуется измерить время t выполнения коллективной операции
на заданной подсистеме процессорных ядер
2. Известна подсистема процессорных ядер и распределение
процессов MPI-программы по ним (параметр comm)
� Каждый процесс получает среднее время t выполнения функции.
� Какое значение принимать в качестве итогового времени T?
Методы измерение времени выполнения коллективных операций
Курносов М.Г. MPIPerf 7ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
“Стандартный метод” измерения времени выполнения MPI-функций
(пакеты Intel MPI Benchmarks, mpptest, LLCBench, Phloem, MPIBlib,
OSU Micro-Benchmarks):
� � �� � � ��� ��, ��, … , � !�� ��� � �" �⋯� �$!"
�
MPI_Bcast(buf, count, MPI_BYTE, root, comm) /* Инициализация */
MPI_Barrier(comm) /* Синхронизация */
t = MPI_Wtime()
for i = 1 to k do /* Цикл измерений */
MPI_Bcast(buf, count, MPI_BYTE, root, comm)
end for
t = (MPI_Wtime() – t) / k /* Среднее время одного запуска */
Систематические ошибки измерения времени выполнения коллективных операций
Курносов М.Г. MPIPerf 8ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
1. Время выполнения операции измеряется без её предварительной
инициализации (пакеты Intel MPI Benchmarks, Phloem, MPIBlib, SKaMPI)
Функция
Отношение времени выполнения процессом 0 первого
вызова MPI-функции к её второму вызову
OpenMPI 1.4.4 Intel MPI 4.0.0.028
MPI_Bcast 6178 2.59
MPI_Allgather 5.61 131.80
MPI_Barrier 5.50 9.01
MPI_Reduce 6944 12901
MPI_Allreduce 11.71 353.37
(64 процесса – 8 узлов по 8 ядер, при повторном вызове функции использовался
буфер такого же размера – 8192 байт, но размещенный по другому адресу
в оперативной памяти – для предотвращения загрузки сообщений
из кэш-памяти процессора)
Систематические ошибки измерения времени выполнения коллективных операций
Курносов М.Г. MPIPerf 9ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
2. В качестве конечного значения времени выполнения
коллективной операции принимается только время определенной
ветви (например, ветви 0).
Диаграмма выполнения коллекторного приема (MPI_Reduce)
информации ветвью 0 (алгоритм биномиального дерева, результаты
получены при помощи пакета Intel Trace Analyzer and Collector)
Систематические ошибки измерения времени выполнения коллективных операций
Курносов М.Г. MPIPerf 10ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
3. На каждой итерации цикла измерений используются
различные значения входных параметров.
В пакетах Intel MPI Benchmarks, mpptest при измерении времени
выполнения функции MPI_Bcast на каждой итерации цикла номер
корневой ветви изменяется.
4. Игнорируется иерархическая организация памяти
вычислительных узлов системы.
В некоторых пакетах не учитывается то что, при повторном
использовании одного и того же буфера его данные с большой
вероятностью будут размещены в кэш-памяти процессора.
Систематические ошибки измерения времени выполнения коллективных операций
Курносов М.Г. MPIPerf 11ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
5. Синхронизация ветвей параллельной программы перед
и/или в цикле измерений выполняется при помощи барьерной
синхронизации (MPI_Barrier). Это приводит к неравномерному
смещению моментов запуска операции в ветвях.
MPI_Sendrecv MPI_Sendrecv
MPI_Sendrecv MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_SendrecvP7
P6
P0
P1
P2
P3
P4
P5
t
MPI_Sendrecv MPI_Sendrecv
MPI_Sendrecv MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_Sendrecv
MPI_SendrecvP7
P6
P0
P1
P2
P3
P4
P5
t
Диаграмма выполнения барьерной синхронизации “рассеивающим”
алгоритмом (Dissemination barrier – MPICH2, OpenMPI)
Систематические ошибки измерения времени выполнения коллективных операций
Курносов М.Г. MPIPerf 12ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
6. Измерение времени выполнения функции выполняется
в цикле без синхронизации моментов её запуска в ветвях
(пакеты Intel MPI Benchmarks, mpptest, LLCBench, Phloem, MPIBlib,
OSU Micro-Benchmarks)
Диаграмма выполнения линейного алгоритма трансляционного
обмена (MPI_Bcast) между 4 ветвями параллельной программы
Систематические ошибки измерения времени выполнения коллективных операций
Курносов М.Г. MPIPerf 13ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
Send0
1
2
3
Send Send
Recv Recv Recv
Recv Recv Recv
Recv Recv Recv
Send Send Send
Recv RecvRecv
Recv Recv Recv
Recv Recv Recv
Send Send Send
Recv Recv Recv
Recv Recv Recv
Recv Wait Recv
Send Send Send
Recv
Recv Recv
Recv Wait Recv
Запуск 1 Запуск 2 Запуск 3 Запуск 4
T0 = 12(αααα + mββββ) / 4
T1 = 10(αααα + mββββ) / 4
T2 = 11(αααα + mββββ) / 4
T3 = 12(αααα + mββββ) / 4
Измеренное время:
T0 = 12(αααα + mββββ) / 4
T1 = 10(αααα + mββββ) / 4
T2 = 11(αααα + mββββ) / 4
T3 = 12(αααα + mββββ) / 4
Действительное время:
t0 = 3(αααα + mββββ)
t1 = αααα + mββββ
t2 = 2(αααα + mββββ)
t3 = 3(αααα + mββββ) T3 / t3 = 1
T2 / t2 = 1.4
T1 / t1 = 2.5
T0 / t0 = 1
Отклонение (ошибка):
ττττ
Решение – синхронизация моментов запуска функций в ветвях по
показаниям глобальных часов (пакеты SKaMPI, MPIBench, Netgauge)
Пакет MPIPerf
Курносов М.Г. MPIPerf 14ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
� Разработан пакет MPIPerf для измерения времени выполнения
коллективных операций.
� В пакете учтены известные систематические ошибки измерений
времени выполнения коллективных операций.
� В текущей версии доступны тесты для всех коллективных
операций стандарта MPI 2.2
� Web-сайт: http://mpiperf.cpct.sibsutis.ru
� Git-репозиторий:
git clone https://github.com/mkurnosov/mpiperf.git
0
1
2
3
Пакет MPIPerf
Курносов М.Г. MPIPerf 15ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
t
Bcast
Bcast
Bcast
Bcast
t0 t0 + ∆t t0 + 2∆t t0 + 3∆t
Синхронизация часов: oi
Синхронизация часов: oi
Оценка времени MPI_Bcast: tbcast
Оценка времени MPI_Bcast: tbcast
Инициализация (Warmup)Инициализация (Warmup)
Рассылка процессом 0: t0 = wtime() + tbcast
Рассылка процессом 0: t0 = wtime() + tbcast
…
Этап (stage)
Пакет MPIPerf
Курносов М.Г. MPIPerf 16ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
0
t
1
2
3
Bcast
Bcast
Bcast
Bcast
t0 t0 + ∆t t0 + 2∆t t0 + 3∆t
…
Выбор и корректировка ∆t
• Начальное значение ∆t – максимальное из средних времен выполнения
функции на этапе инициализации.
• Если 25% ветвей выполнили измерение с ошибкой, то ∆t
устанавливается в 150% от максимального времени выполнения этапа.
Условия окончания измерений:
• Достигнуто максимально допустимое значение количества измерений.
• Стандартная ошибка среднего времени выполнения функции достигла
требуемого уровня.
Пакет MPIPerf
Курносов М.Г. MPIPerf 17ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
# ------------------------------------------------------------------
# Bcast time (maximum time off all processes)
# ------------------------------------------------------------------
# [ Count] [Runs][TotalRuns][Mean] [CI LB] [CI UB] [CL] [Err] [RelErr] [StdErr] [RSE] [Min] [Max]
#
1 99 104 0.000014768 0.000014592 0.000014944 95 0.000000176 0.01 0.000000088 0.01 0.000014067 0.000015974
2 92 104 0.000014678 0.000014423 0.000014933 95 0.000000255 0.02 0.000000127 0.01 0.000013828 0.000016928
4 17 24 0.000014544 0.000013979 0.000015108 95 0.000000565 0.04 0.000000245 0.02 0.000013828 0.000015736
8 66 80 0.000014712 0.000014520 0.000014903 95 0.000000192 0.01 0.000000094 0.01 0.000013828 0.000015736
16 90 104 0.000014492 0.000014350 0.000014633 95 0.000000142 0.01 0.000000070 0.00 0.000013828 0.000015259
32 86 104 0.000014609 0.000014433 0.000014784 95 0.000000176 0.01 0.000000087 0.01 0.000013828 0.000015736
64 17 24 0.000015285 0.000014949 0.000015621 95 0.000000336 0.02 0.000000146 0.01 0.000014782 0.000016212
128 40 40 0.000019479 0.000019258 0.000019699 95 0.000000221 0.01 0.000000105 0.01 0.000019073 0.000020027
256 48 48 0.000021219 0.000020744 0.000021694 95 0.000000475 0.02 0.000000230 0.01 0.000020027 0.000023842
512 33 40 0.000023113 0.000022986 0.000023239 95 0.000000126 0.01 0.000000060 0.00 0.000022888 0.000023842
1024 30 32 0.000028729 0.000027712 0.000029747 95 0.000001017 0.04 0.000000477 0.02 0.000026941 0.000034094
2048 104 104 0.000052723 0.000051497 0.000053948 95 0.000001225 0.02 0.000000610 0.01 0.000045061 0.000059843
4096 95 104 0.000138550 0.000084631 0.000192470 95 0.000053920 0.39 0.000026812 0.19 0.000053883 0.000805140
8192 96 104 0.000075072 0.000074458 0.000075686 95 0.000000614 0.01 0.000000305 0.00 0.000071049 0.000078678
16384 46 48 0.000105957 0.000105084 0.000106830 95 0.000000873 0.01 0.000000422 0.00 0.000102997 0.000109911
32768 97 104 0.000226605 0.000212903 0.000240306 95 0.000013701 0.06 0.000006813 0.03 0.000182152 0.000310898
65536 104 104 0.000381016 0.000375652 0.000386379 95 0.000005364 0.01 0.000002671 0.01 0.000362158 0.000455856
131072 104 104 0.000726118 0.000721474 0.000730761 95 0.000004643 0.01 0.000002312 0.00 0.000699997 0.000756025
262144 104 104 0.001325745 0.001320730 0.001330760 95 0.000005015 0.00 0.000002497 0.00 0.001296043 0.001357079
# Elapsed time: 37.404018 sec.
Доверительные интервалы для измеренного времени T :
( ) ,P T t T T t
n n
σ σα− ≤ ≤ + = {0.90,0.95,0.99}α∈
mpiexec –n 64 ./mpiperf -x1 –X64KiB -s64 -r10 –R100 -e3 Bcast
Исследование точности синхронизации
Курносов М.Г. MPIPerf 18ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
Коллективные функции ожидания:
� WaitPatternUp – каждый процесс i ожидает (i + 1)·10–6
секунд (выполняет пустой цикл). Время выполнения
операции: n·10–6 секунд.
� WaitPatternNull – каждый процесс засекает время запуска
операции и сразу завершает её выполнение. Время работы
функции 0 секунд.
Исследование точности синхронизации
Курносов М.Г. MPIPerf 19ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
Зависимость времени t выполнения теста WaitPatternUp
от количества n процессов в программе (MPICH2 1.2.1, таймер
MPI_Wtime; кластер на базе процессоров Intel Xeon E5420
c сетью Gigabit Ethernet)
Исследование точности синхронизации
Курносов М.Г. MPIPerf 20ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
Зависимость времени t выполнения теста WaitPatternUp
от количества n процессов в программе (OpenMPI 1.4.4, кластер с сетью
InfiniBand QDR): 1 – MPIPerf, таймер MPI_Wtime; 2 – пакет SKaMPI,
таймер MPI_Wtime; 3 – пакет MPIPerf, таймер TSC
Исследование точности синхронизации
Курносов М.Г. MPIPerf 21ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
Зависимость времени t выполнения теста WaitPatternNull
от количества n процессов в программе (OpenMPI 1.4.4,
кластер с сетью InfiniBand QDR): 1 – MPIPerf, таймер MPI_Wtime;
2 – MPIPerf, таймер TSC
Сравнение с пакетом SKaMPI
Курносов М.Г. MPIPerf 22ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
Зависимость времени t выполнения функции MPI_Bcast от размера m
передаваемого сообщения: 1 – пакет SKaMPI; 2 – пакет MPIPerf
Воспроизводимость результатов измерений
Курносов М.Г. MPIPerf 23ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
Зависимость относительной ошибки RSE
измерения среднего времени выполнения функции
MPI_Barrier от количества n ветвей в программе:
1 – пакет SKaMPI; 2 – MPIPerf
� Для каждого n
функция запускалась 10
раз и рассчитывалось
значение RSE:
[ ]RSE
M[ ] 10
t
t
σ=
⋅
� Кластер с сетью
InfiniBand QDR
� Библиотека Intel
MPI 4.0.0.028
(MPI_Wtime на
базе регистра TSC)
MPIPerf: пакет оценки эффективности
коммуникационных функций
стандарта MPI
Курносов Михаил Георгиевич
ACKNOWLEDGEMENTS
Работа выполнена в рамках госконтракта № 07.514.11.4015 с Минобрнауки РФ,
при поддержке РФФИ (грант № 11-07-00105) и Совета по грантам Президента РФ
для поддержки ведущих научных школ (грант НШ-2175.2012.9).