OpenMP: обзор
OpenMP – открытый стандарт для распараллеливания программ на многопроцессорных системах с общей памятью (например, на многоядерных процессорах). OpenMP реализует параллельные вычисления с помощью многопоточности: главный поток создает набор подчиненных потоков, и задача распределяется между ними.
OpenMP представляет собой набор директив компилятора, которые управляют процессом автоматического выделения потоков и данными, требуемыми для работы этих потоков.
В системе PascalABC.NET реализованы следующие элементы OpenMP:
- Конструкции для создания и распределения работы между потоками (директивы
parallel for
иparallel sections
) - Конструкции для синхронизации потоков (директива
critical
)
Директивы имеют следующий вид:
{$omp directive-name [опция[[,] опция]...]}
Здесь $omp
означает то, что это директива
OpenMP, directive-name
– имя директивы, например parallel
,
после чего могут быть опции. Директива относится к тому оператору, перед
которым она находится.
Примеры использования OpenMP находятся в папке Samples/OMPSamples
Ниже приводится описание директив.
Редукция в директиве parallel for