11-05-2024
Автоматическое распараллеливание — оптимизация программы компилятором, состоящая в автоматическом ее преобразовании в форму, работающую на параллельном компьютере, например, на SMP или NUMA машине. Целью автоматизации распараллеливания является освобождение программиста от трудоемкого и подверженному ошибкам процесса ручного распараллеливания. Несмотря на то, что качество автоматического распараллеливания улучшалось последние годы, полное распараллеливание последовательных программ остается слишком сложной задачей, требующей сложнейших видов анализа программ.
Автоматический параллелизатор обычно фокусируется на таких управляющих конструкциях, как циклы, поскольку, в общем случае, большая часть выполнения программы проходит внутри каких-то циклов. Распараллеливающий компилятор пытается разделить цикл на части так, чтобы его отдельные итерации могли исполняться на разных процессорах одновременно.
Содержание |
Компиляторы проводят анализ перед проведением распараллеливания, чтобы ответить на следующие вопросы:
Автоматическое распараллеливание сложно для компиляторов по причинам:
Из-за сложности полного автоматического распараллеливания существует несколько подходов для его упрощения:
Многие ранние распараллеливающие компиляторы работали с программами, написанными на фортране, из-за его более строгих ограничений на пересечение указателей (aliasing) по сравнению с Си. Кроме того на фортране написано большое количество программ вычислительной математики, требующие больших ресурсов для своей работы. Примеры компиляторов:
Автоматическое распараллеливание openmp, автоматическое распараллеливание кода c++.
Bombus czerskii, Файл:Delta A330.jpg, Категория:Уголовное право США.