24
MPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPI Курносов Михаил Георгиевич 1,2 [email protected] 1 Институт физики полупроводников им. А.В. Ржанова СО РАН, Новосибирск, Россия 2 Сибирский государственный университет телекоммуникаций и информатики, Новосибирск, Россия Международная научная конференция «Параллельные вычислительные технологии» (ПаВТ-2012), Новосибирск, 26 – 30 марта 2012 г.

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

Embed Size (px)

Citation preview

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

MPIPerf: пакет оценки эффективности

коммуникационных функций

стандарта MPI

Курносов Михаил Георгиевич1,2

[email protected]

1 Институт физики полупроводников им. А.В. Ржанова СО РАН,

Новосибирск, Россия

2 Сибирский государственный университет телекоммуникаций и информатики,

Новосибирск, Россия

Международная научная конференция

«Параллельные вычислительные технологии» (ПаВТ-2012),

Новосибирск, 26 – 30 марта 2012 г.

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

Коммуникационные функции стандарта 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

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

Коммуникационные функции стандарта 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)

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

Алгоритмы коллективных операций обмена информацией

Курносов М.Г. 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 ветвей)

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

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

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

Измерение времени выполнения коллективных операций

Курносов М.Г. 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)

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

� Каждый процесс получает среднее время 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 /* Среднее время одного запуска */

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

Систематические ошибки измерения времени выполнения коллективных операций

Курносов М.Г. 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 байт, но размещенный по другому адресу

в оперативной памяти – для предотвращения загрузки сообщений

из кэш-памяти процессора)

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

Систематические ошибки измерения времени выполнения коллективных операций

Курносов М.Г. MPIPerf 9ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.

2. В качестве конечного значения времени выполнения

коллективной операции принимается только время определенной

ветви (например, ветви 0).

Диаграмма выполнения коллекторного приема (MPI_Reduce)

информации ветвью 0 (алгоритм биномиального дерева, результаты

получены при помощи пакета Intel Trace Analyzer and Collector)

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

Систематические ошибки измерения времени выполнения коллективных операций

Курносов М.Г. MPIPerf 10ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.

3. На каждой итерации цикла измерений используются

различные значения входных параметров.

В пакетах Intel MPI Benchmarks, mpptest при измерении времени

выполнения функции MPI_Bcast на каждой итерации цикла номер

корневой ветви изменяется.

4. Игнорируется иерархическая организация памяти

вычислительных узлов системы.

В некоторых пакетах не учитывается то что, при повторном

использовании одного и того же буфера его данные с большой

вероятностью будут размещены в кэш-памяти процессора.

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

Систематические ошибки измерения времени выполнения коллективных операций

Курносов М.Г. 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)

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

Систематические ошибки измерения времени выполнения коллективных операций

Курносов М.Г. MPIPerf 12ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.

6. Измерение времени выполнения функции выполняется

в цикле без синхронизации моментов её запуска в ветвях

(пакеты Intel MPI Benchmarks, mpptest, LLCBench, Phloem, MPIBlib,

OSU Micro-Benchmarks)

Диаграмма выполнения линейного алгоритма трансляционного

обмена (MPI_Bcast) между 4 ветвями параллельной программы

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

Систематические ошибки измерения времени выполнения коллективных операций

Курносов М.Г. 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)

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

Пакет 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

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

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)

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

Пакет 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% от максимального времени выполнения этапа.

Условия окончания измерений:

• Достигнуто максимально допустимое значение количества измерений.

• Стандартная ошибка среднего времени выполнения функции достигла

требуемого уровня.

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

Пакет 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

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

Исследование точности синхронизации

Курносов М.Г. MPIPerf 18ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.

Коллективные функции ожидания:

� WaitPatternUp – каждый процесс i ожидает (i + 1)·10–6

секунд (выполняет пустой цикл). Время выполнения

операции: n·10–6 секунд.

� WaitPatternNull – каждый процесс засекает время запуска

операции и сразу завершает её выполнение. Время работы

функции 0 секунд.

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

Исследование точности синхронизации

Курносов М.Г. MPIPerf 19ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.

Зависимость времени t выполнения теста WaitPatternUp

от количества n процессов в программе (MPICH2 1.2.1, таймер

MPI_Wtime; кластер на базе процессоров Intel Xeon E5420

c сетью Gigabit Ethernet)

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

Исследование точности синхронизации

Курносов М.Г. 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

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

Исследование точности синхронизации

Курносов М.Г. MPIPerf 21ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.

Зависимость времени t выполнения теста WaitPatternNull

от количества n процессов в программе (OpenMPI 1.4.4,

кластер с сетью InfiniBand QDR): 1 – MPIPerf, таймер MPI_Wtime;

2 – MPIPerf, таймер TSC

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

Сравнение с пакетом SKaMPI

Курносов М.Г. MPIPerf 22ПаВТ-2012, Новосибирск, 26-30 марта 2012 г.

Зависимость времени t выполнения функции MPI_Bcast от размера m

передаваемого сообщения: 1 – пакет SKaMPI; 2 – пакет MPIPerf

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

Воспроизводимость результатов измерений

Курносов М.Г. 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)

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

MPIPerf: пакет оценки эффективности

коммуникационных функций

стандарта MPI

Курносов Михаил Георгиевич

[email protected]

ACKNOWLEDGEMENTS

Работа выполнена в рамках госконтракта № 07.514.11.4015 с Минобрнауки РФ,

при поддержке РФФИ (грант № 11-07-00105) и Совета по грантам Президента РФ

для поддержки ведущих научных школ (грант НШ-2175.2012.9).