fortran - 由 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,它就会运行。显然这不是我想要的结果。我找不到原因。
解决方案
推荐阅读
- powershell - 适合所有人的测试路径
- ios - Swift UserDefaults.standard 不读取值
- sql - 仅选择月份最后一天的值
- c - 在 C 中设置自己的类型限制?
- java - 带有 Spring Boot 和 Spring Data Neo4j 的 REST API
- vb.net - 仅文本框转换器
- c# - 如何从 ASP.NET Core 2.1 API 获取 401 Unauthorized 的详细信息
- html - AngularJS在页面刷新后保留选择
- excel - 访问/Excel VBA 失败
- sql - 使用 LIKE CONCAT 函数在查询表达式中出现语法错误