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

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

Upload: michael-karpov

Post on 31-May-2015

450 views

Category:

Technology


7 download

TRANSCRIPT

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

Визуализация в распределенных системах

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

mail: [email protected]

web: http://lira.imamod.ru

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

2009

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

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

Особенности момента• Потребность в суперкомпьютерах высока• Эффективность использования суперкомпьютеров низка:

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

– Обмены, синхронизация и другие дополнительные операции ещё снижают эффективность параллельной программы

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

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

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

TOP 500TOP 500

10 T10 T

МВС-МВС-1000М1000М

JSCCJSCC

20002000 20102010 гг г.г.19951995 20052005 20152015

100100 TT

1 T1 T

100100 G G

10 G10 G

1 G1 G

1 Pflops1 Pflops2301 Tf2301 Tf

#1#1281 Tf281 Tf

500500

#500#500

1,65 Tf1,65 Tf

0,42 Gf0,42 Gf

1,12 Tf1,12 Tf

60 Gf60 Gf

flopsflops

Workstation:Workstation: 1 1/100 000/100 000

JSCCJSCCMSUMSU

oОперативная память

o Кеш

oОперационные устройства

oМножественный доступ

oБета-тестер

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

4

Вычислительная среда

Выбор математической

модели и солверов.Сопоставление

атрибутам начальных и граничных условий,

физических параметров.

Выбор сервера

вычислений

Выбор сервера

визуализации

Проект

Построение геометрической

модели,поверхностной и объемной сетки.

Задание атрибутов.

Формирование варианта задания

Расчет варианта задания

Файлы результатов

Визуализация

результатов

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

Визуализация

• Скалярные • Векторные

• Стационарные• Зависящие от времени

• Решетки• Треугольные и тетраэдральные сетки

сеткиБольшие

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

Этапы визуализацииЗапись

Сетка Сеточная функцияЧтение

Формирование объектов виртуальной сцены

Отображение

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

массив

Дисковый

Кластер

Управляющий узел

Рабочие узлы

Удаленное рабочее место

Клиентская часть

Локальная или глобальная сеть

Клиент-серверная технология

Аппроксимация и потоковая обработка

VISIT ParaView

EnSight OpenDX

• Отображение

• Расчет• Запись

результатов

• Копирование всех данных• Чтение• Формирование сцены

• Чтение• Формирование

сцены

TecPlotOrigin

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

Методы

• Распределенное иерархическое хранение• Декомпозиция• Огрубление с контролируемой точностью• Клиент-серверная технология

• Потоковая обработка• Хранение образов

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

Обтекание самолета

Сетка Изоповерхности

Page 10: якобовский - введение в параллельное программирование (3)
Page 11: якобовский - введение в параллельное программирование (3)
Page 12: якобовский - введение в параллельное программирование (3)
Page 13: якобовский - введение в параллельное программирование (3)
Page 14: якобовский - введение в параллельное программирование (3)
Page 15: якобовский - введение в параллельное программирование (3)
Page 16: якобовский - введение в параллельное программирование (3)
Page 17: якобовский - введение в параллельное программирование (3)
Page 18: якобовский - введение в параллельное программирование (3)
Page 19: якобовский - введение в параллельное программирование (3)

Расчетная сетка

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

Огрубление поверхностей

ОшибкаКоличество

точекКоличество

треугольниковКоэффициент

сжатия

0% 13800 27357 -

0,1% 1120 2117 12,9

0,2% 447 808 33,9

0,5% 175 304

90,0

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

Огрубление поверхностей

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

Двухуровневое разбиение

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

Вершины макрографа распределяются по процессорам

II IIII

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

Потоковая обработкаКол-во исходных точек

Время чтения файлов данных, мин:сек

Общее время работы, мин:сек

Кол-во полученных точек

100 млн. 0:08 0:13 1 681252 млн. 4:38 36:51 3 010512 млн. 32:07 Не хватило памяти -1000 млн. 56:54 Не хватило памяти -

Кол-во исходных точек регулярной сетки

Число фрагментов, на которые разбивался каждый файл

Общее время работы, мин:сек

Кол-во полученных точек изоповерхности

252 млн. 1 24:51 2 997252 млн. 8 4:20 5 891252 млн. 64 0:14 11 198512 млн. 8 41:40 7 996512 млн. 27 0:25 10 997512 млн. 64 0:26 14 0261000 млн. 64 - 56:54 83:25 19 5341000 млн. 27 0:45 16 1711000 млн. 8 2:34 13 218

40 процессоров, полное чтение файла

40 процессоров, чтение фрагментов файла

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

Изоповерхности

Ошибка аппроксимации 5%Ошибка аппроксимации 5%

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

27

Сечение регулярной 3D сетки плоскостью

• В результате сечения регулярной кубической решетки получается фрагмент неструктурированной сетки

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

28

Аппроксимация триангулированных поверхностей

• Алгоритмы синтеза

• Алгоритмы редуцирования

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

Начальная аппроксимация кривой

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

Аппроксимация кривой этап 2

1 вектор

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

Аппроксимация кривой этап 3

3 вектора

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

Аппроксимация кривой этап 4

7 векторов

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

Аппроксимация кривой этап 5

15 векторов

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

34

Методы редуцирования

Удаление ребра

Удаление точки

Уточнение топологии

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

35

Аппроксимация изоповерхностей

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

36

Плоскость, пересекающая цилиндр

Ошибка аппроксимации 5%Ошибка аппроксимации 5%

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

Многоуровневое огрубление больших сеток

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

IMM CLx12

Дисковый массив

Локальная или глобальная сеть

Рабочие узлы

массив

Дисковый

IMM Intel24

PACX-MPI Коммуникации Коммуникации

PACX-MPI Рабочие

узлы

Удаленное рабочее место

Клиентская часть Локальная или

глобальная сеть

Коммуникаци онная часть

Распределенная визуализация

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

39

Моделирование течения вокруг летательного аппарата

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

40

Изоповерхности поля плотности

RemoteViewer TTecplotecplot

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

Тетраэдральные сетки 108 узлов

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

42

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

43

Заполнение пространства пирамидами

• На каждую из 2n точек в среднем опирается 2n пирамид

• Число пирамид ~ n2

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

Зависимость объема хранимых данных от числа микродоменов

Число микродоменов 1 50 1000 1500 2000 2500 3000

Размер описания (МБ) 124 127 145 152 158 163 168

38 350 -> 2 356 196 узлов219 034 * 82 -> 14 018 176 тетраэдров

На 35% больше чем 124

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

Нерегулярная тетраэдральная сетка

45

110 533 834 узлов

659 316 736 тетраэдров

2 589 184 поверхностных треугольников

Время выполнения программы на 100 процессорах МВС-15000ВМ составляет 270 секунд (с учетом записи данных на диск). Время равномерного измельчения – 30 секунд. Дисковое пространство 12.33 Гб

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

Библиотека ввода-вывода

• Ввод-вывод тетраэдральных сеток– Хранение микродоменов– Хранение макрографа

• Ввод-вывод регулярных решеток– Хранение фрагментов сеток– Хранение сеточных функций

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

Записи двух сеточных 2d функций

Функция F1 Функция F2

Рисунок 2.

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

Групповое сжатие вещественных чисел

сжимаемый массив вещественных чисел

перегруппированные массивы байт

Перегруппировка байтСжатие байт стандартной библиотекой zlib

Обнуление младших бит мантиссы

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

Отсечение младших бит мантиссы f=x2+y2+z2

23 106 427 байт

10^9 узлов - 113 354 035 байт – 0.1% - 0.92 битa на узел

10^9 узлов: 1000 блоков по 10^6 узлов

3.54 бинарный без компрессии без огрубления

компрессия без огрубления

49

3.1415923.141593.14153.1413.14

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

Огрубление данных

50

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

Моделирование процессов охлаждения CPU

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

CPU

Процессор, охлаждаемый медным радиатором

Мощность 65Вт

10мм

~1.4мм

Толщина0.3мм

7мм……

97.5мм, 78 медных пластин

100мм ……

Поток воздуха: T=20C, .004-.005 м3/с

Cu

30x30 мм

35мм до границы

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

Зависимость эффективности от числа ядер

Конфигурация: 78 тонких ребер (0.3 мм) на радиаторе

Сетка: 1000 х 3500 х 150 = 525 млн.Параллельная реализация: MPI + нити (8 нитей на узле)

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

Изоповерхности температуры: Т=20.5, 21, 22.5 С сетка 800*700*120=67,2 млн. узлов

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

Зависимость коэффициента сжатия от числа усеченных бит

28 244 379 w101_reduced 12.bjn22 340 718 w101_reduced 13.bjn17 228 023 w101_reduced 14.bjn13 339 249 w101_reduced 15.bjn 5 171 208 w101_reduced 16.bjn 3 321 150 w101_reduced 17.bjn 2 213 949 w101_reduced 18.bjn 1 471 818 w101_reduced 19.bjn

793 457 w101grid.bjn

Сетка: 1000 х 3500 х 150 = 525 млн узлов

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

Параллельные библиотеки http://www.imamod.ru

SDLB - динамическая балансировка (0D)

MCoarse - огрубление сеток (2D, 3D)

BjnIOlib - ввод-вывод регулярных сеток

TMLlib - ввод-вывод неструктурированных сеток

LRND - генерация псевдослучайных чисел

PSORT - параллельная сортировка

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

Якобовский М.В. д.ф.-м.н., зав. сектором «Программного обеспечения многопроцессорных систем и вычислительных сетей» Института математического моделирования Российской академии наукmail: [email protected] http://lira.imamod.ru

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