ЗИМНЯЯ СТУДЕНЧЕСКАЯ ШКОЛА ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ Реализация метода частиц в ячейках FPIC (PIC – Particle In Cell) Исполнитель: Хасина Женя, ФИТ, НГУ, 2 курс Руководитель: Перепёлкин Владислав Александрович Дата доклада: 3 февраля 2012 года
План доклада Изначальная программа Условия распараллеливания Программа, распараллеленная с помощью OpenMP Она же распараллеленная с помощью MPI
Постановка задачи Был описан метод PIC мы его знаем Была дана последовательная программа, реализующая PIC метод. Задача была – распараллелить данную программу
Идея решения: краткое описание хода работы Сведение программы к двухмерному виду из трёхмерного Распараллеливание с помощью OpenMP Выполнение лабораторных работ с целью освоения MPI Реализация с помощью MPI Тестирование
Реализация с OpenMP Профилирование выявило самые трудоёмкие процедуры: move_particle и density В выбранных функциях использовались команды препроцессора для Си #pragma omp parallel for для циклов, а также #pragma omp single, где параллелизм был не нужен. Для for в качестве clause был выбран schedule(static, N/6), где N – количество итераций циклов, поскольку на удалённом компьютере Vita, где реализовывался и исполнялся, тестировался данный вариант 6 ядер.
Результаты OpenMP Итого разница между конечным вариантом и начальным - в 4,2 раза млн. частиц и размер сетки 64x64 Без распараллеливания 101 После распараллеливания функции move_particle 59 При полном распараллеливании (2-ух функций) 24
Реализация с помощью MPI Идея: каждый процесс получит только часть из общего количества частиц, но полную сетку. Для каждого процесса считается плотность частиц в сетке Все они суммируются в корневом нулевом процессе с помощью MPI_Reduce Затем производятся действия только в корневом процессе по вычислению потенциалов в сетке. С помощью MPI_Bcast рассылаем результат (сетку потенциалов) во все процессы, считаем силы, скорости, смещаем частицы и т.д Был вариант Редуцирования уже сеток потенциалов. 2. Был вариант с тем чтобы делать Bcast уже для 2-ух сеток с силами: Fx, Fy, вычисленных по потенциалам.
Результаты реализации с MPI Выполнялось на кластере Суперцентра ВЦ и на Vita Каждый узел по 8 ядер 1 узел2 узла4 узла8 узлов16 узловкол-во частицразмер сетки 4540,739,541,845, x64 100%90,4%87,7%92,8%101,3% 170,7148,5140, , x32 100%86,9%82,2%93,1%94,2% 292,3256,2248,5262,5263, x32 100%87,6%85%89,8%90,2% 291,8255,6272, x16 100%87,5%93,2%96,6%81,5% На 6-ядерной Vita 8 процессов -> 36,1
T посл T 1 узел время Кол-во узлов 12
Заключение Познакомилась с OpenMP, MPI Впервые распараллелила программу Впервые поработала на 6-ядерном компьютере, а также на кластере Удалось достичь некоторых результатов в смысле ускорения работы программы
СПАСИБО ЗА ВНИМАНИЕ!