Почему я получаю ошибку сегментации в Openmp при добавлении чисел, хранящихся в массиве? - PullRequest
0 голосов
/ 05 апреля 2019

Я очень новичок в Openmp.Я суммировал N целых чисел, хранящихся в массиве, и компилировал код, используя gfortran.До N = 10 ^ 6 результаты, полученные из последовательного и параллельного кодов, абсолютно одинаковы.Для N = 10 ^ 7 последовательный код выполняется, но параллельный код (после компиляции с использованием флага -fopenmp) выдает «Ошибка сегментации».Я дал свой код здесь.Может ли кто-нибудь помочь мне, почему это происходит?

  use omp_lib
  REAL*8 r,summ,sl
  parameter (N=10000000)
  dimension r(N)

  do i=1,N
  r(i)=i
  enddo

  summ=0.0d00
  sl=0.0d00

  !$OMP PARALLEL FIRSTPRIVATE(sl) SHARED(r,summ)
  !$OMP DO 
  do i=1,N
  sl=sl+r(i)
  enddo
  !$OMP END DO
  !$OMP CRITICAL
  summ=summ+sl
  !$OMP END CRITICAL
  !$OMP END PARALLEL

  write(*,*)'SUM',summ

  end
...