OpenMP 並列コンパイラ指示文:繰り返しが逐次的に実行されるような順序で,コードのブロックを実行するように指定します。
形式
c$OMP ORDERED
c
次のいずれか:C (または c),!,* (「並列指示文の構文規則」を参照)
block
文または構文の構造化ブロック (セクション)。このブロックに対して,またはこのブロックから飛び越すことはできません。
規則と振る舞い
ORDERED 指示文は,DO または PARALLEL DO 指示文の動的寸法中にしか置くことができません。順序付きセクションがバインドされる DO 指示文では,ORDERED 節が指定されている必要があります。
DO 指示文を使ったループの繰り返しは,同じ ORDERED 指示文を複数実行してはならず,複数の ORDERED 指示文を実行してもなりません。
順序付きセクションには,一度に 1 つのスレッドしか入ることが許されません。スレッドはループ繰り返しの順序でセクションに入ることを許されます。スレッドは,それ以前のすべての繰り返しが完了しているか,順序付きセクションを決して実行することがないという保証がない限り,順序付きセクションに入ることはできません。これにより,セクション外のコードは並列実行しながら,順序付きセクション中のコードは順番に逐次的に実行することができます。
異なる DO 指示文にバインドされている順序付きセクションは互いに独立しています。
関連情報
Compaq Fortran 並列コンパイラ指示文,OpenMP Fortran API コンパイラ指示文,Tru64 UNIX システム用の並列指示文
例
順序付きセクションは,並列に実行される作業からの出力を逐次的に並べるのに便利です。再入可能な I/O ライブラリーが存在していれば,次のプログラムは指標を逐次的な順序で印字します。
c$OMP DO ORDERED SCHEDULE(DYNAMIC) DO I=LB,UB,ST CALL WORK(I) END DO ... SUBROUTINE WORK(K) c$OMP ORDERED WRITE(*,*) K c$OMP END ORDERED