SlideShare a Scribd company logo
1 of 18
Download to read offline
Курносов Михаил Георгиевич
Лаборатория вычислительных систем Института физики полупроводников
им. А.В. Ржанова СО РАН, Новосибирск
Кафедра вычислительных систем ГОУ ВПО “СибГУТИ”, Новосибирск
Международная научно-техническая конференция
“Суперкомпьютерные технологии: разработка, программирование, применение” (СКТ-2010)
с. Дивноморское, Геленджикский район, Краснодарский край, Россия
27 сентября – 2 октября 2010 г.
mkurnosov@isp.nsc.ru
Cтруктурно-ориентированные алгоритмы
коллективных обменов в распределенных
вычислительных системах
Средства создания параллельных программ для
распределенных вычислительных систем
2СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
Библиотеки передачи
сообщений
• Библиотеки стандарта MPI:
MPICH2, Open MPI
• Parallel Virtual Machine
Языки параллельного программирования
для распределенных ВС
• PGAS: IBM X10, Cray Chapel
• Charm++, High-Performance Fortran,
Unified Parallel C
Модель передачи сообщений
(message passing)
Дифференцированный обмен
(point-to-point communication)
Коллективные обмены
(collective communication)
Трансляционно-циклический обмен
(ТЦО, all-to-all broadcast)
Трансляционный обмен
(ТО, one-to-all broadcast)
Коллекторный обмен
(КО, all-to-one broadcast)
Средства создания параллельных программ для
распределенных вычислительных систем
3СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
Библиотеки передачи
сообщений
• Библиотеки стандарта MPI:
MPICH2, Open MPI
• Parallel Virtual Machine
Языки параллельного программирования
для распределенных ВС
• PGAS: IBM X10, Cray Chapel
• Charm++, High-Performance Fortran,
Unified Parallel C
Модель передачи сообщений
(message passing)
Дифференцированный обмен
(point-to-point communication)
Коллективные обмены
(collective communication)
Трансляционно-циклический обмен
(ТЦО, all-to-all broadcast)
Трансляционный обмен
(ТО, one-to-all broadcast)
Коллекторный обмен
(КО, all-to-one broadcast)
На коллективные обмены
приходится 70-80%
времени всех обменов
(R. Rabenseifner, 2000)
Алгоритмы коллективных обменов информацией между
ветвями параллельных программ
4СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
• Трансляционный обмен (MPI_Bcast, MPI_Scatter): биномиальное дерево,
Scatter + Allgather.
• Трансляционно-циклический обмен (MPI_Allgather, MPI_Alltoall,
MPI_Allreduce): кольцевой алгоритм, рекурсивное сдваивание, алгоритм Дж.
Брука, алгоритм попарных обменов.
• Коллекторный обмен (MPI_Reduce, MPI_Gather): биномиальное дерево,
Reduce-Scatter + Gather.
Алгоритмы основаны на предположении об однородности каналов связи
между элементарными машинами распределенной ВС
Иерархическая организация распределенных ВС
Уровень 1
Уровень 2
Уровень 3
Трансляционно-циклический обмен (ТЦО) информацией между
ветвями параллельных программ
5СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
Начальное
состояние ветвей
Состояние ветвей после
реализации ТЦО
Каждая ветвь i ∈ {0, 1, …, n – 1} параллельной программы располагает локальным
сообщением ai размером m байт.
Требуется отправить сообщение ai всем ветвям и получить сообщения от каждой.
По окончанию ТЦО все ветви должны содержать в своей памяти n сообщений
a0, a1, …, an – 1, упорядоченных по номерам ветвей.
• MPI: MPI_Allgather
• Unified Parallel C: upc_all_gather_all
Алгоритмы реализации трансляционно-циклических
обменов информацией в распределенных ВС
6СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
a0
0 1 2 3 4 5 6 7
a1
a3
a2
a4
a5
a7
a6
a0
0 1 2 3 4 5 6 7
a1
a3
a2
a4
a5
a7
a6
a1
a0
a2
a3
a4
a5
a6
a7
a0
0 1 2 3 4 5 6 7
a1
a3
a2
a4
a5
a7
a6
a1
a0
a2
a3
a4
a5
a6
a7
a2
a3
a0
a1 a1
a0
a3
a2
a4
a5
a4
a5
a6
a7
a6
a7
a0
0 1 2 3 4 5 6 7
a1
a3
a2
a4
a5
a7
a6
a1
a0
a2
a3
a4
a5
a6
a7
a2
a3
a0
a1 a1
a0
a3
a2
a4
a5
a4
a5
a6
a7
a6
a7
a0
a1
a2
a3
a0
a1
a2
a3
a0
a1
a2
a3
a0
a1
a2
a3
a4
a5
a6
a7
a4
a5
a6
a7
a4
a5
a6
a7
a4
a5
a6
a7
a0
0 1 2 3 4 5 6 7
a1 a3a2 a4 a5 a7a6a0
0 1 2 3 4 5 6 7
a1 a3a2 a4 a5 a7a6
a1 a3a2 a4 a5 a7a6 a0
a0
0 1 2 3 4 5 6 7
a1 a3a2 a4 a5 a7a6
a1 a3a2 a4 a5 a7a6 a0
a2
a3
a3a2 a4 a5 a7a6 a0 a1
a4 a5 a7a6 a0 a1 a2
a0
0 1 2 3 4 5 6 7
a1 a3a2 a4 a5 a7a6
a1 a3a2 a4 a5 a7a6 a0
a2
a3
a3a2 a4 a5 a7a6 a0 a1
a4 a5 a7a6 a0 a1 a2
a4 a5 a7a6 a0 a1 a2
a5 a7a6 a0 a1 a2
a7a6 a0 a1 a2
a7 a0 a1 a2
a3
a4
a5
a6
a3
a4
a5
a3
a4a3
a0
0 1 2 3 4 5 6 7
a1
a3
a2
a4
a5
a7
a6
a1
a0
a2
a3
a4
a5
a6
a7
a2
a3
a0
a1 a1
a0
a3
a2
a4
a5
a4
a5
a6
a7
a6
a7
a0
a1
a2
a3
a0
a1
a2
a3
a0
a1
a2
a3
a0
a1
a2
a3
a4
a5
a6
a7
a4
a5
a6
a7
a4
a5
a6
a7
a4
a5
a6
a7
Алгоритм рекурсивного
сдваивания (recursive doubling)
Алгоритм Дж. Брука
(J. Bruck et al., 1997)
На каждом шаге размер передаваемого блока удваивается: m, 2m, 4m
Количество обменов: 2log2n Количество обменов: 2log2n
Только для n равного степени двойки На шаге k ветвь i взаимодействует с
ветвями (i – 2k + n) mod n и (i + 2k) mod n
Информационные графы алгоритмов реализации
трансляционно-циклических обменов
7СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
Граф алгоритма
рекурсивного сдваивания, m = 1
Граф алгоритма
Дж. Брука, m = 1
Вес dij ребра отражает объем данных переданных
по нему при реализации алгоритма
Метод оптимизации алгоритмов трансляционно-циклических
обменов в иерархических распределенных ВС
8СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
V1
V2
1. Формируется взвешенный граф G = (V, E),
|V| = n алгоритма реализации ТЦО для m = 1.
2. Строится разбиение графа на h непересекающихся
подмножеств V1, V2, …, Vh с целью минимизации
суммарного веса рёбер, инцидентных различным
подмножествам разбиения.
Количество элементов в подмножестве Vu должно быть
равно заданному числу su, u = 1, 2, …, h.
3. Строится отображение π(i) – ветвям с номерами
из подмножества Vu назначаются номера ветвей,
распределенных на элементарные машины
вычислительного узла qu.
h = 2
s1 = s2 = 4
Алгоритмы реализации трансляционно-циклических обменов
в иерархических распределенных ВС
9СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
Алгоритм recursive doubling exch.
1. Ветвь i передает свое сообщение ai ветви π-1
(i),
принимает от ветви π(i) сообщение и делает его
начальным.
2. На шаге k = 0, 1, …, log2n – 1 ветви i и π-1
(i ⊕ 2k
)
обмениваются ранее принятыми 2k
сообщениями.
Алгоритм recursive doubling reorder
1. Ветвь i сдвигает свое сообщение ai из позиции i
в позицию π(i).
2. На шаге k = 0, 1, …, log2n – 1 ветви i и π-1
(i ⊕ 2k
)
обмениваются ранее принятыми 2k
сообщениями.
3. Сообщение из позиции j = 0, 1, …, n – 1
переносится в позицию π-1
(j).
Алгоритм Bruck exch.
1. Ветвь i передает свое сообщение ai ветви π-1
(i),
принимает от ветви π(i) сообщение и делает его
начальным.
2. На шаге k = 0, 1, …, log2n – 1 ветвь i передает
все принятые сообщения ветви π-1
((i′ – 2k
+ n) mod n)
и принимает сообщения от ветви π-1
((i′ + 2k
) mod n),
где i′ = π(i).
3. Каждая ветвь циклически сдвигает сообщения
вниз на i′ позиций.
Алгоритм Bruck reorder
1. На шаге k = 0, 1, …, log2n – 1 ветвь i передает
все принятые сообщения ветви π-1
((i′ – 2k
+ n) mod n)
и принимает сообщения от ветви π-1
((i′ + 2k
) mod n),
где i′ = π(i).
2. Сообщение в позиции j = 0, 1, …, n – 1
переставляется в позицию π-1
((j + i′) mod n).
Метод оптимизации трансляционно-циклических обменов информацией в
иерархических распределенных ВС
10СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
• Формирование, разбиение графа и построение отображений π(i) и π-1(i) осуществляется
единожды при первом вызове коллективной операции.
• Все шаги метода эффективно реализуемы в параллельном виде на подсистеме
элементарных машин, выделенной для реализации программы.
• В каждой ветви достаточно хранить информацию об отображении смежных с ними
ветвей. Для алгоритмов рекурсивного сдваивания и Дж. Брука достаточно хранить
порядка O(log2n) байт.
Предложенный метод реализации ТЦО применим в
большемасштабных распределенных ВС
Библиотека коммуникационных функций TopoMPI
11СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
MPI_Init(&argc, &argv);
...
MPI_Allgather(...);
...
MPI_Finalize();
MPI-программа
MPI_Init
• Загружается (формируется) описание иерархической
структуры распределенной ВС.
• Анализируется выделенная подсистема элементарных
машин (MPI_COMM_WORLD).
MPI_Allgather
• Первый вызов: оптимизация алгоритмов.
• Выбор оптимального алгоритма реализации Allgather.
• Выполнение алгоритма.
TopoMPI
http://topompi.cpct.sibsutis.ruhttp://topompi.cpct.sibsutis.ruhttp://topompi.cpct.sibsutis.ruhttp://topompi.cpct.sibsutis.ru
Результаты экспериментов
12СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
Время разбиения информационных графов алгоритмов на h подмножеств и
формирования отображений на процессоре Intel Xeon E5420 (2.5 GHz)
Время разбиения графа алгоритма Дж. Брука с количеством
вершин 1048576 на 131072 подмножеств: 32,73 с.
Результаты экспериментов
13СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
Время реализации ТЦО с учетом времени оптимизации алгоритмов:
8 двухпроцессорных узлов по 8 процессорных ядер; сеть связи Gigabit Ethernet
Среднее время оптимизации алгоритмов cоставило 480 мкс и 300 мкс, соответственно,
для алгоритмов Bruck exch., Bruck reorder и recursive doubling exch., recursive doubling reorder
Результаты экспериментов
14СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
Ускорение алгоритмов на кластерной ВС:
8 двухпроцессорных узлов по 8 процессорных ядер; сеть связи Gigabit Ethernet
а – ускорение алгоритмов на “коротких” сообщениях;
б – ускорение алгоритмов на “длинных” сообщениях
а б
Результаты экспериментов
15СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
Ускорение алгоритмов на кластерной ВС:
8 двухпроцессорных узлов по 8 процессорных ядер; сеть связи InfiniBand 4x DDR
а – время реализации ТЦО “коротких” сообщений;
б – ускорение алгоритмов на “длинных” сообщениях
а б
Заключение
16СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
• Разработанный метод применим для всех типов коллективных обменов.
• Время затрачиваемое на построение отображений ветвей не значительно и
компенсируется многократным обращением в программе к коллективным операциям
информационных обменов.
Направление дальнейших работ:
• Развитие структурно-ориентированных методов реализации коллективных операций
информационных обменов, не требующих предварительного вложения графов алгоритмов
в структуры распределенных ВС.
• Разработка методов динамического выбора оптимального алгоритма реализации
коллективной операции для заданного сообщения и подсистемы элементарных машин.
• Создание децентрализованных алгоритмов вложения параллельных программ в
большемасштабные иерархические распределенные ВС.
• Оптимизация выполнения параллельной программы на основе данных её предыдущего
выполнения (Profile-Guided Optimization - PGO).
Спасибо за внимание!
17СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
Иерархическая организация распределенных ВС
18СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
Время передачи сообщений через сеть межузловых связей и общую память узла:
а – кластер ЦПВТ ГОУ ВПО “СибГУТИ” (Gigabit Ethernet)
б – кластер ИВЦ ГОУ ВПО “НГУ” (InfiniBand 4x DDR)
а б

More Related Content

What's hot

"Лавриненко Ярослав" HPC GPU CUDA
"Лавриненко Ярослав" HPC GPU CUDA"Лавриненко Ярослав" HPC GPU CUDA
"Лавриненко Ярослав" HPC GPU CUDAOleg Nazarevych
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Mikhail Kurnosov
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Mikhail Kurnosov
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...Mikhail Kurnosov
 
Лекция 9. Программирование GPU
Лекция 9. Программирование GPUЛекция 9. Программирование GPU
Лекция 9. Программирование GPUMikhail Kurnosov
 
MPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPI
MPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPIMPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPI
MPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPIMikhail Kurnosov
 
Семинар 10. Параллельное программирование на MPI (часть 3)
Семинар 10. Параллельное программирование на MPI (часть 3)Семинар 10. Параллельное программирование на MPI (часть 3)
Семинар 10. Параллельное программирование на MPI (часть 3)Mikhail Kurnosov
 
Лекция 7. Язык параллельного программирования Intel Cilk Plus
Лекция 7. Язык параллельного программирования Intel Cilk PlusЛекция 7. Язык параллельного программирования Intel Cilk Plus
Лекция 7. Язык параллельного программирования Intel Cilk PlusMikhail Kurnosov
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Mikhail Kurnosov
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Mikhail Kurnosov
 
ПСЕВДОРЕГУЛЯРНЫЕ КОДОВЫЕ ШКАЛЫ ДЛЯ ЦИФРОВЫХ ПРЕОБРАЗОВАТЕЛЕЙ УГЛА
ПСЕВДОРЕГУЛЯРНЫЕ КОДОВЫЕ ШКАЛЫ ДЛЯ ЦИФРОВЫХ ПРЕОБРАЗОВАТЕЛЕЙ УГЛАПСЕВДОРЕГУЛЯРНЫЕ КОДОВЫЕ ШКАЛЫ ДЛЯ ЦИФРОВЫХ ПРЕОБРАЗОВАТЕЛЕЙ УГЛА
ПСЕВДОРЕГУЛЯРНЫЕ КОДОВЫЕ ШКАЛЫ ДЛЯ ЦИФРОВЫХ ПРЕОБРАЗОВАТЕЛЕЙ УГЛАITMO University
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
CSEDays. Юрий Айдаров
CSEDays. Юрий АйдаровCSEDays. Юрий Айдаров
CSEDays. Юрий АйдаровLiloSEA
 
Introduction in CUDA (1-3)
Introduction in CUDA (1-3)Introduction in CUDA (1-3)
Introduction in CUDA (1-3)Alexander Mezhov
 
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)Mikhail Kurnosov
 
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAЛекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAMikhail Kurnosov
 
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)Mikhail Kurnosov
 
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...Mikhail Kurnosov
 

What's hot (19)

"Лавриненко Ярослав" HPC GPU CUDA
"Лавриненко Ярослав" HPC GPU CUDA"Лавриненко Ярослав" HPC GPU CUDA
"Лавриненко Ярослав" HPC GPU CUDA
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
 
Лекция 9. Программирование GPU
Лекция 9. Программирование GPUЛекция 9. Программирование GPU
Лекция 9. Программирование GPU
 
MPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPI
MPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPIMPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPI
MPIPerf: пакет оценки эффективности коммуникационных функций стандарта MPI
 
Семинар 10. Параллельное программирование на MPI (часть 3)
Семинар 10. Параллельное программирование на MPI (часть 3)Семинар 10. Параллельное программирование на MPI (часть 3)
Семинар 10. Параллельное программирование на MPI (часть 3)
 
Лекция 7. Язык параллельного программирования Intel Cilk Plus
Лекция 7. Язык параллельного программирования Intel Cilk PlusЛекция 7. Язык параллельного программирования Intel Cilk Plus
Лекция 7. Язык параллельного программирования Intel Cilk Plus
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 
ПСЕВДОРЕГУЛЯРНЫЕ КОДОВЫЕ ШКАЛЫ ДЛЯ ЦИФРОВЫХ ПРЕОБРАЗОВАТЕЛЕЙ УГЛА
ПСЕВДОРЕГУЛЯРНЫЕ КОДОВЫЕ ШКАЛЫ ДЛЯ ЦИФРОВЫХ ПРЕОБРАЗОВАТЕЛЕЙ УГЛАПСЕВДОРЕГУЛЯРНЫЕ КОДОВЫЕ ШКАЛЫ ДЛЯ ЦИФРОВЫХ ПРЕОБРАЗОВАТЕЛЕЙ УГЛА
ПСЕВДОРЕГУЛЯРНЫЕ КОДОВЫЕ ШКАЛЫ ДЛЯ ЦИФРОВЫХ ПРЕОБРАЗОВАТЕЛЕЙ УГЛА
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
CSEDays. Юрий Айдаров
CSEDays. Юрий АйдаровCSEDays. Юрий Айдаров
CSEDays. Юрий Айдаров
 
Introduction in CUDA (1-3)
Introduction in CUDA (1-3)Introduction in CUDA (1-3)
Introduction in CUDA (1-3)
 
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
 
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAЛекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
 
CUDA Best Practices (2-3)
CUDA Best Practices (2-3)CUDA Best Practices (2-3)
CUDA Best Practices (2-3)
 
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)
 
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
 

Similar to Cтруктурно-ориентированные алгоритмы коллективных обменов в распределенных вычислительных системах

Стандарт MPI (Message Passing Interface)
Стандарт MPI (Message Passing Interface)Стандарт MPI (Message Passing Interface)
Стандарт MPI (Message Passing Interface)Mikhail Kurnosov
 
Пространственно-распределенная мультикластерная вычислительная система: архит...
Пространственно-распределенная мультикластерная вычислительная система: архит...Пространственно-распределенная мультикластерная вычислительная система: архит...
Пространственно-распределенная мультикластерная вычислительная система: архит...Mikhail Kurnosov
 
лекция1
лекция1лекция1
лекция1shagore
 
Лекция №9 Организация ЭВМ и систем
Лекция №9 Организация ЭВМ и системЛекция №9 Организация ЭВМ и систем
Лекция №9 Организация ЭВМ и системpianist2317
 
Измерение времени выполнения коллективных операций обменов информацией между ...
Измерение времени выполнения коллективных операций обменов информацией между ...Измерение времени выполнения коллективных операций обменов информацией между ...
Измерение времени выполнения коллективных операций обменов информацией между ...Mikhail Kurnosov
 
06 vasenin roganov siis_2013
06 vasenin roganov siis_201306 vasenin roganov siis_2013
06 vasenin roganov siis_2013Marina_creautor
 
Нейролингвистический анализатор для распознавания голосовых данных на основе ИНН
Нейролингвистический анализатор для распознавания голосовых данных на основе ИНННейролингвистический анализатор для распознавания голосовых данных на основе ИНН
Нейролингвистический анализатор для распознавания голосовых данных на основе ИННKonstantin Zavarov, ICP
 
О.В.Сухорослов "Параллельное программирование. Часть 2"
О.В.Сухорослов "Параллельное программирование. Часть 2"О.В.Сухорослов "Параллельное программирование. Часть 2"
О.В.Сухорослов "Параллельное программирование. Часть 2"Yandex
 
презентационные слайды курса лекций
презентационные слайды курса лекцийпрезентационные слайды курса лекций
презентационные слайды курса лекцийstudent_kai
 
Советский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияСоветский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияPositive Hack Days
 
TMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevTMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevIosif Itkin
 
Язык параллельного программирования Cray Chapel
Язык параллельного программирования Cray ChapelЯзык параллельного программирования Cray Chapel
Язык параллельного программирования Cray ChapelMikhail Kurnosov
 
2011 Kurosh MSc presentation
2011 Kurosh MSc presentation2011 Kurosh MSc presentation
2011 Kurosh MSc presentationRF-Lab
 
Представление графов в памяти компьютера (c++).
Представление графов в памяти компьютера (c++).Представление графов в памяти компьютера (c++).
Представление графов в памяти компьютера (c++).Olga Maksimenkova
 
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...AIST
 
презентационные слайды
презентационные слайдыпрезентационные слайды
презентационные слайдыstudent_kai
 
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelЛекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelMikhail Kurnosov
 

Similar to Cтруктурно-ориентированные алгоритмы коллективных обменов в распределенных вычислительных системах (20)

Стандарт MPI (Message Passing Interface)
Стандарт MPI (Message Passing Interface)Стандарт MPI (Message Passing Interface)
Стандарт MPI (Message Passing Interface)
 
Пространственно-распределенная мультикластерная вычислительная система: архит...
Пространственно-распределенная мультикластерная вычислительная система: архит...Пространственно-распределенная мультикластерная вычислительная система: архит...
Пространственно-распределенная мультикластерная вычислительная система: архит...
 
лекция1
лекция1лекция1
лекция1
 
Лекция №9 Организация ЭВМ и систем
Лекция №9 Организация ЭВМ и системЛекция №9 Организация ЭВМ и систем
Лекция №9 Организация ЭВМ и систем
 
Измерение времени выполнения коллективных операций обменов информацией между ...
Измерение времени выполнения коллективных операций обменов информацией между ...Измерение времени выполнения коллективных операций обменов информацией между ...
Измерение времени выполнения коллективных операций обменов информацией между ...
 
06 vasenin roganov siis_2013
06 vasenin roganov siis_201306 vasenin roganov siis_2013
06 vasenin roganov siis_2013
 
Lekt 11 mtp-3_decrypted
Lekt 11 mtp-3_decryptedLekt 11 mtp-3_decrypted
Lekt 11 mtp-3_decrypted
 
Нейролингвистический анализатор для распознавания голосовых данных на основе ИНН
Нейролингвистический анализатор для распознавания голосовых данных на основе ИНННейролингвистический анализатор для распознавания голосовых данных на основе ИНН
Нейролингвистический анализатор для распознавания голосовых данных на основе ИНН
 
О.В.Сухорослов "Параллельное программирование. Часть 2"
О.В.Сухорослов "Параллельное программирование. Часть 2"О.В.Сухорослов "Параллельное программирование. Часть 2"
О.В.Сухорослов "Параллельное программирование. Часть 2"
 
презентационные слайды курса лекций
презентационные слайды курса лекцийпрезентационные слайды курса лекций
презентационные слайды курса лекций
 
Efficiency vvv
Efficiency vvvEfficiency vvv
Efficiency vvv
 
Советский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияСоветский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисления
 
TMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevTMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry Zaitsev
 
Язык параллельного программирования Cray Chapel
Язык параллельного программирования Cray ChapelЯзык параллельного программирования Cray Chapel
Язык параллельного программирования Cray Chapel
 
Lekt 04 5-osi_decrypted
Lekt 04 5-osi_decryptedLekt 04 5-osi_decrypted
Lekt 04 5-osi_decrypted
 
2011 Kurosh MSc presentation
2011 Kurosh MSc presentation2011 Kurosh MSc presentation
2011 Kurosh MSc presentation
 
Представление графов в памяти компьютера (c++).
Представление графов в памяти компьютера (c++).Представление графов в памяти компьютера (c++).
Представление графов в памяти компьютера (c++).
 
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
 
презентационные слайды
презентационные слайдыпрезентационные слайды
презентационные слайды
 
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelЛекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
 

More from Mikhail Kurnosov

Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Mikhail Kurnosov
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Mikhail Kurnosov
 
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)Mikhail Kurnosov
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Mikhail Kurnosov
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPMikhail Kurnosov
 
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Mikhail Kurnosov
 
Лекция 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)Mikhail Kurnosov
 
Лекция 4. Префиксные деревья (tries, prefix trees)
Лекция 4. Префиксные деревья (tries, prefix trees)Лекция 4. Префиксные деревья (tries, prefix trees)
Лекция 4. Префиксные деревья (tries, prefix trees)Mikhail Kurnosov
 
Лекция 3. АВЛ-деревья (AVL trees)
Лекция 3. АВЛ-деревья (AVL trees)Лекция 3. АВЛ-деревья (AVL trees)
Лекция 3. АВЛ-деревья (AVL trees)Mikhail Kurnosov
 
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...Mikhail Kurnosov
 
Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Mikhail Kurnosov
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовMikhail Kurnosov
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиMikhail Kurnosov
 
Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)Mikhail Kurnosov
 
Лекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеЛекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеMikhail Kurnosov
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовMikhail Kurnosov
 
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)Mikhail Kurnosov
 
Лекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировкаЛекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировкаMikhail Kurnosov
 
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)Mikhail Kurnosov
 
Лекция 6. Хеш-таблицы
Лекция 6. Хеш-таблицыЛекция 6. Хеш-таблицы
Лекция 6. Хеш-таблицыMikhail Kurnosov
 

More from Mikhail Kurnosov (20)

Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Векторизация кода (семинар 2)
Векторизация кода (семинар 2)
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)
 
Лекция 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. Префиксные деревья (tries, prefix trees)
Лекция 4. Префиксные деревья (tries, prefix trees)Лекция 4. Префиксные деревья (tries, prefix trees)
Лекция 4. Префиксные деревья (tries, prefix trees)
 
Лекция 3. АВЛ-деревья (AVL trees)
Лекция 3. АВЛ-деревья (AVL trees)Лекция 3. АВЛ-деревья (AVL trees)
Лекция 3. АВЛ-деревья (AVL trees)
 
Лекция 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. Методы разработки алгоритмов
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимости
 
Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)
 
Лекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеЛекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графе
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графов
 
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
 
Лекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировкаЛекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировка
 
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
 
Лекция 6. Хеш-таблицы
Лекция 6. Хеш-таблицыЛекция 6. Хеш-таблицы
Лекция 6. Хеш-таблицы
 

Cтруктурно-ориентированные алгоритмы коллективных обменов в распределенных вычислительных системах

  • 1. Курносов Михаил Георгиевич Лаборатория вычислительных систем Института физики полупроводников им. А.В. Ржанова СО РАН, Новосибирск Кафедра вычислительных систем ГОУ ВПО “СибГУТИ”, Новосибирск Международная научно-техническая конференция “Суперкомпьютерные технологии: разработка, программирование, применение” (СКТ-2010) с. Дивноморское, Геленджикский район, Краснодарский край, Россия 27 сентября – 2 октября 2010 г. mkurnosov@isp.nsc.ru Cтруктурно-ориентированные алгоритмы коллективных обменов в распределенных вычислительных системах
  • 2. Средства создания параллельных программ для распределенных вычислительных систем 2СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов Библиотеки передачи сообщений • Библиотеки стандарта MPI: MPICH2, Open MPI • Parallel Virtual Machine Языки параллельного программирования для распределенных ВС • PGAS: IBM X10, Cray Chapel • Charm++, High-Performance Fortran, Unified Parallel C Модель передачи сообщений (message passing) Дифференцированный обмен (point-to-point communication) Коллективные обмены (collective communication) Трансляционно-циклический обмен (ТЦО, all-to-all broadcast) Трансляционный обмен (ТО, one-to-all broadcast) Коллекторный обмен (КО, all-to-one broadcast)
  • 3. Средства создания параллельных программ для распределенных вычислительных систем 3СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов Библиотеки передачи сообщений • Библиотеки стандарта MPI: MPICH2, Open MPI • Parallel Virtual Machine Языки параллельного программирования для распределенных ВС • PGAS: IBM X10, Cray Chapel • Charm++, High-Performance Fortran, Unified Parallel C Модель передачи сообщений (message passing) Дифференцированный обмен (point-to-point communication) Коллективные обмены (collective communication) Трансляционно-циклический обмен (ТЦО, all-to-all broadcast) Трансляционный обмен (ТО, one-to-all broadcast) Коллекторный обмен (КО, all-to-one broadcast) На коллективные обмены приходится 70-80% времени всех обменов (R. Rabenseifner, 2000)
  • 4. Алгоритмы коллективных обменов информацией между ветвями параллельных программ 4СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов • Трансляционный обмен (MPI_Bcast, MPI_Scatter): биномиальное дерево, Scatter + Allgather. • Трансляционно-циклический обмен (MPI_Allgather, MPI_Alltoall, MPI_Allreduce): кольцевой алгоритм, рекурсивное сдваивание, алгоритм Дж. Брука, алгоритм попарных обменов. • Коллекторный обмен (MPI_Reduce, MPI_Gather): биномиальное дерево, Reduce-Scatter + Gather. Алгоритмы основаны на предположении об однородности каналов связи между элементарными машинами распределенной ВС Иерархическая организация распределенных ВС Уровень 1 Уровень 2 Уровень 3
  • 5. Трансляционно-циклический обмен (ТЦО) информацией между ветвями параллельных программ 5СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов Начальное состояние ветвей Состояние ветвей после реализации ТЦО Каждая ветвь i ∈ {0, 1, …, n – 1} параллельной программы располагает локальным сообщением ai размером m байт. Требуется отправить сообщение ai всем ветвям и получить сообщения от каждой. По окончанию ТЦО все ветви должны содержать в своей памяти n сообщений a0, a1, …, an – 1, упорядоченных по номерам ветвей. • MPI: MPI_Allgather • Unified Parallel C: upc_all_gather_all
  • 6. Алгоритмы реализации трансляционно-циклических обменов информацией в распределенных ВС 6СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов a0 0 1 2 3 4 5 6 7 a1 a3 a2 a4 a5 a7 a6 a0 0 1 2 3 4 5 6 7 a1 a3 a2 a4 a5 a7 a6 a1 a0 a2 a3 a4 a5 a6 a7 a0 0 1 2 3 4 5 6 7 a1 a3 a2 a4 a5 a7 a6 a1 a0 a2 a3 a4 a5 a6 a7 a2 a3 a0 a1 a1 a0 a3 a2 a4 a5 a4 a5 a6 a7 a6 a7 a0 0 1 2 3 4 5 6 7 a1 a3 a2 a4 a5 a7 a6 a1 a0 a2 a3 a4 a5 a6 a7 a2 a3 a0 a1 a1 a0 a3 a2 a4 a5 a4 a5 a6 a7 a6 a7 a0 a1 a2 a3 a0 a1 a2 a3 a0 a1 a2 a3 a0 a1 a2 a3 a4 a5 a6 a7 a4 a5 a6 a7 a4 a5 a6 a7 a4 a5 a6 a7 a0 0 1 2 3 4 5 6 7 a1 a3a2 a4 a5 a7a6a0 0 1 2 3 4 5 6 7 a1 a3a2 a4 a5 a7a6 a1 a3a2 a4 a5 a7a6 a0 a0 0 1 2 3 4 5 6 7 a1 a3a2 a4 a5 a7a6 a1 a3a2 a4 a5 a7a6 a0 a2 a3 a3a2 a4 a5 a7a6 a0 a1 a4 a5 a7a6 a0 a1 a2 a0 0 1 2 3 4 5 6 7 a1 a3a2 a4 a5 a7a6 a1 a3a2 a4 a5 a7a6 a0 a2 a3 a3a2 a4 a5 a7a6 a0 a1 a4 a5 a7a6 a0 a1 a2 a4 a5 a7a6 a0 a1 a2 a5 a7a6 a0 a1 a2 a7a6 a0 a1 a2 a7 a0 a1 a2 a3 a4 a5 a6 a3 a4 a5 a3 a4a3 a0 0 1 2 3 4 5 6 7 a1 a3 a2 a4 a5 a7 a6 a1 a0 a2 a3 a4 a5 a6 a7 a2 a3 a0 a1 a1 a0 a3 a2 a4 a5 a4 a5 a6 a7 a6 a7 a0 a1 a2 a3 a0 a1 a2 a3 a0 a1 a2 a3 a0 a1 a2 a3 a4 a5 a6 a7 a4 a5 a6 a7 a4 a5 a6 a7 a4 a5 a6 a7 Алгоритм рекурсивного сдваивания (recursive doubling) Алгоритм Дж. Брука (J. Bruck et al., 1997) На каждом шаге размер передаваемого блока удваивается: m, 2m, 4m Количество обменов: 2log2n Количество обменов: 2log2n Только для n равного степени двойки На шаге k ветвь i взаимодействует с ветвями (i – 2k + n) mod n и (i + 2k) mod n
  • 7. Информационные графы алгоритмов реализации трансляционно-циклических обменов 7СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов Граф алгоритма рекурсивного сдваивания, m = 1 Граф алгоритма Дж. Брука, m = 1 Вес dij ребра отражает объем данных переданных по нему при реализации алгоритма
  • 8. Метод оптимизации алгоритмов трансляционно-циклических обменов в иерархических распределенных ВС 8СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов V1 V2 1. Формируется взвешенный граф G = (V, E), |V| = n алгоритма реализации ТЦО для m = 1. 2. Строится разбиение графа на h непересекающихся подмножеств V1, V2, …, Vh с целью минимизации суммарного веса рёбер, инцидентных различным подмножествам разбиения. Количество элементов в подмножестве Vu должно быть равно заданному числу su, u = 1, 2, …, h. 3. Строится отображение π(i) – ветвям с номерами из подмножества Vu назначаются номера ветвей, распределенных на элементарные машины вычислительного узла qu. h = 2 s1 = s2 = 4
  • 9. Алгоритмы реализации трансляционно-циклических обменов в иерархических распределенных ВС 9СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов Алгоритм recursive doubling exch. 1. Ветвь i передает свое сообщение ai ветви π-1 (i), принимает от ветви π(i) сообщение и делает его начальным. 2. На шаге k = 0, 1, …, log2n – 1 ветви i и π-1 (i ⊕ 2k ) обмениваются ранее принятыми 2k сообщениями. Алгоритм recursive doubling reorder 1. Ветвь i сдвигает свое сообщение ai из позиции i в позицию π(i). 2. На шаге k = 0, 1, …, log2n – 1 ветви i и π-1 (i ⊕ 2k ) обмениваются ранее принятыми 2k сообщениями. 3. Сообщение из позиции j = 0, 1, …, n – 1 переносится в позицию π-1 (j). Алгоритм Bruck exch. 1. Ветвь i передает свое сообщение ai ветви π-1 (i), принимает от ветви π(i) сообщение и делает его начальным. 2. На шаге k = 0, 1, …, log2n – 1 ветвь i передает все принятые сообщения ветви π-1 ((i′ – 2k + n) mod n) и принимает сообщения от ветви π-1 ((i′ + 2k ) mod n), где i′ = π(i). 3. Каждая ветвь циклически сдвигает сообщения вниз на i′ позиций. Алгоритм Bruck reorder 1. На шаге k = 0, 1, …, log2n – 1 ветвь i передает все принятые сообщения ветви π-1 ((i′ – 2k + n) mod n) и принимает сообщения от ветви π-1 ((i′ + 2k ) mod n), где i′ = π(i). 2. Сообщение в позиции j = 0, 1, …, n – 1 переставляется в позицию π-1 ((j + i′) mod n).
  • 10. Метод оптимизации трансляционно-циклических обменов информацией в иерархических распределенных ВС 10СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов • Формирование, разбиение графа и построение отображений π(i) и π-1(i) осуществляется единожды при первом вызове коллективной операции. • Все шаги метода эффективно реализуемы в параллельном виде на подсистеме элементарных машин, выделенной для реализации программы. • В каждой ветви достаточно хранить информацию об отображении смежных с ними ветвей. Для алгоритмов рекурсивного сдваивания и Дж. Брука достаточно хранить порядка O(log2n) байт. Предложенный метод реализации ТЦО применим в большемасштабных распределенных ВС
  • 11. Библиотека коммуникационных функций TopoMPI 11СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов MPI_Init(&argc, &argv); ... MPI_Allgather(...); ... MPI_Finalize(); MPI-программа MPI_Init • Загружается (формируется) описание иерархической структуры распределенной ВС. • Анализируется выделенная подсистема элементарных машин (MPI_COMM_WORLD). MPI_Allgather • Первый вызов: оптимизация алгоритмов. • Выбор оптимального алгоритма реализации Allgather. • Выполнение алгоритма. TopoMPI http://topompi.cpct.sibsutis.ruhttp://topompi.cpct.sibsutis.ruhttp://topompi.cpct.sibsutis.ruhttp://topompi.cpct.sibsutis.ru
  • 12. Результаты экспериментов 12СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов Время разбиения информационных графов алгоритмов на h подмножеств и формирования отображений на процессоре Intel Xeon E5420 (2.5 GHz) Время разбиения графа алгоритма Дж. Брука с количеством вершин 1048576 на 131072 подмножеств: 32,73 с.
  • 13. Результаты экспериментов 13СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов Время реализации ТЦО с учетом времени оптимизации алгоритмов: 8 двухпроцессорных узлов по 8 процессорных ядер; сеть связи Gigabit Ethernet Среднее время оптимизации алгоритмов cоставило 480 мкс и 300 мкс, соответственно, для алгоритмов Bruck exch., Bruck reorder и recursive doubling exch., recursive doubling reorder
  • 14. Результаты экспериментов 14СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов Ускорение алгоритмов на кластерной ВС: 8 двухпроцессорных узлов по 8 процессорных ядер; сеть связи Gigabit Ethernet а – ускорение алгоритмов на “коротких” сообщениях; б – ускорение алгоритмов на “длинных” сообщениях а б
  • 15. Результаты экспериментов 15СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов Ускорение алгоритмов на кластерной ВС: 8 двухпроцессорных узлов по 8 процессорных ядер; сеть связи InfiniBand 4x DDR а – время реализации ТЦО “коротких” сообщений; б – ускорение алгоритмов на “длинных” сообщениях а б
  • 16. Заключение 16СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов • Разработанный метод применим для всех типов коллективных обменов. • Время затрачиваемое на построение отображений ветвей не значительно и компенсируется многократным обращением в программе к коллективным операциям информационных обменов. Направление дальнейших работ: • Развитие структурно-ориентированных методов реализации коллективных операций информационных обменов, не требующих предварительного вложения графов алгоритмов в структуры распределенных ВС. • Разработка методов динамического выбора оптимального алгоритма реализации коллективной операции для заданного сообщения и подсистемы элементарных машин. • Создание децентрализованных алгоритмов вложения параллельных программ в большемасштабные иерархические распределенные ВС. • Оптимизация выполнения параллельной программы на основе данных её предыдущего выполнения (Profile-Guided Optimization - PGO).
  • 17. Спасибо за внимание! 17СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов
  • 18. Иерархическая организация распределенных ВС 18СКТ-2010, 27 сентября – 2 октября 2010 г.Михаил Курносов Время передачи сообщений через сеть межузловых связей и общую память узла: а – кластер ЦПВТ ГОУ ВПО “СибГУТИ” (Gigabit Ethernet) б – кластер ИВЦ ГОУ ВПО “НГУ” (InfiniBand 4x DDR) а б