对 OpenMP 中私有变量和共享变量的基本疑问。代码如下所示。数组arr包含从 1 到 10 的变量,它是全局的。
PROGRAM TEST
IMPLICIT NONE
INTEGER :: i,j
DO i=1,10
call check()
END DO
END PROGRAM TEST
SUBROUTINE CHECK()
IMPLICIT NONE
INTEGER :: testvar,i
!$OMP PARALLEL DO
DO i = 1,10
testvar = a(i)-1
print testvar
END DO
!$END PARALLEL DO
END SUBROUTINE CHECK
testvar
问题:默认情况下子程序本地的变量是私有的吗?这里的一个主要区别是!$OMP PARALLEL
仅在子程序内部开始,因此这不是孤立指令。任何帮助是极大的赞赏。