Вы здесь
Ученые факультета ВМК МГУ упростили распараллеливание научных программ
Исследователи факультета ВМК МГУ изучили методы автоматизированного распараллеливания программ на языке Фортран и предложили подход, упрощающий работу с крупными научными кодами. Работа посвящена развитию инструментов, которые помогают преобразовывать последовательный код в параллельный и снижать трудозатраты при подготовке программ для вычислений на кластерах.
Создание параллельного кода остаётся сложной задачей, требующей значительных усилий и высокой квалификации разработчиков. Для упрощения этой задачи ранее были разработаны специализированные инструменты — система выполнения параллельных программ (DVM) и инструмент автоматизированного распараллеливания программ (SAPFOR). Они позволяют анализировать исходный код и адаптировать его для выполнения на многопроцессорных вычислительных системах.
Одной из ключевых задач при использовании таких систем является построение распределения данных между узлами вычислительного кластера. Эта задача усложняется большими размерами научных программ. Для её решения применяется подход инкрементального распараллеливания, при котором анализ проводится не для всей программы сразу, а для отдельных участков кода.
В системе SAPFOR такой механизм реализован с помощью областей распараллеливания — специальных фрагментов программы, которые анализируются независимо друг от друга. В результате код может содержать несколько параллельных участков и дополнительные копии массивов, позволяющие выбирать оптимальное распределение данных для каждой области.
В ходе исследования в систему SAPFOR было добавлено преобразование, позволяющее автоматически объединять области распараллеливания. Новая область формируется из фрагментов исходных. При этом происходит объединение копий массивов, а система проверяет совпадение их размеров и параметров распределения.
Разработанное преобразование было протестировано на задаче из набора тестовых программ для параллельных вычислений (NAS Parallel Benchmarks). Для основных процедур выделили области распараллеливания, подобрали оптимальные варианты распределения данных и объединили их.
После устранения дублирующих копий массивов объём данных сократился примерно на две трети. При этом вместо ручного исправления порядка 500 обращений к массивам потребовалось указать лишь 11 специальных директив SAPFOR.
«Инкрементальное распараллеливание позволяет постепенно анализировать большие программы и преобразовывать их по частям. Разработанное преобразование помогает объединять области распараллеливания и сокращать количество операций копирования данных, что упрощает подготовку программ для выполнения на параллельных вычислительных системах», — отметил доцент кафедры системного программирования факультета ВМК МГУ Владимир Бахтин.
Работа была представлена на научной конференции «Ломоносовские чтения».



