Fortran / OpenMP - 并行是否会受到竞争条件的影响?

时间:2017-01-02 04:41:43

标签: fortran openmp race-condition

我一直认为OpenMP中的parallel do(我使用Fortran)不会受到竞争条件的影响。我只是需要确认。

所以我写了这个简单的程序来测试它

program test
 use omp_lib
 implicit none
integer, parameter :: m = 4
real*8, dimension(m,m) :: b
integer :: i, j
b = 1.0
!$ call omp_set_num_threads(4)
    !$omp parallel do
    do i = 1, m
        do j = 1, m
            b(i,j) = 2*b(i,j)
            if(i==j) then
                b(i,j) = b(i,j) + i
            endif
        end do
    end do
    !$omp end parallel do

print *, b
end program test

该程序给出了我预期的结果(即没有检测到竞争条件)。

但我担心某些事情可能会从我简单的思想中逃脱。任何人都可以确认parallel do没有受到竞争条件的影响吗?

0 个答案:

没有答案