MPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPI
1. MPIPerf: пакет оценки эффективности
коммуникационных функций
стандарта MPI
Курносов Михаил Георгиевич1,2
mkurnosov@gmail.com
1 Институт физики полупроводников им. А.В. Ржанова СО РАН,
Новосибирск, Россия
2 Сибирский государственный университет телекоммуникаций и информатики,
Новосибирск, Россия
Международная научная конференция
«Параллельные вычислительные технологии» (ПаВТ-2012),
Новосибирск, 26 – 30 марта 2012 г.
2. Коммуникационные функции стандарта 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
…
3. Коммуникационные функции стандарта 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)
4. Алгоритмы коллективных операций обмена информацией
Курносов М.Г. 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 ветвей)
5. 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
6. Измерение времени выполнения коллективных операций
Курносов М.Г. 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)
7. Каждый процесс получает среднее время 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 /* Среднее время одного запуска */
8. Систематические ошибки измерения времени выполнения
коллективных операций
Курносов М.Г. 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 байт, но размещенный по другому адресу
в оперативной памяти – для предотвращения загрузки сообщений
из кэш-памяти процессора)
9. Систематические ошибки измерения времени выполнения
коллективных операций
Курносов М.Г. MPIPerf 9ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
2. В качестве конечного значения времени выполнения
коллективной операции принимается только время определенной
ветви (например, ветви 0).
Диаграмма выполнения коллекторного приема (MPI_Reduce)
информации ветвью 0 (алгоритм биномиального дерева, результаты
получены при помощи пакета Intel Trace Analyzer and Collector)
10. Систематические ошибки измерения времени выполнения
коллективных операций
Курносов М.Г. MPIPerf 10ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
3. На каждой итерации цикла измерений используются
различные значения входных параметров.
В пакетах Intel MPI Benchmarks, mpptest при измерении времени
выполнения функции MPI_Bcast на каждой итерации цикла номер
корневой ветви изменяется.
4. Игнорируется иерархическая организация памяти
вычислительных узлов системы.
В некоторых пакетах не учитывается то что, при повторном
использовании одного и того же буфера его данные с большой
вероятностью будут размещены в кэш-памяти процессора.
11. Систематические ошибки измерения времени выполнения
коллективных операций
Курносов М.Г. 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)
12. Систематические ошибки измерения времени выполнения
коллективных операций
Курносов М.Г. MPIPerf 12ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
6. Измерение времени выполнения функции выполняется
в цикле без синхронизации моментов её запуска в ветвях
(пакеты Intel MPI Benchmarks, mpptest, LLCBench, Phloem, MPIBlib,
OSU Micro-Benchmarks)
Диаграмма выполнения линейного алгоритма трансляционного
обмена (MPI_Bcast) между 4 ветвями параллельной программы
14. Пакет 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
15. 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)
16. Пакет 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% от максимального времени выполнения этапа.
Условия окончания измерений:
• Достигнуто максимально допустимое значение количества измерений.
• Стандартная ошибка среднего времени выполнения функции достигла
требуемого уровня.
18. Исследование точности синхронизации
Курносов М.Г. MPIPerf 18ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
Коллективные функции ожидания:
WaitPatternUp – каждый процесс i ожидает (i + 1)·10–6
секунд (выполняет пустой цикл). Время выполнения
операции: n·10–6 секунд.
WaitPatternNull – каждый процесс засекает время запуска
операции и сразу завершает её выполнение. Время работы
функции 0 секунд.
19. Исследование точности синхронизации
Курносов М.Г. MPIPerf 19ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
Зависимость времени t выполнения теста WaitPatternUp
от количества n процессов в программе (MPICH2 1.2.1, таймер
MPI_Wtime; кластер на базе процессоров Intel Xeon E5420
c сетью Gigabit Ethernet)
20. Исследование точности синхронизации
Курносов М.Г. 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
21. Исследование точности синхронизации
Курносов М.Г. MPIPerf 21ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
Зависимость времени t выполнения теста WaitPatternNull
от количества n процессов в программе (OpenMPI 1.4.4,
кластер с сетью InfiniBand QDR): 1 – MPIPerf, таймер MPI_Wtime;
2 – MPIPerf, таймер TSC
22. Сравнение с пакетом SKaMPI
Курносов М.Г. MPIPerf 22ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.
Зависимость времени t выполнения функции MPI_Bcast от размера m
передаваемого сообщения: 1 – пакет SKaMPI; 2 – пакет MPIPerf
23. Воспроизводимость результатов измерений
Курносов М.Г. 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)
24. MPIPerf: пакет оценки эффективности
коммуникационных функций
стандарта MPI
Курносов Михаил Георгиевич
mkurnosov@gmail.com
ACKNOWLEDGEMENTS
Работа выполнена в рамках госконтракта № 07.514.11.4015 с Минобрнауки РФ,
при поддержке РФФИ (грант № 11-07-00105) и Совета по грантам Президента РФ
для поддержки ведущих научных школ (грант НШ-2175.2012.9).