Общие сведения

Интерфейс OpenMP задуман как стандарт для программирования на масштабируемых SMP-системах (SSMP,ccNUMA, etc.) в модели общей памяти (shared memory model). В стандарт OpenMP входят спецификации набора директив компилятора, процедур и переменных среды.

Примеры

  • Информация для пользователей Суперкомпьютерного комплекса МГУ
  • Простой пример: вычисление числа "Пи". В последовательную программу вставлены две строчки, и она распараллелена!
    
    program compute_pi
       parameter (n = 1000)
       integer i
       double precision w,x,sum,pi,f,a
       f(a) = 4.d0/(1.d0+a*a)
       w = 1.0d0/n
       sum = 0.0d0;
    !$OMP PARALLEL DO PRIVATE(x), SHARED(w)
    !$OMP& REDUCTION(+:sum)
    
       do i=1,n
           x = w*(i-0.5d0)
           sum = sum + f(x)
       enddo
    
       pi = w*sum
       print *,'pi = ',pi
       stop
       end
    
  • Для компиляции программ, использующих технологию OpenMP, необходимо указать опцию соответствующего компилятора:

    • gcc/gfortran: -fopenmp
    • icc/ifort: -openmp
    • pgcc/pgCC/pgf77/pgf90: -mp