OpenMP* ORDERED 宣言子は、ORDERED 節のループでのみ許可されます。
ORDERED 宣言子は、並列で実行された処理結果をシーケンシャルに順序付けるのに使用されます。ORDERED 宣言子を実行する並列ループは、それ自身が ORDERED 節でマークされる必要があります。この診断は、この制限に違反している (またはその可能性がある) ことを示します。
順序付きループ以外に順序付きループが含まれていても不正ではありません。ORDERED としてマークされなければならない唯一のループは、本文が直接 ORDERED 宣言子を実行するループです。
ID |
問題箇所 |
説明 |
---|---|---|
1 |
OpenMP* の使用方法に関するエラー |
ORDERED 宣言子の場所 |
2 |
OpenMP* 宣言 |
必要な ORDERED 節が不足しているループの場所 |
// Example A.24.1c from OpenMP* 3.0 Specification // Copyright (C) 1997-2008 OpenMP Architecture Review Board #include <stdio> void work(int k) { #pragma ordered printf(" %d\n", k); } void a24(int lb; int ub; int stride) { int i; #pragma omp parallel for ordered schedule(dynamic) for (i = lb; i < ub; i += stride) { work(i); } } int main(int argc, char **argv) { a24(0, 100, 5); return 0; }次に FORTRAN の同様の例を示します。
! Example A.24.1f from OpenMP* 3.0 Specification ! Copyright (C) 1997-2008 OpenMP Architecture Review Board SUBROUTINE WORK(K) INTEGER K !$OMP ORDERED WRITE(*,*) k !$OMP END ORDERED SUBROUTINE SUBA24(LB, UB, STRIDE) INTEGER LB, UB, STRIDE INTEGER I !$OMP PARALLEL DO ORDERED SCHEDULE(DYNAMIC) DO I = LB, UB, STRIDE CALL WORK(I) END DO !$OMP END PARALLEL DO END SUBROUTINE SUBA24 PROGRAM A24 CALL SUBA24(0, 100, 5) END PROGRAM A24
© 1997-2008 OpenMP Architecture Review Board.
この資料は、OpenMP Architecture Review Board の著作権と本ドキュメントのタイトルが記載され、OpenMP Architecture Review Board の許諾に基づく転載である旨が明記されている場合に限り、無料で一部または全体を転載できます また、転載は OpenMP Architecture Review Board の許諾に基づいて行われたことを明記する必要があります。
© 2010 Intel Corporation. 無断での引用、転載を禁じます。