首页 > 解决方案 > 由 OMP 私有参数引起的崩溃

问题描述

当我在我的测试 fortran 代码中使用 omp 时,我发现了一个奇怪的问题。以下是简单的代码

program Console1

use omp_lib

implicit none

complex, allocatable :: fft_image(:,:,:), temp(:,:)
real, allocatable :: intensity(:,:)
integer :: nx,ny,nz,i,j,k
nx=10;ny=10;nz=10;
allocate (fft_image(nx,ny,nz),temp(nx,ny),intensity(nx,ny))
fft_image=1
temp=0
!$OMP PARALLEL DO private(temp,k),REDUCTION(+: intensity),SCHEDULE(DYNAMIC) 
do k=1,nz
    temp=fft_image(1:nx,1:ny,k)

    call fft2d_mkl(temp,nx,ny,1)
    intensity=intensity+abs(temp)
end do
!$OMP END PARALLEL DO

pause

end program Console1

如果我将“temp”设置为 PRIVATE 参数,程序会因信息而崩溃 在此处输入图像描述

但是,如果我从私人列表中删除 temp,它就会运行。显然这不是我想要的结果。我找不到原因。

标签: fortranopenmp

解决方案


推荐阅读