Измерение времени выполнения коллективных операций обменов информацией между ветвями параллельных MPI-программ
1. Измерение времени выполнения коллективных
операций обменов информацией между ветвями
параллельных MPI-программ
Курносов Михаил Георгиевич1,2
mkurnosov@gmail.com
1 Сибирский государственный университет телекоммуникаций и информатики,
Новосибирск, Россия
2 Институт физики полупроводников им. А.В. Ржанова СО РАН,
Новосибирск, Россия
Семинар «Вычислительные системы»
ИФП СО РАН, Новосибирск, 25 ноября 2011 г.
2. Коллективные операции обмена информацией
Курносов М.Г. Измерение времени выполнения коллективных операций 2Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
Библиотеки передачи сообщений
• MPI: MPI_Bcast, MPI_Gather, …
• Shmem: shmem_broadcast, shmem_collect, …
• PVM: pvm_bcast, pvm_gather, …
Языки параллельного программирования
• Unified Parallel C: upc_all_broadcast, upc_all_gather, …
• IBM X10
• Cray Chapel
• Co-Array Fortran
• Charm++
3. Зачем измерять время выполнения коллективных операций?
Курносов М.Г. Измерение времени выполнения коллективных операций 3Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
I. Создание новых алгоритмов коллективных обменов и их
экспериментальное сравнение с другими алгоритмами
II. Выбор оптимального алгоритма реализации коллективной
операции на заданной подсистеме процессорных ядер
IBM BlueGene/P Self Tuned Adaptive Routines (A. Faraj, S. Kumar et al, 2009).
OpenMPI tuned collectives (G. Fagg, J. Dongarra et al., 2006).
Intel mpitune
III. Верификация аналитических и имитационных моделей
коллективных операций
Аналитические модели на основе моделей дифференцированных обменов:
LogP, LogGP, PLogP, LogfP, Hockney / (A. Alexandrov, 95), (T. Kielmann, 2000),
(T. Angskun et al, 2005), (T. Hoefler, 2009)
Имитационное моделирование выполнения параллельных программ:
LogGOPSim, BigSim, SILAS, MPI-SIM, PSINS, DIMEMAS / (T. Hoefler, 2010),
(В.П. Иванников, 2007)
4. Пакеты измерения времени выполнения коллективных операций
Курносов М.Г. Измерение времени выполнения коллективных операций 4Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
Название
пакета
Разработчик Описание
Intel MPI
Benchmarks
Intel
Текущая версия 3.2.3,
тесты для функций MPI_Bcast, MPI_Gather{v}, MPI_Scatter{v}, MPI_Reduce,
MPI_Reduce_scatter, MPI_Barrier, MPI_Allgather{v}, MPI_Allreduce, MPI_Alltoall{v}
Mpptest
Argonne National
Laboratory, USA (W. Gropp)
Последняя версия от 2000 г.,
тесты для функций MPI_Аllreduce, MPI_Bcast, MPI_Gather, MPI_Barrier
LLCBench
(MPBench)
University of Tennessee, USA
Текущая версия 1.7 от 2005 г.,
тесты для функций MPI_Bcast, MPI_Reduce, MPI_Allreduce, MPI_Alltoall, MPI_Barrier
Phloem MPI
Benchmarks
Lawrence Livermore
National Laboratory, USA
Текущая версия 1.0 от 2008 г.,
тесты для функций MPI_Bcast, MPI_Alltoall{v}, MPI_Allgather{v}, MPI_Gather{v},
MPI_Scatter, MPI_Allreduce, MPI_Reduce, MPI_Barrier
MPIBlib
School of Computer Science
and Informatics, Ireland
(A. Lastovetsky)
Текущая версия 1.2.0 от 2011 г.,
тесты для функций MPI_Bcast, MPI_Gather{v}, MPI_Scatter{v}, MPI_Reduce
OSU Micro-
Benchmarks
Ohio State University, USA
(D.K. Panda)
Текущая версия 3.5 от 2011 г.,
тесты для функций MPI_Bcast, MPI_Alltoall
SKaMPI
Universität Karlsruhe,
Germany (W. Augustin)
Текущая версия 5.0.4 от 2008 г.,
тесты для функций MPI_Bcast, MPI_Barrier, MPI_Reduce, MPI_Allreduce,
MPI_Reduce_scatter, MPI_Alltotall{v}, MPI_Gather{v}, MPI_Allgather{v},
MPI_Scatter{v}, MPI_Scan
Netgauge
Indiana University, USA
(T. Hoefler)
Текущая версия 2.4.6 от 2008 г.,
тесты для функций MPI_Bcast, MPI_Reduce, MPI_Alltotall
MPIBench
Adelaide University,
Australia
Последняя версия 1.2 от 2006 г.,
тесты для функций MPI_Barrier, MPI_Bcast, MPI_Scatter, MPI_Gather,
MPI_Allgather, MPI_Alltotall
5. Задача измерения времени выполнения коллективной операции
Курносов М.Г. Измерение времени выполнения коллективных операций 5Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
int MPI_Bcast(void *buf, int count,
MPI_Datatype datatype, int root, MPI_Comm comm)
Задана MPI-функция и значения её параметров
Подсистема процессорных ядер и распределение ветвей программы по ним задается
MPI-коммуникатором comm.
Требуется измерить время ࢚, ࢚, … , ࢚ି выполнения коллективной
MPI-функции в ветвях программы.
6. Методы измерения времени выполнения коллективных операций
Курносов М.Г. Измерение времени выполнения коллективных операций 6Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
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 /* Среднее время одного запуска */
Процедура измерения времени выполнения MPI-функции
(Intel MPI Benchmarks, mpptest, LLCBench, Phloem, MPIBlib, OSU MB и др.)
Какое значение принимать за время T выполнения функции?
ܶ ൌ ݐ ࢀ ൌ ࢇ࢞ ࢚, ࢚, … , ࢚ି ܶ ൌ
ݐ ݐଵ ⋯ ݐିଵ
݊
7. Систематические ошибки измерения времени
выполнения коллективных операций
7
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,8
MPI_Barrier 5,50 9,01
MPI_Reduce 6944 12901
MPI_Allreduce 11,71 353,37
(64 процесса – 8 узлов по 8 ядер, при повторном вызове функции использовался буфер
такого же размера – 8192 байт, но размещенный по другому адресу в оперативной
памяти – для предотвращения загрузки сообщений из кэш-памяти процессора)
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
8. Систематические ошибки измерения времени
выполнения коллективных операций
8
2. В качестве конечного значения времени выполнения коллективной
операции принимается время определенной ветви (например, ветви 0).
Диаграмма выполнения коллекторного приема информации ветвью 0
(алгоритм биномиального дерева, результаты получены при помощи пакета
Intel Trace Analyzer and Collector)
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
9. Систематические ошибки измерения времени
выполнения коллективных операций
9
3. На каждой итерации цикла измерений используются различные
значения входных параметров.
В пакетах Intel MPI Benchmarks, mpptest при измерении времени
выполнения функции MPI_Bcast на каждой итерации цикла номер
корневой ветви изменяется.
4. Игнорируется иерархическая организация памяти вычислительных
узлов системы.
В некоторых пакетах не учитывается то что, при повторном
использовании одного и того же буфера его данные с большой
вероятностью будут размещены в кэш-памяти процессора.
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
10. Систематические ошибки измерения времени
выполнения коллективных операций
10
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)
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
11. Систематические ошибки измерения времени
выполнения коллективных операций
11
6. Измерения выполняется в цикле без синхронизации моментов запуска
операции в ветвях (Pipelining). Это приводит к тому, что результирующая
оценка времени выполнения функции включает и время ожидания начала
следующей итерации цикла измерений.
Send0
1
2
3
t1 = α + mβ
t2 = 2(α + mβ)
t3 = 3(α + mβ)
t0 = 3(α + mβ)Send Send
Recv
Recv
Recv
t
Диаграмма выполнения линейного алгоритма трансляционного
обмена (MPI_Bcast) между 4 ветвями параллельной программы
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
13. Систематические ошибки измерения времени
выполнения коллективных операций
13
( 1)(α β), при 0,
( )
(α β), при 0.
i
n m i
t n
i m i
− + =
=
+ >
( 1) (α β) / , при 0,
( , )
(( 1)( 1) )(α β) / , при 0.
i
n k m k i
T n k
n k i m k i
− + =
=
− − + + >
1, при 0,
( , )
( , ) ( 1)( 1)
( ) при 0.
i
i
i
i
T n k
r n k n k i
t n i
ik
=
= = − − +
>
Оценка времени ti(n) выполнения линейного алгоритма трансляционного
обмена i-ой ветвью программы (модель Хокни)
Оценка времени Ti(n) выполнения линейного алгоритма трансляционного
обмена i-ой ветвью программы по результатам выполнения k итераций цикла
измерений
Отклонение от “истинного” значения:
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
14. Систематические ошибки измерения времени
выполнения коллективных операций
14
Зависимость ri(n, k) от номера i ветви линейного алгоритма трансляционного
обмена (MPI_Bcast; n = 64; k = 100):
ri(n, k)
i
– Gigabit Ethernet, m = 1024; – теоретическая кривая (модель Хокни);
– InfiniBand QDR, m = 1024
Результаты
натурных
экспериментов!
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
15. Систематические ошибки измерения времени
выполнения коллективных операций
15
Зависимость ri(n, k) от номера i ветви линейного алгоритма
трансляционного обмена (k = 10):
1 – n = 32; 2 – n = 64; 3 – n = 128
0
20
40
60
80
100
120
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30
ri(n, k)
i
1
2
3
1, при 0,
( , )
( , ) ( 1)( 1)
( ) при 0.
i
i
i
i
T n k
r n k n k i
t n i
ik
=
= = − − +
>
Ошибка растет с увеличением n и k
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
16. Метод измерения времени выполнения коллективных операций
16
Предложен метод измерения времени выполнения коллективных
операций, основанный на синхронизации моментов запуска функций в
ветвях.
Выполнена программная реализация метода в пакете MPIPerf.
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
17. Метод измерения времени выполнения коллективных операций
17
ττττ0
1
2
3
4
5
T0
τ'1 T0
τ'2τ11
…
τ12 τ1,k–1τ13 τ21
…
τ2,k–1τ22
tbcast tbcast
Этап 2 (k запусков)
…
…
1
1 Синхронизация показаний локальных часов ветвей – установление глобального
времени.
2
2 Оценка времени выполнения трансляционного обмена:
MPI_Bcast(&buf, 1, MPI_DOUBLE, mpiperf_master_rank, comm)
3
Этап 1 (k запусков)
3 Формирование расписания запусков операции. Измерение времени выполнения
операции. Корректировка расписания. Проверка условий окончания измерений.
4
4 Статистическая обработка результатов измерений. Формирование отчета.
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
18. Синхронизация локальных часов ветвей
18
Каждая ветвь i вычисляет смещение oi показаний своих часов относительно часов
ветви 0.
Зная oi и показания Ti своих часов ветвь i может вычислить показания T0
глобальных часов
ࢀ ൌ ࢀ ࢀ ൌ ࢀ െ
Вычисление oi
iT′ iT′′
0T 0T 0T
iT′ 0T
iT′ iT′′ iT′ iT′′
iT′
0T iT′
0T
RTT
0 2
T
i io T T′= − − RTT i iT T T′′ ′= −
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
19. Корректировка расписаний
19
ττττ0
1
2
3
4
5
T0
τ'1 T0
τ11
…
τ12 τ1,k–1τ13 τ21
…
τ2,k–1τ22
tbcast tbcast
Этап 2 (k запусков)
…Этап 1 (k запусков)
На этапе j на каждый запуск отводится δj секунд
Если на этапе j количество некорректных запусков превышает g процентов
(25%), то выполняется корректировка длины интервала
δ1 δ2
1δ γ(τ τ )j j j k+ ′= −
Значение δ1 вычисляется на этапе инициализации (этап 0)
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
20. Условия окончания измерений
20
ττττ0
1
2
3
4
5
T0
τ'1 T0
τ11
…
τ12 τ1,k–1τ13 τ21
…
τ2,k–1τ22
tbcast tbcast
Этап 2 (k запусков)
…Этап 1 (k запусков)
Вариант 1 – количество измерений больше 100 (-R) или количество
“корректных” измерений больше 30 (-E).
Вариант 2 – относительная ошибка среднего значения времени t
выполнения операции не превосходит 5% (-e) и количество “корректных”
измерений не менее 10 (-E).
$ mpiperf -x1 -X32768 -s64 -r10 -R500 -e3 Bcast
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
21. Содержание отчета
21
Значение варьируемого параметра (размер сообщения или количество
ветвей в программе).
Общее количество nt запусков операции (TRuns).
Количество nc корректных запусков (CRuns).
Количество ns корректных запусков после статистической обработки (FRuns).
Статистическая оценка T математического ожидания времени выполнения операции
(формируется по ns значениям, Mean).
Стандартная ошибка SE измерения времени T
(ܵܧ ൌ ఙሾ்ሿ
ൗ , где ߪሾܶሿ– среднеквадратическое отклонение T, StdErr).
минимальное значение T, максимальное значение T.
абсолютная ошибка E измерений времени T
(ܧ ൌ α ∙ ܵܧ , где α – коэффициент Стьюдента).
Доверительный интервал ܲሺܶ െ α ∙ ܵܧ ܶ ܶ α ∙ ܵܧሻ,
где p – заданная пользователем надежность (p ∈ {0,9; 0,95; 0,99}).
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
22. Экспериментальное исследование
22
Кластер А (Центр параллельных вычислительных технологий
ФГОБУ ВПО “СибГУТИ”): 10 вычислительных узлов, на каждом узле
установлено 2 четырехъядерных процессора Intel Xeon E5420,
коммуникационная сеть – Gigabit Ethernet, операционная
система – CentOS 5.2 x86_64 (ядро linux 2.6.18-92.el5)
Кластер Б (Информационно-вычислительный центр ФГОБУ ВПО “НГУ”):
использована подсистема из 96 узлов HP BL2x220 G7, на каждом
узле 2 шестиядерных процессора Intel Xeon X5670, коммуникационная
сеть – InfiniBand 4x QDR, операционная система – SUSE Linux Enterprise
Server 11 x86_64 (ядро linux 2.6.27.19-5)
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
23. Точность синхронизации моментов запуска операций
23
Коллективная операция ожидания WaitPatternUp – ветвь i ожидает в пустом
цикле (i + 1)·10–6 секунд. Время выполнения операции – n·10–6 секунд.
Зависимость времени t выполнения на кластере А (Xeon80) теста WaitPatternUp
от количества n ветвей в программе (таймер MPI_Wtime, библиотека MPICH2 1.2.1)
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
24. Точность синхронизации моментов запуска операций
24
Зависимость времени t выполнения на кластере B (НГУ) теста WaitPatternUp
от количества n ветвей в программе (библиотека OpenMPI 1.4.4):
1 – MPIPerf, таймер MPI_Wtime; 2 – пакет SKaMPI, таймер MPI_Wtime;
3 – пакет MPIPerf, таймер TSC
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
25. Точность синхронизации моментов запуска операций
25
Узел cn201 кластера ФГОБУ ВПО “НГУ”
$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource
hpet
$ dmesg | grep –i hpet
ACPI: HPET EF62F200, 0038 (r1 HP ProLiant 2 � 162E)
ACPI: HPET id: 0x8086a201 base: 0xfed00000
hpet clockevent registered
hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0
hpet0: 4 64-bit timers, 14318180 Hz
hpet_resources: 0xfed00000 is busy
rtc0: alarms up to one year, y3k, hpet irqs
CE: hpet increasing min_delta_ns to 15000 nsec
CE: hpet increasing min_delta_ns to 22500 nsec
CE: hpet increasing min_delta_ns to 33750 nsec
Bug 444496 “hpet increasing min_delta_ns” // Novell Bugzilla. – URL:
https://bugzilla.novell.com/show_bug.cgi?id=444496.
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
26. Точность синхронизации моментов запуска операций
26
Коллективная операция WaitPatternNull – ветвь i засекает время запуска
операции и завершает её. Время выполнения операции – 0 секунд.
Зависимость времени t выполнения на кластере Б теста WaitPatternNull
от количества n ветвей в программе:
1 – MPIPerf, таймер MPI_Wtime; 2 – MPIPerf, таймер TSC
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
Bug
“hpet increasing
min_delta_ns”
27. Сравнение с результатами измерений пакетом SKaMPI
27
Зависимость времени t выполнения функции MPI_Bcast от размера m
передаваемого сообщения (кластер А, библиотека MPICH2 1.2.1):
1 – пакет SKaMPI; 2 – пакет MPIPerf
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
28. Воспроизводимость результатов измерений
28
Зависимость относительной ошибки RSE
измерения среднего времени выполнения
функции MPI_Barrier от количества n ветвей
в программе: 1 – пакет SKaMPI; 2 – MPIPerf
(кластер Б, библиотека Intel MPI 4.0.0.028 с таймером
MPI_Wtime на основе значения регистра TSC)
[ ]
RSE
M[ ] 10
t
t
σ
=
⋅
mpiperf-barrier-1.dat
mpiperf-barrier-2.dat
...
mpiperf-barrier-10.dat
Оба пакета запускались
по 10 раз:
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.
29. 29
Спасибо за внимание!
Курносов М.Г. Измерение времени выполнения коллективных операций Семинар “Вычислительные системы”, ИФП СО РАН, 25 ноября 2011 г.