OpenMP规范说 [!$ OMP PARALLEL END DO] 是可选的,如果不存在,编译器会默认采用它。我可以隐含地假设它的正确性吗?例如
do i = 1, N
!$OMP PARALLEL DO DEFAULT(SHARED)
do j = xadj(i), xadj(i+1) - 1
call residual(j, ...)
end do
end do
do i = 1, N
!$OMP PARALLEL DO DEFAULT(SHARED)
do j = xadj(i), xadj(i+1) - 1
call residual(j, ...)
end do
!$OMP END PARALLEL DO
end do
虽然规范说它是可选的(安全的)在实践中有多安全(对于上面的例子)?