якобовский - введение в параллельное программирование...

78
Балансировка загрузки процессоров Институт математического моделирования Российской академии наук mail: [email protected] web: http://lira.imamod.ru Нижний Новгород 2009 М.В.Якобовский

description

 

Transcript of якобовский - введение в параллельное программирование...

Page 1: якобовский - введение в параллельное программирование (2)

Балансировка загрузки процессоров

Институт математического моделированияРоссийской академии наук

mail: [email protected]

web: http://lira.imamod.ru

Нижний Новгород

2009

М.В.Якобовский

Page 2: якобовский - введение в параллельное программирование (2)

Задачи большого вызова (Kenneth G. Wilson, Cornell University, 1987)

• Вычислительная газовая динамика:– Создание летательных аппаратов, эффективных автомобилей– Предсказание погоды, и глобальных климатических изменений – Оптимизация нефтедобычи, …

• Молекулярная динамика:– Создание материалов с заданными свойствами– Разработка новых лекарственных соединений– Сверхпроводимость, Свойства веществ в экстремальных состояниях, …

• Символьные вычисления– Распознавание речи– Компьютерное зрение– Изучение сложных систем– Автономные системы управления

• Квантовая хромодинамика и теория конденсированных сред• Управляемый термоядерный синтез, Геном человека, …

http://en.wikipedia.org/wiki/Grand_Challenge

2

Page 3: якобовский - введение в параллельное программирование (2)

Дозвуковая аэродинамическая труба Т-104, ЦАГИ

• Скорость потока 10–120 м/с• Диаметр сопла 7 м• Длина рабочей части 13 м• Мощность вентилятора

28.4 МВтhttp://www.tsagi.ru/rus/base/t104

Суперкомпьютер СКИФ МГУ «ЧЕБЫШЁВ»• Пиковая производительность 60 TFlop/s• Мощность комплекса 0.72 МВт

http://parallel.ru/cluster/skif_msu.html

3

Page 4: якобовский - введение в параллельное программирование (2)

4

Page 5: якобовский - введение в параллельное программирование (2)

5

Page 6: якобовский - введение в параллельное программирование (2)

6

Page 7: якобовский - введение в параллельное программирование (2)

7

Page 8: якобовский - введение в параллельное программирование (2)

Суперкомпьютеры

• Не просто составляют конкуренцию натурному эксперименту, но:– Необходимы для его проведения– Позволяют делать то, что натурный эксперимент

делать не позволяет

8

Page 9: якобовский - введение в параллельное программирование (2)

Суперкомпьютеры• Используются неэффективно и далеко не в полной

мере• Необходимы:

– Вычислительное ядро: адаптация алгоритмовк архитектуре многопроцессорных системс распределённой памятью

– Специальное математическое обеспечение: визуализация, генерация сеток, рациональное разбиение на подобласти, динамическая балансировка загрузки процессоров, использование CAD-технологий, использование гетерогенных систем и GRID-технологий

– Интеграция в единый программный комплекс

9

Page 10: якобовский - введение в параллельное программирование (2)

10

Page 11: якобовский - введение в параллельное программирование (2)

11

Page 12: якобовский - введение в параллельное программирование (2)

НЕВЯЗКОЕ ОБТЕКАНИЕ КУЗОВА АВТОМОБИЛЯ(М = 0.12)

СЕТКА: 430 949 УЗЛОВ, 2 430 306 ТЕТРАЭДРОВ12

Page 13: якобовский - введение в параллельное программирование (2)

Сетка: 209 028 730 узлов, 1 244 316 672 тетраэдра (24 Гб)

МВС: МВС-100К

1. Запуск задачи на 128, 192, 256, 320, 384 и 437 модулях с порождением 2 и 4 параллельных MPI процессов (до 1748 параллельных процессов).

2. Запуск задачи на 437 модулях в рамках гибридной модели параллелизма MPI + OpenMP (3496 параллельных процессов)

НЕВЯЗКОЕ ОБТЕКАНИЕ КУЗОВА АВТОМОБИЛЯ

13

Page 14: якобовский - введение в параллельное программирование (2)

Суперкомпьютеры

МСЦ РАН: процессор: Intel(R) Xeon(R) CPU X5365 @ 3.00GHz ядер на узел: 8 память узла: 4/8 Гб число узлов: 782 (6256 ядер) коммуникации: InfiniBand DDR производительность: 75 TFLOPS

СКИФ МГУ: процессор: Intel(R) Xeon(R) CPU E5472 @ 3.00GHz ядер на узел: 8 память узла: 8 Гб число узлов: 630 (5040 ядер) коммуникации: InfiniBand DDR производительность: 60 TFLOPS

14

Page 15: якобовский - введение в параллельное программирование (2)

Институт Математического Моделирования РАН Институт Математического Моделирования РАН 125047, M125047, Mиусская пл. 4а, Москваиусская пл. 4а, Москва

АкустикаВычислительные эксперименты по ЗПК

АкустикаВычислительные эксперименты по ЗПК

Page 16: якобовский - введение в параллельное программирование (2)

Институт Математического Моделирования РАН Институт Математического Моделирования РАН 125047, M125047, Mиусская пл. 4а, Москваиусская пл. 4а, Москва

Звукопоглощающие конструкцииЗвукопоглощающие конструкции

Панель ЗПК Расчетная область

РезонаторАкустические волны в импедансной трубе

Сотовая конструкция резонаторов

Перфорированный экран

Page 17: якобовский - введение в параллельное программирование (2)

Институт Математического Моделирования РАН Институт Математического Моделирования РАН 125047, M125047, Mиусская пл. 4а, Москваиусская пл. 4а, Москва

Эксперимент 1: Модель 2D и 3D импедансной трубы Эксперимент 1: Модель 2D и 3D импедансной трубы

2D задача

Концентрация сетки около горла резонатора

Размер сетки до 90К узлов

3D задача

Размер сетки до 1М узлов

Page 18: якобовский - введение в параллельное программирование (2)

Институт Математического Моделирования РАН Институт Математического Моделирования РАН 125047, M125047, Mиусская пл. 4а, Москваиусская пл. 4а, Москва

3D импедансная труба 3D импедансная труба

Течение в отверстии резонаторной камерыТечение в отверстии резонаторной камеры

Page 19: якобовский - введение в параллельное программирование (2)

Институт Математического Моделирования РАН Институт Математического Моделирования РАН 125047, M125047, Mиусская пл. 4а, Москваиусская пл. 4а, Москва

Эффект свиста Слой смешения

Возмущения плотности

Эксперимент 2: 2D канал с резонаторами (2/2) Эксперимент 2: 2D канал с резонаторами (2/2)

Page 20: якобовский - введение в параллельное программирование (2)

Институт Математического Моделирования РАН Институт Математического Моделирования РАН 125047, M125047, Mиусская пл. 4а, Москваиусская пл. 4а, Москва

Базовая численная схема (1/2)Базовая численная схема (1/2)

Декартова сетка Неструктурированная треугольная сетка

Медианные ячейки

Ячейки на центрах описанных окружностей

2D контрольные объемы 3D контрольные объемы

Декартова сетка Неструктурированная тетраэдральная сетка

Page 21: якобовский - введение в параллельное программирование (2)

Институт Математического Моделирования РАН Институт Математического Моделирования РАН 125047, M125047, Mиусская пл. 4а, Москваиусская пл. 4а, Москва

Базовая численная схемаБазовая численная схема

Пространственный шаблон для определения потока между узлами I и JПространственный шаблон для определения потока между узлами I и J

2D треугольная сетка 3D тетраэдральная сетка

2D шаблон высокого порядка: Противопоточные треугольники + соседи

3D шаблон высокого порядка: Противопоточные тетраэдры + соседи

(сложность для распараллеливания)

Page 22: якобовский - введение в параллельное программирование (2)

Институт Математического Моделирования РАН Институт Математического Моделирования РАН 125047, M125047, Mиусская пл. 4а, Москваиусская пл. 4а, Москва

Канал с 5 резонаторамиКанал с 5 резонаторами

Уравнения Эйлера, нет погранслоя, М=0.4

Возмущения плотности

Применимость не только суперкомпьютеров, но и Grid технологий

Page 23: якобовский - введение в параллельное программирование (2)

Институт Математического Моделирования РАН Институт Математического Моделирования РАН 125047, M125047, Mиусская пл. 4а, Москваиусская пл. 4а, Москва

Heat and Mass Transfer Technological CenterHeat and Mass Transfer Technological CenterColom 11, E-08222, Terrassa, Barcelona, SpainColom 11, E-08222, Terrassa, Barcelona, Spain

Производительность вычисленийПроизводительность вычислений

Две различные параллельные системы использовались для тестов1) Типичный малобюджетный кластер с обычной сетью Ethernet

Узел: 2CPU Intel Xeon 3GHzСеть: Ethernet 1Gbit

2) “Продвинутый” кластер с высокопроизводительной сетью низкой латентности Узел: 2CPU AMD Opteron 2.4HzСеть: Myrinet

Эти системы имею существенно различное отношение производительности процессора и сети

Тестовая задача: Модельная 2D задача – импедансная труба. Размер сетки 80 000 узлов, схема 5-го порядка

Пример разбиения сетки

Page 24: якобовский - введение в параллельное программирование (2)

Статическая балансировка загрузки

nVvVEVG i ,,,

pVVVR ,,1

jiVVVV ji

p

kk

,,1

ki kjVv Vv

jiipkVR

vvwvwJ ,maxmin,,1

24

Page 25: якобовский - введение в параллельное программирование (2)

• Равномерное распределение суммарного веса узлов/рёбер

• Минимизация максимального веса исходящих из домена ребер

• Минимизация суммарного веса разрезанных ребер

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

• Обеспечение связности доменов

• Обеспечение связности множества внутренних узлов доменов

3

0

4

1 2

5

6 THREAD 0

THREAD 1

THREAD 1

3

0

4

1 2

5

6 THREAD 0

А.Н. Андрианов, А.В. Жохова, Б.Н. ЧетверушкинА.Н. Андрианов, А.В. Жохова, Б.Н. ЧетверушкинПроцессоровПроцессоров 1111 3131 4747 6363 New_sort New_sort 13.5913.59 5.59 5.59 4.38 4.38 4.164.16METISMETIS 13.6113.61 11.0011.00 11.1011.10 10.5610.56

Критерии декомпозиции графов

25

Page 26: якобовский - введение в параллельное программирование (2)

Чему равно 25/4 ?

6.25

26

Page 27: якобовский - введение в параллельное программирование (2)

25/4=

6.25

27

Page 28: якобовский - введение в параллельное программирование (2)

25/4=

4

6 9 6.25

28

Page 29: якобовский - введение в параллельное программирование (2)

25/4 = 4 ? 6 ? 9• Разрезать решетку 5 х 5 на 4 части

29

Page 30: якобовский - введение в параллельное программирование (2)

Декомпозиция сетки из 25 узлов на 4 части

30

Page 31: якобовский - введение в параллельное программирование (2)

25/4 = 4 ? 6 ? 9

• Дисбаланс 9/4=2.25

• Декомпозиция решетки 5 х 5 на 4 домена

4

6 9

6

31

Page 32: якобовский - введение в параллельное программирование (2)

25/4 = 4 ? 6 ? 9

• Дисбаланс 13/12 : 8%

• Декомпозиция решетки 5 х 5 на 2 домена

32

Page 33: якобовский - введение в параллельное программирование (2)

25/4 = 4 ? 6 ? 9

• Дисбаланс 7/6 : 17%

• Декомпозиция решетки 5 х 5 на 4 домена

33

Page 34: якобовский - введение в параллельное программирование (2)

25/4 = 4 ? 6 ? 9

• Дисбаланс 9/4=2.25

• Декомпозиция решетки 5 х 5 на 4 домена

4

6 9

6

34

Page 35: якобовский - введение в параллельное программирование (2)

25/4 = 4 ? 6 ? 9

• Дисбаланс 9/4=2.25

• Декомпозиция решетки 5 х 5 на 4 домена

4

6 9

6

35

Page 36: якобовский - введение в параллельное программирование (2)

• Дисбаланс 9/4=2.25

25/4 = 4 ? 6 ? 9• Декомпозиция решетки 5 х 5 на 4 домена

4

6 9

6

Потери 9/6.25=1.44

Потери 9/7=1.2936

Page 37: якобовский - введение в параллельное программирование (2)

Декомпозиция сетки 25х25 на 7 частей

37

Page 38: якобовский - введение в параллельное программирование (2)

Разбиение тетраэдральной сетки, содержащей 2 10∙ 8 узлов, на 125 процессорах

• вычисления производились на кластере СКИФ МГу (1250 4-хядерных процессоров, 60 TFlop/s)

геометрическая декомпозиция

ParMETIS

число доменов 80 000 20 000

время 21 сек. 10 сек.

число вершин в домене

2612 2613 2 328 10 932мин. макс.

среднее число связей с соседними доменами

14 14

число некомпактных доменов

229 36438

Page 39: якобовский - введение в параллельное программирование (2)

Фрагмент треугольной сетки из 75790 вершин

результат геометрической декомпозиции

результат перераспределения малых блоков вершин

39

Page 40: якобовский - введение в параллельное программирование (2)

Иерархический алгоритм

ОгрублениеОгрубление

Восстановлени

Восстановлени

ее

ДекомпозицияДекомпозиция40

Page 41: якобовский - введение в параллельное программирование (2)

Огрубление графа

41

Page 42: якобовский - введение в параллельное программирование (2)

Локальное уточнение

1133

5544

22

66

77

1133

5544

22

66

77

Kernighan-Lin (KL)и Fiduccia-Mattheyses (FM)

42

Page 43: якобовский - введение в параллельное программирование (2)

Связность ядер доменов

Bvid ik

kA:min 111 ,\\ TTTTT kkkk A

43

Page 44: якобовский - введение в параллельное программирование (2)

Инкрементный

алгоритм декомпозиции

графа

44

Page 45: якобовский - введение в параллельное программирование (2)

Редуцирование доменов

один домен

а

 

б

свободные вершины

45

Page 46: якобовский - введение в параллельное программирование (2)

Инкрементный алгоритм, Dm=8

46

Page 47: якобовский - введение в параллельное программирование (2)

Инкрементный алгоритм, Dm=25

47

Page 48: якобовский - введение в параллельное программирование (2)

Результат локального разбиения сетки из 75790 вершин на 50 доменов на 5 процессорах

48

Page 49: якобовский - введение в параллельное программирование (2)

Результат сбора плохих групп доменов и их повторного разбиения

49

Page 50: якобовский - введение в параллельное программирование (2)

Адаптивные сетки

Обтекание профиля NACA0012 (M=0.85, Re=104)под нулевым углом атаки:

Поле продольной скорости Фрагмент сетки50

Page 51: якобовский - введение в параллельное программирование (2)

Равномерная сетка

X

Y

0 0.5 10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Frame 001 05 Jun 2006 Value field

X

Y

0 0.5 10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Frame 001 05 Jun 2006 Value field

Слева – ??круглое?? пятно примеси

51

Page 52: якобовский - введение в параллельное программирование (2)

X

Y

0 0.5 10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Frame 001 05 Jun 2006 Value field

X

Y

0 0.5 10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Frame 001 05 Jun 2006 Value field

Адаптивная сетка

Слева – круглое пятно примеси

52

Page 53: якобовский - введение в параллельное программирование (2)

Адаптивные декартовы сетки• Вначале сетка состоит из одной прямоугольной ячейки• Каждая ячейка может быть разделена на четыре ячейки одинакового размера• Если ячейки когда-то составляли одну ячейку, то они могут быть объединены обратно• Каждая ячейка хранит величину, описывающую среднее значение неизвестной функции

в пределах ячейки (метод конечных объёмов)

При данных предположениях сетку удобно хранить в виде четверичного дерева:

Дополнительные ограничения на размеры ячеек:• Задан максимально допустимый размер ячеек• Задан минимально допустимый размер ячеек• Размеры соседних ячеек должны различаться не более, чем в 2 раза

53

Page 54: якобовский - введение в параллельное программирование (2)

На рисунках показаны результаты решения простейшей задачи переноса на равномерной (слева) и адаптивной (справа) сетках с одинаковым числом ячеек (4096 штук). Скорость переноса направлена под углом 45° к линиям сетки; начальное условие показано пунктиром

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

0.1

0.1

0.10.30.50.70.9

1.1

-0.1

-0.1

0 0.25 0.5 0.75 10

0.25

0.5

0.75

1

0.1

0.9

0 0.25 0.5 0.75 10

0.25

0.5

0.75

1

54

Page 55: якобовский - введение в параллельное программирование (2)

Адаптивная сетка

55

Page 56: якобовский - введение в параллельное программирование (2)

Решение двумерной задачи фильтрации нефтеводяной смеси в области

с неоднородной проницаемостьюВ юго-западном углу находится скважина, нагнетающая воду, в северо-восточном углу — добывающая скважина. 5-ти точечная схемаПоле проницаемости с разбросом значений на 4 порядка).

56

Page 57: якобовский - введение в параллельное программирование (2)

Решение двумерной задачи фильтрации нефтеводяной смеси в области

с неоднородной проницаемостьюВ юго-западном углу находится скважина, нагнетающая воду, в северо-восточном углу — добывающая скважина. 5-ти точечная схемаПоле проницаемости с разбросом значений на 4 порядка).

57

Page 58: якобовский - введение в параллельное программирование (2)

Динамическая балансировка загрузки

• Перераспределение вычислительных узлов между процессорами необходимо:– При изменение конфигурации сетки– При изменение вычислительной сложности

обработки узлов– При изменении эффективной

производительности процессоров

58

Page 59: якобовский - введение в параллельное программирование (2)

Декомпозиция пакетом Metis

59

Page 60: якобовский - введение в параллельное программирование (2)

Нумерация с помощью кривой ГильбертаФормируется простой рекурсивной процедуройЛокальное изменение сетки приводит к локальному изменению кривой

60

Page 61: якобовский - введение в параллельное программирование (2)

61

Диффузная балансировка Декомпозиция с помощью кривой Гильберта

Page 62: якобовский - введение в параллельное программирование (2)

62

Page 63: якобовский - введение в параллельное программирование (2)

Стратегии балансировки загрузки

Wij - вычислительная нагрузка, ассоциированная с узлом сетки i на шаге j

• Wij = Wi

j – не зависит от времени

• Wij ≈ Wi

j-1 – меняется медленно

• Wij ≠ Wi

j-1 – меняется значительно и

не прогнозируемо

СтатическаяСтатическая Динамическая Динамическая диффузнаядиффузная

ДинамическаяДинамическая??

63

Page 64: якобовский - введение в параллельное программирование (2)

5%

65%

CH4

30%

Моделирование задач горения на многопроцессорных системах

64

Page 65: якобовский - введение в параллельное программирование (2)

65

Page 66: якобовский - введение в параллельное программирование (2)

Здесь A оператор, - плотность, y(i) – массовые доли i-х компонент, u, v - скорости, p - давление, E – полная энергия, I – сорости образования компонент.

I. Блок Газовой динамики (GD):

II. Блок химической кинетики (CHEM):

Моделирование задач горения

,fAt

UU

U , , , ,( )y u v Ei T

f iT( , , , , )0 0 0 0

0 UU

At

U UU U

j jj j

tA A

1

11

20

.

d

dtf

U , T

if )0,0,0,,0(

66

Page 67: якобовский - введение в параллельное программирование (2)

Блок схема алгоритма

ГД

,02

1 )(1

)1(1

jk

jj

kj

AAt

UUUU

;10 sk ,)0(

1 jj UU

ХК

,ftd

d

U

T)0,0,0,,0( if .

yi, T

_ _ yi, T

67

Page 68: якобовский - введение в параллельное программирование (2)

Распределение времени счета

1 3 5 7 9

11 13 15 17 19 21 23 25 27 29

Р1

0.00

5.00

10.00

15.00

20.00

25.00 Время вычислений прииспользовании методагеометрического параллелизма

наилучшеевозможное время

число процессоров

свремя

вычислений

Page 69: якобовский - введение в параллельное программирование (2)

Структура и возможности алгоритма

A

D

B

E

C

A

D

B

E

C

A

D

B

E

C

task

Calculation process

Control process

Processor

69

Page 70: якобовский - введение в параллельное программирование (2)

Сотояния обрабатывающего процесса

• занят - если установлен соответствующий флаг. Этот флаг устанавливается перед передачей обрабатывающему процессу необработанной точки (неважно локальной или внешней) и сбрасывается после того, как точка уже обработана и управляющий процесс получил от обрабатывающего процесса результат;

• свободен - если не занят, т.е. готов к получению очередной свободной точки.

Page 71: якобовский - введение в параллельное программирование (2)

Управляющий процесс

• 1. если - есть необработанные точки (неважно локальные или внешние) и- обрабатывающий процесс свободен,

• тоустановить флаг обрабатываемой точки,одна из необработанных точек передается на обработку обрабатывающему процессу.

Page 72: якобовский - введение в параллельное программирование (2)

Управляющий процесс• 2. если

- нет локальных необработанных точек и- нет внешних точек и- нет обрабатываемых точек и- флаг запроса на получение необработанных точек не установлен и- есть процессоры, которые еще не ответили, что не могут предоставить точки для обработки (соответствующий флаг флаг запрета обменов не установлен),

• то• послать запрос на получение необработанных точек

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

необработанных точек

Page 73: якобовский - введение в параллельное программирование (2)

Управляющий процесс

• Иначе (если не 2)• 3. если

- все переданные точки получены обратно обработанными и- от всех процессоров получено сообщение о том, что точки для обработки предоставлены быть не могут и- всем процессорам послано сообщение о том, что точки для обработки предоставлены быть не могут,тозавершение работы

Page 74: якобовский - введение в параллельное программирование (2)

Управляющий процесс• 4. получить очередное сообщение от любого

процессора или от своего обрабатывающего процесса.

• 5. обработать полученное сообщение• 6. перейти к началу цикла (п. 1)

Page 75: якобовский - введение в параллельное программирование (2)

Окончание при выполнение всех условий:

• нет локальных необработанных точек• нет внешних точек• нет обрабатываемых точек• всем процессорам был послан запрос на получение

необработанных точек• всем процессорам было послано сообщение о том, что

необработанные точки предоставлены быть не могут• от всех процессоров получено сообщение о том, что

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

результаты обработки всех переданных точек

Page 76: якобовский - введение в параллельное программирование (2)

Кластеры и эффективность

High speed network Mbyte/sec

Low speed network

Client

Server

32 processors 12 processors

1.00

6.00

11.00

16.00

21.00

26.00

31.00

36.00

41.00

1 5 9 13 17 21 25 29 33 37 41 45

Np

speedup

Cluster1

CFD

Cluster2 Chemical

Cluster4 Chemical

Cluster3 Chemical

Control

76

Page 77: якобовский - введение в параллельное программирование (2)

Схема взаимодействия процессов

Page 78: якобовский - введение в параллельное программирование (2)

Выводы

• Балансировка загрузки процессоров – ключевой этап обеспечения высокой эффективности использования многопроцессорной системы.

• С ростом числа процессоров возрастает актуальность использования динамической балансировки загрузки

78