OpenMP
OpenMP: стандартизованная модель параллельного программирования по парадигме общей памяти и соответствующее дополнение к среде исполнения. Имеет интерфейсы к Си/Си++ и Фортрану. Считается хорошо переносимой между платформами и масштабируемой.
Модель разработана в 1997 году промышленным консорциумом во главе с Silicon Graphics; имеет существенную преемственность со стандартами (спецификациями) PCF Fortran и HPF (High-performance Fortran). Подобно HPF, для задания параллелизма используются особые приказы (директивы) компилятора (т.наз. директивная параллельность), начинающиеся с пары знаков !$
; соответственно, при сборке программы в непараллельной среде компилятор может истолковать эти инструкции параллельности как комментарии, т.е., проигнорировать их.
Модель OpenMP предоставляет хорошие возможности по программированию машин, имеющих унифицированный (единообразный) доступ к общей памяти. Однако модель не содержит способа определить (задать) местность (локальность) данных в машинах с неединообразной общей или распределённой памятью. На кластерах, состоящих из многопроцессорных рабочих станций, среду OpenMP часто используют в сочетании со средой MPI — OpenMP собственно на узлах, а MPI — для передачи сообщений между узлами.
Пример задания параллельно исполняемого цикла в OpenMP-варианте языка Фортран:
!$OMP PARALLEL DO
DO I = 2, N
APRIME(I) = (A(I+1) +2*A(I) + A(I-1))*0.25
ENDDO
— Ю.Т.
Источники
- Введение в параллельное программирование...