Адаптация комплекса программ M2DGD для работы на МВС с использованием среды параллельного

advertisement
Адаптация комплекса
программ M2DGD для работы
на МВС с использованием
среды параллельного
программирования OST
Павлухин Павел
Научный руководитель: Меньшов И. С.
Цели работы:
• построить параллельный алгоритм для программного
комплекса M2DGD, эквивалентный работе
последовательного, с целью эффективного
использования всех доступных процессоров в МВС;
• разработать вычислительный объект в соответствии
с топологией расчетных блоков для вычислительного
модуля M2DGD;
• реализовать параллельную работу построенных
вычислительных объектов в OST;
• установить программный продукт на МВС;
• провести тестовые верификационные расчеты;
• провести расчеты конкретных прикладных задач с
оценкой эффективности предложенного подхода;
MPI
vs.
• синхронизация вычислений
полностью ложится на плечи
прикл программиста;
• все межпроцессные связи
полностью организует прикл
программист;
• модель процессов;
удаленное обращение к
соседям – через рассылку
сообщений:
MPI_Isend(data,Numb,MPI_DOUB
LE, IND,0,MPI_COMM_WORLD,
&sendreq)
OST
• предоставляет
автоматический механизм
синхронизации вычислений:
self.point.time+=1
self.setXYZT()
• автоматическое назначение
ссылок на соседей по
заданной топологии;
• объектная модель;
удаленное обращение к
соседям – как локальный
вызов:
self.neigbour.somefun(x)
M2DGD: LU-SGS
Сложность распараллеливания M2DGD: дискретная модель, в
конечном счете, неявная и сводится к решению большой
разреженной СЛАУ
Aq  R
которая решается методом LU-SGS (Lower-Upper Symmetric
Gauss-Seidel) - приближенной факторизацией матрицы
A  L  D  U  ( L  D)  D 1  (U  D)
и решению двух систем с нижней и верхней треуг. матрицей,
которые решаются в 2 прохода:
forward:
backward:
( L  D)q  R
(U  D)q  Dq
M2DGD
Последовательный расчетный цикл:
do is=1,NSTEP
do it=1,MAXITER
call omega(dt)
call slope(1)
call predicval(2)
call forward(dt,dtpseudo)
call backward(dt,dtpseudo)
call updateiter
end do
call updatetime
lstep=lstep+1
time=time+dt
end do
ПАРАЛЛЕЛИЗАЦИЯ
M2DGD
Декомпозиция расчетной области:
Распределение
по классам black & white – шахматный порядок
Невозможность стандартного обхода для LU-SGS
CPU 1
CPU 2
Обход: 1 … N
Если I > J,то блок 1
Если I < J,то блок 2
I
Object 1
Object 2
J
forward:
time = 4
black
setXYZT(4)
white
?
flag == 1
white
?
flag == 1
setXYZT(5)
backward:
setXYZT(5)
time = 5
black
white
?
flag == 1
эквивалентный однопоточный
обход 2х2 блоков для forward:
black
4
8
9
2
3
6
white
10
5
white
7
1
black
Постановка прикладной задачи
коническое тело, мгновенно помещенное в
сверхзвуковой поток:
Параллельный и последовательный счет
16 CPUs
450x135,
500 steps
1 CPU
16 CPUs
450x135,
5000 steps
1 CPU
Результаты счета, оценка эффективности
Результаты счета, оценка эффективности
Результаты счета, оценка эффективности
1800x540 vs 450x135:
1800x540x5000: RSC-4
64 ядра – 1 ч 40 мин; 1 ядро - ~ 3 сут
Выводы:
• разработан алгоритм параллельного счета,
учитывающий «последовательную» природу
исходного алгоритма;
• определена постановка прикладной задачи в
терминах системы OST;
• написана реализация этого алгоритма в
системе OST на языках C/Python;
• на МВС(RSC4) посчитана задача о
коническом теле, на ее примере исследована
эффективность алгоритма, выполняющегося
в среде OST и C++/MPI;
M2DGD
M2DGD – последовательный комплекс программ для решения 2D
нестационарных задач газовой динамики в областях сложной формы.
Его основные характеристики:
- применим как к структурированным, так и неструктурированным
сеткам,
- второй порядок точности по времени и пространству,
- высокая надежность: абсолютно устойчив по отношению к выбору шага
по времени.
В основе M2DGD:
- дискретизация по пространству методом конечного объема (finite
volume method),
- кусочно-линейное восполнение сеточных функций в счетных ячейках
(для достижения второго порядка),
- метод С. К. Годунова вычисления потоков на гранях ячеек,
- явно-неяная абсолютно устойчивая схема интегрирования по времени
Download