Реализация распараллеливания программного комплекса расчета двумерных задач газовой динамики с помощью системы OST Научный руководитель: Илюшин А. И. Колмаков Алексей
Задачи работы: 1.Привести программный комплекс M2DGD к формату системы OST: создать объекты (C++ или Java), включающие функции M2DGD и головную программу, реализующую их счет; решить проблемы связки Fortran и языка, используемого для написания объектов (C++ или Java). 2.Реализовать параллельный счет нескольких независимых объектов, представляющих собой, по сути, программы M2DGD. 3.Создать алгоритм синхронизации областей при разбиении области счета на зависимые подобласти. 4. Используя алгоритм связи дописать функции взаимодействия подобластей и адаптировать систему OST для данной задачи. 5. Протестировать работу системы, сравнить скорость работы с MPI.
Main { … Func1(a,b) …. Func2(c) … } Class M2GDG { … Public: main1() …. Private: Func1(a,b) … Func2(c) … } Main { …. Object_M2GDG->main1();.. } Программа M2GDG Менеджер объектов Объект M2GDG Переход к объектно-ориентированному подходу Счет осуществляется вызовом в программе- менеджере объектов публичных функций. Публичной функцией можно взять весь main программы M2GDG
Менеджер объектов Object _M2GDG_1Object _M2GDG_2Object _M2GDG_3Object _M2GDG_4 Процессор_1 (ядро) Процессор_2 (ядро) Процессор_3 (ядро) Процессор_4 (ядро) Инициализация Загрузка на процессор (ядро) Счет Вывод данных Параллельный счет может быть осуществлен либо на МВС, либо на многоядерном компьютере. При использовании многоядерного компьютера требуется просто, запустить счет объектов в отдельных процессах, ОС сама раскидает их по ядрам
Domain1 Domain2 Domain3 Domain4 Обтекание цилиндра с делением области на 4 подобласти Алгоритм счета предусматривает произвольную нумерацию ячеек от 1 до N, расчет их по порядку 1->N и затем обратный обход в том же порядке N->1. В связи с тем, что обратный обход должен быть осуществлен в том же порядке, необходим алгоритм синхронизации при делении на несколько подобластей Возможное решение: 1. Обсчет вначале правых границ 2. Затем обсчет левых границ 3. Обсчет внутренних областей 4-6. Все в обратном порядке
Domain1 Domain2 При расчете границы Domain1, в ее объект передается полностью граница Domain2. После окончания расчета измененная граница передается обратно в Domain2. Копирование границы Domain2 в объект Domain1