1 つのループの反復で複数の ORDERED 構造は実行できません。
ORDERED 節と ORDERED 構造は並列で処理された結果をシーケンシャルに順序付けするのに使用されます。1 つのループ領域に複数の ORDERED 構造を含めることは不正ではありませんが、単一の反復で複数の構造を実行することは許可されていません。この診断は、この制限に違反している (またはその可能性がある) ことを示します。
ID |
問題箇所 |
説明 |
---|---|---|
1 |
OpenMP* の使用方法に関するエラー |
2 番目の ORDERED 宣言子が実行された場所 |
2 |
OpenMP* 宣言 |
順序付きループの場所 |
3 |
OpenMP* 宣言 |
最初の ORDERED 宣言子が実行された場所 |
// Example A.24.3c from OpenMP* 3.0 Specification // Copyright (C) 1997-2008 OpenMP Architecture Review Board // This example is legal because each iteration of the loop will // execute only one ORDERED construct. void work(int i) { } void a24_good(int n) { int i; #pragma omp for ordered for (i = 0; i < n; i++) { if (i <= 10) { #pragma omp ordered work (i); } if (i > 10) { #pragma omp ordered work (i + 1); } } }次に FORTRAN の同様の例を示します。
! Example A.24.3f from OpenMP* 3.0 Specification ! Copyright (C) 1997-2008 OpenMP Architecture Review Board SUBROUTINE A24_GOOD(N) INTEGER N !$OMP DO ORDERED DO I = 1,N IF I <= N THEN !$OMP ORDERED CALL WORK(I) !$OMP END ORDERED END IF IF I > N THEN !$OMP ORDERED CALL WORK(I+1) !$OMP END ORDERED END IF END DO END SUBROUTINE A24_GOOD
© 1997-2008 OpenMP Architecture Review Board.
この資料は、OpenMP Architecture Review Board の著作権と本ドキュメントのタイトルが記載され、OpenMP Architecture Review Board の許諾に基づく転載である旨が明記されている場合に限り、無料で一部または全体を転載できます また、転載は OpenMP Architecture Review Board の許諾に基づいて行われたことを明記する必要があります。
© 2010 Intel Corporation. 無断での引用、転載を禁じます。