Автоматизация параллельного программирования

Изучите руководство пользователя

Что такое DVMH-модель, DVMH-язык и DVMH-программа? Как начать использовать DVM-систему?

Документация

Посмотрите примеры программ
Как просто и эффективно распараллелить методы решения системы линейных уравнений?

Примеры программ

Научный спецсеминар кафедры системного программирования факультета ВМиК МГУ им М.В. Ломоносова, направление «Компиляторные технологии».

Руководители

  • профессор, доктор физ.-мат. наук В. А. Крюков
  • кандидат физ.-мат. наук В. А. Бахтин
  • Н.А. Катаев
  • кандидат физ.-мат. наук А. С. Колганов

О семинаре

Разработка программ для высокопроизводительных кластеров и других параллельных систем с распределенной памятью продолжает оставаться исключительно сложным делом, доступным узкому кругу специалистов и крайне трудоемким даже для них. Основная причина — это низкий уровень современной технологии автоматизации разработки параллельных программ. В настоящее время практически все параллельные программы для многоядерных кластеров (SMP-кластеров) разрабатываются с использованием низкоуровневых средств передачи сообщений (MPI, SHMEM). Такие программы трудно разрабатывать, сопровождать и повторно использовать при создании новых программ. Появление кластеров с гетерогенными узлами, использующих в качестве ускорителей графические процессоры (ГПУ), еще более усложнило разработку программ, поскольку потребовало использовать, помимо низкоуровневых технологий MPI и SHMEM, еще и низкоуровневую технологию CUDA или OpenCL. На подходе новые процессоры с большим количеством ядер (например, 48-ядерный Intel SCC процессор, который недавно стал доступен для широкого круга исследователей), для эффективного использования которых потребуются новые модели программирования.

Вполне естественно, что прикладной программист хотел бы получить либо инструмент, автоматически преобразующий его последовательную программу в параллельную программу, либо высокоуровневый язык параллельного программирования, обеспечивающий эффективное использование современных параллельных систем.

Проведенные в 90-х годах активные исследования убедительно показали, что для систем с распределенной памятью полностью автоматическое распараллеливание реальных производственных программ возможно только в очень редких случаях.

Поэтому исследователи сосредоточились на двух направлениях:

  • разработка высокоуровневых языков параллельного программирования (HPF, OpenMP-языки, DVM-языки, CoArray Fortran, UPC, Titanium, Chapel, X10, Fortress);
  • создание систем автоматизированного распараллеливания (CAPTools/Parawise, FORGE Magic/DM, BERT77, SAPFOR), в которых программист активно вовлечен в процесс распараллеливания.

Работа семинара тесно связана с этими исследованиями.

Направления работ

На 3 курсе студенты бакалавриата получают необходимую теоретическую подготовку, изучая проблемы параллельного программирования и соответствующие подходы к их решению, а также приобретают опыт разработки параллельных программ для распределенных систем (MPI, OpenMP, CUDA).

Студенты 4-6 курсов (бакалавриата и магистратуры) и аспиранты участвуют в исследованиях, направленных на разработку инструментов параллельного программирования, таких как компиляторы, отладчики, анализаторы и предсказатели производительности параллельных программ, средств автоматизации распараллеливания последовательных программ.

Базой для многих исследовательских проектов являются системы DVM и SAPFOR, разрабатываемые в Институте прикладной математики им М.В. Келдыша РАН при активном участии студентов и аспирантов спецсеминара.

Разрабатываемые проекты

DVM-система предназначена для разработки параллельных программ научно-технических расчетов на языках C-DVMH и Fortran-DVMH. Эти языки используют единую модель параллельного программирования (DVMH-модель) и являются расширением стандартных языков Си и Фортран спецификациями параллелизма, оформленными в виде директив компилятору. Поскольку директивы невидимы для стандартных компиляторов, программист может иметь одну программу и для последовательного, и для параллельного выполнения на ЭВМ разной архитектуры.
DVMH-модель позволяет создавать эффективные параллельные программы (DVMH-программы) для гетерогенных вычислительных кластеров, в узлах которых в качестве вычислительных устройств наряду с универсальными многоядерными процессорами могут использоваться ускорители (графические процессоры или сопроцессоры Intel Xeon Phi). При этом отображенные на узел вычисления могут автоматически распределяться между вычислительными устройствами узла с учетом их производительности.
Компиляторы языков C-DVMH и Fortran-DVMH преобразуют входную программу в параллельную программу, использующую стандартные технологии программирования MPI, OpenMP и CUDA.
В состав DVM-системы входят средства функциональной отладки и отладки эффективности DVMH-программ.
SAPFOR (System FOR Automated Parallelization) — это набор различных инструментов, объединенных в единую систему автоматизированного распараллеливания программ и направленных на упрощение разработки новых параллельных программ, распараллеливание уже существующих последовательных программах, а также повышение ресурса параллелизма в уже параллельных программах за счет поддержки новых вычислительных устройств. История системы SAPFOR начинается в 2009 году, когда появилась первая версия системы. В данный момент активно развиваются две версии системы SAPFOR 2.x (Fortran) и SAPFOR 3.x. Направления работы в обоих проектах во многом похожи и опираются на теорию компиляторных технологий, при этом используют разные инструменты для реализации схожих идей. В SAPFOR 2.x преобладает использование инструментов, разработанных в ИПМ им. М.В. Келдыша РАН, и библиотеки Sage++, в то время как SAPFOR 3.x опирается на инфраструктуру компиляторов LLVM.

Приобретаемые навыки

Студенты и аспиранты приобретают профессиональные навыки, принимая участие в разработке крупных проектов, а также учатся использовать инструменты и технологии, широко применяемые при разработке программного обеспечения:

  • языки программирования C/C++, Fortran, Java, JavaScript, TypeScript, Perl;
  • технологии параллельного программирования DVMH, MPI, OpenMP, CUDA;
  • инфраструктуру компиляторов LLVM;
  • системы контроля версий Git, Subversion;
  • инструменты управления сборкой проектов Make, CMake;
  • cреды разработки Microsoft Visual Studio, Microsoft Visual Studio Code;
  • операционные системы Microsfot Windows, Ubuntu и др.
Вычислительные ресурсы

Разрабатываемые студентами и аспирантами инструменты тестируются и используются на таких суперкомпьютерах, как K60 (ИПМ им. М.В. Келдыша РАН), K-100 (ИПМ им. М.В. Келдыша РАН), и других ЭВМ.

Обучающие материалы

Видеозаписи лекций, описывающих устройство разрабатываемых проектов, можно найти на официальном канале проекта DVM System на YouTube.