OpenMP* の IF 節には、副作用があってはなりません。
OpenMP* 仕様では、IF 節の評価の副作用がどの順序で、何回発生するか未定義です。そのため、副作用のある IF 節の存在は、プログラムをあいまいにします。実装で定義されているセマンティクスに依存するプログラムは、1 つの実装から別の実装へ移植できないことがあります。
ID |
問題箇所 |
説明 |
---|---|---|
1 |
OpenMP* の使用方法に関するエラー |
不正な IF 節の場所 |
real r integer i, j, mysub common /cc/ j r = 2.7 j = 50 !$OMP PARALLEL DO SHARED(r) IF(mysub() .LT. j) do i = 1, 3 call sub(r) end do !$OMP END PARALLEL DO print *, r end function mysub() integer j, mysub common /cc/ j j = 100 mysub = 75 end function mysub subroutine sub(r) real r r = r + 9.8 end subroutine sub
© 2010 Intel Corporation. 無断での引用、転載を禁じます。