並列/ワークシェアリング複合構造は、単一のワークシェアリング構造が含まれる並列領域を指定するための短縮形を提供します。並列/ワークシェアリング複合構造は次のとおりです。
これらの宣言子についての詳細は、「OpenMP* Fortran Compiler Directives」(英語) を参照してください。
PARALLEL DO 宣言子を使用して、暗黙的に単一の DO 宣言子を含む並列領域を指定します。PARALLEL DO 宣言子に 1 つ以上の節を指定できます。
次の例では、単純なループを並列化する方法を示します。ループ変数は、デフォルトではプライベートであるため、明示的に宣言する必要はありません。END PARALLEL DO 宣言子はオプションです。
例 |
---|
subroutine par(a, b, N) integer :: i, N, a(N), b(N) !$OMP PARALLEL DO do i= 1, N b(i) = (a(i) + a(i-1)) / 2.0 end do !$OMP END PARALLEL DO end subroutine par |
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 |