並列/ワークシェアリング複合構造は、単一のワークシェアリング構造が含まれる並列領域を指定するための短縮形を提供します。並列/ワークシェアリング複合構造は次のとおりです:
PARALLEL DO
PARALLEL SECTIONS
PARALLEL DO ディレクティブを使用して、暗黙的に単一の DO ディレクティブを含む並列領域を指定します。
PARALLEL ディレクティブと DO ディレクティブに 1 つ以上の節を指定できます。
次の例では、単純なループを並列化する方法を示します。ループの繰返し変数は、デフォルトではプライベートであるため、明示的に宣言する必要はありません。END PARALLEL DO ディレクティブはオプションです。
!$OMP PARALLEL DO
DO I=1,N
B(I) = (A(I) + A(I-1)) / 2.0
END DO
!$OMP END PARALLEL DO
PARALLEL SECTIONS ディレクティブを使用して、暗黙的に単一の SECTIONS ディレクティブを含む並列領域を指定します。
PARALLEL ディレクティブと SELECTION ディレクティブに 1 つ以上の節を指定できます。
最後のセクションは、END PARALLEL SECTIONS ディレクティブで終わります。
以下の例では、サブルーチン X_AXIS、Y_AXIS、および Z_AXIS が同時に実行できます。最初の SECTION ディレクティブはオプションです。すべての SECTION ディレクティブは、PARALLEL SECTIONS/END PARALLEL SECTIONS 構造の記述範囲内になければなりません:
!$OMP PARALLEL SECTIONS
!$OMP SECTION
CALL X_AXIS
!$OMP SECTION
CALL Y_AXIS
!$OMP SECTION
CALL Z_AXIS
!$OMP END PARALLEL SECTIONS