小编Ele*_*ltz的帖子

OpenMP工作精度

我在以下简单代码中遇到了问题。我正在尝试将OpenMP与GFortran一起使用。代码波纹管的结果x应该是具有和不具有相同的!$OMP语句,因为并行码和序列代码应该输出相同的结果。

program test
implicit none
!INCLUDE 'omp_lib.h'
integer i,j
Real(8) :: x,t1,t2

x=0.0d0
!$OMP PARALLEL DO PRIVATE(i,j) shared(X)
Do i=1,3
   Write(*,*) I
   !pause
   Do j=1,10000000
   !$OMP ATOMIC
    X=X+2.d0*Cos(i*j*1.0d0)
   end do
end do
!$OMP END PARALLEL Do

write(*,*) x    
end program test
Run Code Online (Sandbox Code Playgroud)

但是奇怪的是我得到以下结果x

平行:-3.17822355415XXXXX

序列号: -3.1782235541569084

哪里XXXXX是一些随机数字。每次运行串行代码,都会得到相同的结果(-3.1782235541569084)。我该如何解决?这是由于某些OpenMP工作精度选项引起的吗?

fortran openmp gfortran

2
推荐指数
1
解决办法
509
查看次数

标签 统计

fortran ×1

gfortran ×1

openmp ×1