29.12.2020

Автоматическое распараллеливание


Автоматическое распараллеливание — оптимизация программы компилятором, состоящая в автоматическом её преобразовании в форму, работающую на параллельном компьютере, например, на SMP или NUMA машине. Целью автоматизации распараллеливания является освобождение программиста от трудоемкого и подверженного ошибкам процесса ручного распараллеливания. Несмотря на то, что качество автоматического распараллеливания улучшалось последние годы, полное распараллеливание последовательных программ остается слишком сложной задачей, требующей сложнейших видов анализа программ.

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

Анализ программ

Компиляторы проводят анализ перед проведением распараллеливания, чтобы ответить на следующие вопросы:

  • Безопасно ли распараллеливать данный цикл? Требуется аккуратный анализ зависимостей и анализ независимости указателей или алиасов (en:alias analysis). Итерации цикла не должны иметь зависимостей по данным.
  • Стоит ли распараллеливать цикл? Ответ на этот вопрос требует надежной оценки (моделирования) работы программы и учёта свойств параллельной системы.

Сложности

Автоматическое распараллеливание сложно для компиляторов по причинам:

  • Анализ зависимостей сложен для кода, использующего косвенную адресацию, указатели, рекурсию, вызовы функций, особенно вызовы по косвенности (например, виртуальные функции заранее неизвестного класса).
  • Циклы могут иметь неизвестное заранее либо сложно варьирующееся количество итераций. Из-за этого усложняется выбор циклов, требующих распараллеливания.
  • Доступ к глобальным ресурсам тяжело координировать в терминах выделения памяти, ввода-вывода, разделяемых переменных.

Из-за сложности полного автоматического распараллеливания существует несколько подходов для его упрощения:

  • Дать программистам возможность добавлять к программе подсказки компилятору, чтобы влиять на процесс распараллеливания (либо чтобы упростить анализы, пометив указатели как непересекающиеся (restrict), либо указав «горячие» циклы). Среди решений, требующих достаточно подробные инструкции для компилятора, можно указать High Performance Fortran для систем с распределенной памятью и OpenMP для систем с общей памятью.
  • Создать интерактивную систему компиляции, в работе которой принимал бы участие человек. Такие системы созданы в рамках подпроекта «SUIF Explorer» (проект SUIF — The Stanford University Intermediate Format compiler, http://suif.stanford.edu/), в компиляторах Polaris и ParaWise (среда CAPTools).
  • Добавить в аппаратуру спекулятивную многопоточность (speculative multithreading).

Ранние распараллеливающие компиляторы

Многие ранние распараллеливающие компиляторы работали с программами, написанными на Фортране, из-за его более строгих ограничений на пересечение указателей (aliasing) по сравнению с Си. Кроме того, на Фортране написано большое количество программ вычислительной математики, требующих больших ресурсов для своей работы. Примеры компиляторов:

  • Rice Fortran D compiler
  • Vienna Fortran compiler
  • Paradigm compiler
  • Polaris compiler
  • SUIF compiler

Современные компиляторы с поддержкой распараллеливания

  • Sun studio
  • Intel C++ Compiler
  • gcc
  • GHC

Похожие новости:

Intel C++ compiler

Intel C++ compiler
Intel C++ Compiler — оптимизирующий компилятор, разрабатываемый фирмой Intel для процессоров семейств x86, x86-64 и IA-64. Главным достоинством компилятора являются выполняемые им высокоуровневые, а

Handy Backup Server

Handy Backup Server
Handy Backup Server Network - программа, разработанная компанией «Новософт» для централизованного резервного копирования (бэкапа), восстановления и синхронизации данных на сервере и рабочих станциях

Дом молодёжи (Белград)

Дом молодёжи (Белград)
Белградский дом молодёжи — молодёжный культурный центр в Белграде. Описание В центре проходит большое количество программ современного искусства и культуры, а также учебно-образовательные программы:

Softpedia

Softpedia
Softpedia.com — румынский веб-сайт, который содержит большое количество каталогов и архивов программного обеспечения, с масштабным еженедельным обновлением своих баз данных. Программы доступны для
Комментариев пока еще нет. Вы можете стать первым!

Добавить комментарий!

Ваше Имя:
Ваш E-Mail:
Введите два слова, показанных на изображении: *
Популярные новости
Пластиковые жалюзи - универсальный и доступный вариант солнцезащитной системы
Пластиковые жалюзи - универсальный и доступный вариант солнцезащитной системы
Самым популярным видом жалюзи считается пластиковый вариант. Этот материал неприхотлив в уходе,...
5 главных преимуществ композитного настила
5 главных преимуществ композитного настила
Композитный настил считается одним из самых популярных типов покрытия для садовых дорожек, летних...
Ассортимент продукции производственной компании «Ревентер»
Ассортимент продукции производственной компании «Ревентер»
Производственная компания «Ревентер» имеет в наличии большой ассортимент продукции, среди которой...
Все новости