OpenMP
OpenMP
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
Редукция в директиве parallel for
Параллельные секции и директива parallel sections
Синхронизация и директива critical