SlideShare a Scribd company logo
1 of 24
Download to read offline
MPIPerf: пакет оценки эффективности
коммуникационных функций
стандарта MPI
Курносов Михаил Георгиевич1,2
mkurnosov@gmail.com
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 Recv
Recv
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
Курносов Михаил Георгиевич
mkurnosov@gmail.com
ACKNOWLEDGEMENTS
Работа выполнена в рамках госконтракта № 07.514.11.4015 с Минобрнауки РФ,
при поддержке РФФИ (грант № 11-07-00105) и Совета по грантам Президента РФ
для поддержки ведущих научных школ (грант НШ-2175.2012.9).

More Related Content

What's hot

Распределенные мультикластерные вычислительные системы и параллельное мультип...
Распределенные мультикластерные вычислительные системы и параллельное мультип...Распределенные мультикластерные вычислительные системы и параллельное мультип...
Распределенные мультикластерные вычислительные системы и параллельное мультип...
Mikhail Kurnosov
 
Multiprocessor Programming Intro (lecture 1)
Multiprocessor Programming Intro (lecture 1)Multiprocessor Programming Intro (lecture 1)
Multiprocessor Programming Intro (lecture 1)
Dmitry Tsitelov
 
Cтруктурно-ориентированные алгоритмы коллективных обменов в распределенных вы...
Cтруктурно-ориентированные алгоритмы коллективных обменов в распределенных вы...Cтруктурно-ориентированные алгоритмы коллективных обменов в распределенных вы...
Cтруктурно-ориентированные алгоритмы коллективных обменов в распределенных вы...
Mikhail Kurnosov
 
20090721 hpc exercise2
20090721 hpc exercise220090721 hpc exercise2
20090721 hpc exercise2
Michael Karpov
 

What's hot (15)

"Лавриненко Ярослав" HPC GPU CUDA
"Лавриненко Ярослав" HPC GPU CUDA"Лавриненко Ярослав" HPC GPU CUDA
"Лавриненко Ярослав" HPC GPU CUDA
 
кластеры и суперкомпьютеры
кластеры и суперкомпьютерыкластеры и суперкомпьютеры
кластеры и суперкомпьютеры
 
CUDA-Aware MPI notes
CUDA-Aware MPI notesCUDA-Aware MPI notes
CUDA-Aware MPI notes
 
Распределенные мультикластерные вычислительные системы и параллельное мультип...
Распределенные мультикластерные вычислительные системы и параллельное мультип...Распределенные мультикластерные вычислительные системы и параллельное мультип...
Распределенные мультикластерные вычислительные системы и параллельное мультип...
 
Multiprocessor Programming Intro (lecture 1)
Multiprocessor Programming Intro (lecture 1)Multiprocessor Programming Intro (lecture 1)
Multiprocessor Programming Intro (lecture 1)
 
Cтруктурно-ориентированные алгоритмы коллективных обменов в распределенных вы...
Cтруктурно-ориентированные алгоритмы коллективных обменов в распределенных вы...Cтруктурно-ориентированные алгоритмы коллективных обменов в распределенных вы...
Cтруктурно-ориентированные алгоритмы коллективных обменов в распределенных вы...
 
О.В.Сухорослов "Паралленльные вычисления"
О.В.Сухорослов "Паралленльные вычисления"О.В.Сухорослов "Паралленльные вычисления"
О.В.Сухорослов "Паралленльные вычисления"
 
Prezent
PrezentPrezent
Prezent
 
Prezent
PrezentPrezent
Prezent
 
О.В.Сухорослов "Распределенное программирование. Разбор ДЗ №2"
О.В.Сухорослов "Распределенное программирование. Разбор ДЗ №2"О.В.Сухорослов "Распределенное программирование. Разбор ДЗ №2"
О.В.Сухорослов "Распределенное программирование. Разбор ДЗ №2"
 
О.В.Сухорослов "Параллельное программирование"
О.В.Сухорослов "Параллельное программирование"О.В.Сухорослов "Параллельное программирование"
О.В.Сухорослов "Параллельное программирование"
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
 
20090721 hpc exercise2
20090721 hpc exercise220090721 hpc exercise2
20090721 hpc exercise2
 
Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)
 
Вечный вопрос измерения времени
Вечный вопрос измерения времениВечный вопрос измерения времени
Вечный вопрос измерения времени
 

Similar to MPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPI

Стандарт MPI (Message Passing Interface)
Стандарт MPI (Message Passing Interface)Стандарт MPI (Message Passing Interface)
Стандарт MPI (Message Passing Interface)
Mikhail Kurnosov
 
Пространственно-распределенная мультикластерная вычислительная система: архит...
Пространственно-распределенная мультикластерная вычислительная система: архит...Пространственно-распределенная мультикластерная вычислительная система: архит...
Пространственно-распределенная мультикластерная вычислительная система: архит...
Mikhail Kurnosov
 
Bgp архитектура
Bgp архитектураBgp архитектура
Bgp архитектура
Michael Karpov
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
yaevents
 
06 vasenin roganov siis_2013
06 vasenin roganov siis_201306 vasenin roganov siis_2013
06 vasenin roganov siis_2013
Marina_creautor
 
инструменты параллельного программирования
инструменты параллельного программированияинструменты параллельного программирования
инструменты параллельного программирования
Alexander Petrov
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
Computer Science Club
 
Программное обеспечение для автоматизации испытаний сложных программно-аппара...
Программное обеспечение для автоматизации испытаний сложных программно-аппара...Программное обеспечение для автоматизации испытаний сложных программно-аппара...
Программное обеспечение для автоматизации испытаний сложных программно-аппара...
SQALab
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1
Michael Karpov
 

Similar to MPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPI (20)

Стандарт MPI (Message Passing Interface)
Стандарт MPI (Message Passing Interface)Стандарт MPI (Message Passing Interface)
Стандарт MPI (Message Passing Interface)
 
Лекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPIЛекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPI
 
Пространственно-распределенная мультикластерная вычислительная система: архит...
Пространственно-распределенная мультикластерная вычислительная система: архит...Пространственно-распределенная мультикластерная вычислительная система: архит...
Пространственно-распределенная мультикластерная вычислительная система: архит...
 
Bgp архитектура
Bgp архитектураBgp архитектура
Bgp архитектура
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
 
Распределенная статистическая система машинного перевода (Distributed statist...
Распределенная статистическая система машинного перевода (Distributed statist...Распределенная статистическая система машинного перевода (Distributed statist...
Распределенная статистическая система машинного перевода (Distributed statist...
 
Petsc+slepc slides
Petsc+slepc slidesPetsc+slepc slides
Petsc+slepc slides
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
 
Статистическая система машинного перевода, текст диплома
Статистическая система машинного перевода, текст диплома Статистическая система машинного перевода, текст диплома
Статистическая система машинного перевода, текст диплома
 
06 vasenin roganov siis_2013
06 vasenin roganov siis_201306 vasenin roganov siis_2013
06 vasenin roganov siis_2013
 
инструменты параллельного программирования
инструменты параллельного программированияинструменты параллельного программирования
инструменты параллельного программирования
 
Lekt 04 5-osi_decrypted
Lekt 04 5-osi_decryptedLekt 04 5-osi_decrypted
Lekt 04 5-osi_decrypted
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
Lekt 13 snmup_decrypted
Lekt 13 snmup_decryptedLekt 13 snmup_decrypted
Lekt 13 snmup_decrypted
 
РЕАЛИЗАЦИЯ РАДИАЛЬНО-БАЗИСНОЙ НЕЙРОННОЙ СЕТИ НА МАССИВНО-ПАРАЛЛЕЛЬНОЙ АРХИТЕК...
РЕАЛИЗАЦИЯ РАДИАЛЬНО-БАЗИСНОЙ НЕЙРОННОЙ СЕТИ НА МАССИВНО-ПАРАЛЛЕЛЬНОЙ АРХИТЕК...РЕАЛИЗАЦИЯ РАДИАЛЬНО-БАЗИСНОЙ НЕЙРОННОЙ СЕТИ НА МАССИВНО-ПАРАЛЛЕЛЬНОЙ АРХИТЕК...
РЕАЛИЗАЦИЯ РАДИАЛЬНО-БАЗИСНОЙ НЕЙРОННОЙ СЕТИ НА МАССИВНО-ПАРАЛЛЕЛЬНОЙ АРХИТЕК...
 
Программное обеспечение для автоматизации испытаний сложных программно-аппара...
Программное обеспечение для автоматизации испытаний сложных программно-аппара...Программное обеспечение для автоматизации испытаний сложных программно-аппара...
Программное обеспечение для автоматизации испытаний сложных программно-аппара...
 
лекция 12
лекция 12лекция 12
лекция 12
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1
 
ТЗ на SMPP шлюз
ТЗ на SMPP шлюзТЗ на SMPP шлюз
ТЗ на SMPP шлюз
 
Практические аспекты нагрузочного тестирования
Практические аспекты нагрузочного тестированияПрактические аспекты нагрузочного тестирования
Практические аспекты нагрузочного тестирования
 

More from Mikhail Kurnosov

More from Mikhail Kurnosov (20)

Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Векторизация кода (семинар 2)
Векторизация кода (семинар 2)
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)
 
Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Векторизация кода (семинар 1)
Векторизация кода (семинар 1)
 
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
 
Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
 
Лекция 4. Префиксные деревья (tries, prefix trees)
Лекция 4. Префиксные деревья (tries, prefix trees)Лекция 4. Префиксные деревья (tries, prefix trees)
Лекция 4. Префиксные деревья (tries, prefix trees)
 
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
 
Лекция 3. АВЛ-деревья (AVL trees)
Лекция 3. АВЛ-деревья (AVL trees)Лекция 3. АВЛ-деревья (AVL trees)
Лекция 3. АВЛ-деревья (AVL trees)
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
 
Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмов
 
Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимости
 
Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)
 
Лекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеЛекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графе
 

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 ветвями параллельной программы
  • 13. Систематические ошибки измерения времени выполнения коллективных операций Курносов М.Г. 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 Recv Recv 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)
  • 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% от максимального времени выполнения этапа. Условия окончания измерений: • Достигнуто максимально допустимое значение количества измерений. • Стандартная ошибка среднего времени выполнения функции достигла требуемого уровня.
  • 17. Пакет 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
  • 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).