Вперед: 3.2.5. Разделение работы, выполнение кода одной нитью
Назад: 3.2.3. Разделение работы, параллельные секции
К содержанию: Оглавление


3.2.4. Разделение работы, директива WORKSHARE

Директива WORKSHARE выделяет набор независимых операторов, каждый из которых будет выполняться своей нитью. Директива применима только в языке Фортран. В набор могут входить: присваивания массивов и скалярных переменных, операторы и конструкции FORALL, WHERE, директивы ATOMIC, CRITICAL, PARALLEL.

Fortran:

!$OMP WORKSHARE
block1
[!$OMP SECTION
структурированный блок ]
!$OMP END WORKSHARE [ nowait ]

Пример программы:

Программа workshare.f

PROGRAM workshare
   INTEGER N, I, J
   PARAMETER (N=100)
   REAL AA(N,N), BB(N,N), CC(N,N), DD(N,N), FIRST, LAST
C   Some initializations
   DO I = 1, N
    DO J = 1, N
     AA(J,I) = I * 1.0
     BB(J,I) = J + 1.0
    ENDDO
   ENDDO
!$OMP PARALLEL SHARED(AA,BB,CC,DD,FIRST,LAST)
!$OMP WORKSHARE
   CC = AA * BB
   DD = AA + BB
   FIRST = CC(1,1) + DD(1,1)
   LAST = CC(N,N) + DD(N,N)
!$OMP END WORKSHARE NOWAIT
!$OMP END PARALLEL
    END


Вперед: 3.2.5. Разделение работы, выполнение кода одной нитью
Назад: 3.2.3. Разделение работы, параллельные секции
К содержанию: Оглавление