目的
omp_in_parallel 関数は、並列で実行している領域の 動的エクステントから呼び出されると .TRUE. を戻し、 それ以外の場合は .FALSE. を戻します。 omp_in_parallel 呼び出し元の領域が逐次化されていて、 並列実行している領域の動的エクステント内でネストされている場合は、 この関数は .TRUE. を戻します。 (ネストされた並列領域は、デフォルトでは逐次化されます。 詳細については、omp_set_nested(enable_expr)、 および 「XL Fortran ユーザーズ・ガイド」の『OMP_NESTED 環境変数』を 参照してください。)
クラス
関数
引き数の型と属性
なし
結果の値と属性
デフォルトの論理値
結果の値
並行して実行されている領域の動的エクステントから呼び出された場合は .TRUE.、それが以外の場合は .FALSE.。
例
USE omp_lib INTEGER N, M N = 4 M = 3 PRINT*, omp_in_parallel() !$OMP PARALLEL DO DO I = 1,N !$OMP PARALLEL DO DO J=1, M PRINT *, omp_in_parallel() END DO !$OMP END PARALLEL DO END DO !$OMP END PARALLEL DO
最初の omp_in_parallel の呼び出しでは、
.FALSE. が戻されます。これは、
いずれかの領域の動的エクステントの外からこれが呼び出されるためです。
2 番目の呼び出しでは、
ネストされた PARALLEL DO ループが逐次化されていても、
.TRUE. が戻されます。これは、
外側の PARALLEL DO ループの動的エクステント内に
この呼び出しがあるためです。