Адаптация комплекса программ 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: дискретная модель, в конечном счете, неявная и сводится к решению большой разреженной СЛАУ Aq 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 Dq 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 J omega: setXYZT(1) time = 1 setXYZT(2) slope,predicval: setXYZT(2) time = 2 ? flag == 1 setXYZT(3) forward: time = 4 black setXYZT(4) white ? flag == 1 white ? flag == 1 setXYZT(5) backward: setXYZT(5) time = 5 black white ? flag == 1 updateiter,updatetime: time = 5 setXYZT() эквивалентный однопоточный обход для 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 Результаты счета, оценка эффективности Результаты счета, оценка эффективности Результаты счета, оценка эффективности 450x135 ячеек, 16 ядер, 5000 шагов Что сделано: • разработан алгоритм параллельного счета, учитывающий «последовательную» природу исходного алгоритма; • определена постановка прикладной задачи в терминах системы OST; • написана реализация этого алгоритма в системе OST на языках C/Python; • на МВС(RSC4) посчитана задача о коническом теле, мгновенно помещенном в однородный сверхзвуковой поток газа(М=1.6), на ее примере исследована эффективность алгоритма, выполняющегося в среде OST и C++/MPI; M2DGD M2DGD – последовательный комплекс программ для решения 2D нестационарных задач газовой динамики в областях сложной формы. Его основные характеристики: - применим как к структурированным, так и неструктурированным сеткам, - второй порядок точности по времени и пространству, - высокая надежность: абсолютно устойчив по отношению к выбору шага по времени. В основе M2DGD: - дискретизация по пространству методом конечного объема (finite volume method), - кусочно-линейное восполнение сеточных функций в счетных ячейках (для достижения второго порядка), - метод С. К. Годунова вычисления потоков на гранях ячеек, - явно-неяная абсолютно устойчивая схема интегрирования по времени