fortran - omp sum reduction not updating variable -
i having issues using openmp sum reduction in code.
en_par = 0.0d0
!$omp parallel reduction(+:en_par) default(private) shared(r,listvar,it,ic) !--- loop on neighboring cells cell_index = 1,26 !-- new_cell int. neighbor of cell ic new_cell = listvar%cv(cell_index,ic)%cnum !--- loop on atoms in cell neigh_cell j = 1, listvar%cl(new_cell)%num !--- pick particle in cell list !--- particle integer particle = listvar%cl(new_cell)%cmem(j) !--- obtain displacements !--- apply minimum image here !--- min variables doubls dx = r(1,particle)-r(1,it)-listvar%cv(cell_index,ic)%min_x dy = r(2,particle)-r(2,it)-listvar%cv(cell_index,ic)%min_y dz = r(3,particle)-r(3,it)-listvar%cv(cell_index,ic)%min_z dxmin = r(1,particle)-r(1,it) dymin = r(2,particle)-r(2,it) dzmin = r(3,particle)-r(3,it) dr2 = dx*dx+dy*dy+dz*dz if(dr2.lt.param%rcut2)then dr2i = 1.0d0/dr2 dr6i = dr2i*dr2i*dr2i dr12i = dr6i*dr6i en_par = en_par + dr12i-dr6i endif enddo print*,'enpar inside',en_par enddo !$omp end parallel
whenever compile , run using -fopenmp
, en_par
printed screen 0.0
. when ran in serial execution, value not zero. can tell me why?
the reduction variable (here en_par
) not valid access inside parallel do
, have print after finishes.
Comments
Post a Comment