OpenMP (технология программирования) (OpenMP)
OpenMP (Open Multi-Processing) - технология параллельного программирования для вычислительных систем с общей памятью, основанная на расширении последовательного кода директивами, библиотечными вызовами и переменными окружения.
Что означает термин
OpenMP - это спецификация прикладного программного интерфейса (API) для разработки параллельных приложений, которая опирается на модель общей памяти. Её ядро образуют директивы компилятора, библиотечные процедуры и переменные окружения, встраиваемые в обычную последовательную программу на языках C, C++ или Fortran. Сама аббревиатура OpenMP расшифровывается как Open Multi-Processing и отражает открытый характер спецификации, поддерживаемой консорциумом OpenMP ARB.
Как устроено
В основе технологии лежит принцип последовательно-параллельного программирования: разработчик пишет обычную программу, а затем расставляет в её тексте специальные директивы, которые компилятор с поддержкой OpenMP преобразует в параллельный код. Директивы задают параллельные области, распределение итераций циклов между потоками, разделы кода и операции синхронизации. Помимо директив, OpenMP включает набор библиотечных функций для управления потоками, блокировками и состоянием исполнения, а также переменные окружения, через которые настраиваются, например, число используемых потоков. Спецификация развивается поэтапно: версия OpenMP 5.0 была принята в ноябре 2018 года, а в дальнейшем консорциумом выпускались черновики последующих версий, в том числе Technical Report 15 как финальный публичный черновик спецификации 6.1. Кроме того, в феврале 2026 года к OpenMP ARB присоединилась компания Anaconda, и был сформирован подкомитет по добавлению Python в качестве четвёртого поддерживаемого языка.
Где применяется
OpenMP применяется для распараллеливания вычислительно ёмких программ на многоядерных процессорах и симметричных мультипроцессорных системах. Типичный пример - добавление директивы параллельного цикла к последовательному коду на C/C++ или Fortran, что позволяет распределить итерации между несколькими потоками без переписывания алгоритма. Также технологию используют для численного моделирования, научных и инженерных расчётов, обработки данных и других задач, где важно задействовать все ядра процессора. Через переменные окружения, такие как OMP_NUM_THREADS, можно управлять числом потоков и распределением нагрузки, не меняя исходный код.
История возникновения
Технология OpenMP появилась как совместная инициатива ряда производителей аппаратного и программного обеспечения, объединившихся в консорциум OpenMP ARB с целью создать единый открытый стандарт параллельного программирования для систем с общей памятью. С тех пор спецификация регулярно обновляется, постепенно расширяя поддерживаемые конструкции и охватывая новые категории оборудования. В частности, версия OpenMP 5.0 была принята в ноябре 2018 года, а позднее консорциум опубликовал Technical Report 15 - финальный публичный черновик версии 6.1.
Отличие от близких понятий
OpenMP нередко сравнивают с технологией MPI (Message Passing Interface). Их ключевое различие - модель параллелизма: OpenMP ориентирована на системы с общей памятью, где потоки обращаются к общему адресному пространству, тогда как MPI предназначена для распределённых систем, где процессы обмениваются сообщениями. На практике OpenMP и MPI часто рассматривают как взаимодополняющие средства, а не как взаимозаменяемые. Кроме того, поздние версии спецификации OpenMP выходят за рамки классической модели общей памяти и включают поддержку ускорителей и гетерогенных систем, однако в источниках границы применимости стандарта описываются по-разному.
База знаний организована при поддержке делового сообщества. Спираль?!

