Skip to content

Commit ac1efa5

Browse files
committed
Remove OMP reduction for multidimensional arrays.
Signed-off-by: thfroitzheim <[email protected]>
1 parent 1e2069a commit ac1efa5

File tree

3 files changed

+11
-2
lines changed

3 files changed

+11
-2
lines changed

config/cmake/Findmstore.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,4 @@ endif()
3838
unset(_lib)
3939
unset(_pkg)
4040
unset(_url)
41+
unset(_rev)

src/multicharge/model.F90

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ subroutine get_amat_0d(self, mol, amat)
133133
amat(:, :) = 0.0_wp
134134

135135
!$omp parallel do default(none) schedule(runtime) &
136-
!$omp reduction(+:amat) shared(mol, self) &
136+
!$omp shared(amat, mol, self) &
137137
!$omp private(iat, izp, jat, jzp, gam, vec, r2, tmp)
138138
do iat = 1, mol%nat
139139
izp = mol%id(iat)
@@ -143,10 +143,13 @@ subroutine get_amat_0d(self, mol, amat)
143143
r2 = vec(1)**2 + vec(2)**2 + vec(3)**2
144144
gam = 1.0_wp / (self%rad(izp)**2 + self%rad(jzp)**2)
145145
tmp = erf(sqrt(r2*gam))/sqrt(r2)
146+
!$omp atomic
146147
amat(jat, iat) = amat(jat, iat) + tmp
148+
!$omp atomic
147149
amat(iat, jat) = amat(iat, jat) + tmp
148150
end do
149151
tmp = self%eta(izp) + sqrt2pi / self%rad(izp)
152+
!$omp atomic
150153
amat(iat, iat) = amat(iat, iat) + tmp
151154
end do
152155

@@ -174,7 +177,7 @@ subroutine get_amat_3d(self, mol, wsc, alpha, amat)
174177
call get_rec_trans(mol%lattice, rtrans)
175178

176179
!$omp parallel do default(none) schedule(runtime) &
177-
!$omp reduction(+:amat) shared(mol, self, wsc, dtrans, rtrans, alpha, vol) &
180+
!$omp shared(amat, mol, self, wsc, dtrans, rtrans, alpha, vol) &
178181
!$omp private(iat, izp, jat, jzp, gam, wsw, vec, dtmp, rtmp)
179182
do iat = 1, mol%nat
180183
izp = mol%id(iat)
@@ -186,7 +189,9 @@ subroutine get_amat_3d(self, mol, wsc, alpha, amat)
186189
vec = mol%xyz(:, iat) - mol%xyz(:, jat) - wsc%trans(:, wsc%tridx(img, jat, iat))
187190
call get_amat_dir_3d(vec, gam, alpha, dtrans, dtmp)
188191
call get_amat_rec_3d(vec, vol, alpha, rtrans, rtmp)
192+
!$omp atomic
189193
amat(jat, iat) = amat(jat, iat) + (dtmp + rtmp) * wsw
194+
!$omp atomic
190195
amat(iat, jat) = amat(iat, jat) + (dtmp + rtmp) * wsw
191196
end do
192197
end do
@@ -197,10 +202,12 @@ subroutine get_amat_3d(self, mol, wsc, alpha, amat)
197202
vec = wsc%trans(:, wsc%tridx(img, iat, iat))
198203
call get_amat_dir_3d(vec, gam, alpha, dtrans, dtmp)
199204
call get_amat_rec_3d(vec, vol, alpha, rtrans, rtmp)
205+
!$omp atomic
200206
amat(iat, iat) = amat(iat, iat) + (dtmp + rtmp) * wsw
201207
end do
202208

203209
dtmp = self%eta(izp) + sqrt2pi / self%rad(izp) - 2 * alpha / sqrtpi
210+
!$omp atomic
204211
amat(iat, iat) = amat(iat, iat) + dtmp
205212
end do
206213

subprojects/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
/*/
2+
json-fortran-8.2.5.wrap

0 commit comments

Comments
 (0)