问题遇到的现象和发生背景 fortran 写了一个OMP的并行,然后用makefile运行报告: 段错误(核心转储)
问题相关代码,请勿粘贴截图 #gfortran
FC = gfortran
#FFLAGS = -cpp -fopenmp --free-line-length-none -fmax-identifier-length=63 -O2 -mcmodel=medium
FFLAGS = -cpp -fopenmp --free-line-length-none -fmax-identifier-length=63 -O2
#if you use ifort
#FC = ifort
#FFLAGS = -fpp2 -openmp -O1
#FFLAGS = -fpp2 -openmp -O1 -mcmodel=medium -i-dynamic -i8
1: cx.o
$(FC) $(FFLAGS) $^ -o 1
cx.o:cx.f90
$(FC) $(FFLAGS) -c cx.f90
clean:
rm -f test.o 1 *.o *.log
!程序部分,想仅仅对 j 作并行计算
!$omp parallel do default(shared) private(j)
do j=1,nn
do p=1,nn
do m=1,nn
do i=281559,452416
if ( k(m-1)<abs(k(j)-k(p)) .and. abs(k(j)-k(p)) < k(m) ) then
n=m-1
end if
gw(j)= (0.006258d0*k(j)*3k(p)*7Abs( g(j,i)*r(p,i)*r(n,i) )*2 + 0.006258d0k(j)*3k(p)*7Abs( g(j,i-1)*r(p,i-1)&
*r(n,i-1) )*2)/2.(t(i)-t(i-1))
sum(j)=sum(j)+gw(j)
end do
end do
end do
end do
!$omp end parallel do