Skip to content

Commit f0a0c18

Browse files
change the position of omp (#5327)
Co-authored-by: Mohan Chen <[email protected]>
1 parent 55c5afb commit f0a0c18

File tree

2 files changed

+15
-17
lines changed

2 files changed

+15
-17
lines changed

source/module_hamilt_pw/hamilt_pwdft/kernels/ekinetic_op.cpp

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,39 +17,34 @@ struct ekinetic_pw_op<FPTYPE, base_device::DEVICE_CPU>
1717
{
1818
if (is_first_node)
1919
{
20-
for (int ib = 0; ib < nband; ++ib)
21-
{
2220
#ifdef _OPENMP
2321
#pragma omp parallel for
2422
#endif
23+
for (int ib = 0; ib < nband; ++ib)
24+
{
25+
const int ig0 = ib * max_npw;
2526
for (int ig = 0; ig < npw; ++ig)
2627
{
27-
tmhpsi[ig] = gk2_ik[ig] * tpiba2 * tmpsi_in[ig];
28+
tmhpsi[ig + ig0] = gk2_ik[ig] * tpiba2 * tmpsi_in[ig + ig0];
2829
}
29-
#ifdef _OPENMP
30-
#pragma omp parallel for
31-
#endif
3230
for (int ig = npw; ig < max_npw; ++ig)
3331
{
34-
tmhpsi[ig] = 0.0;
32+
tmhpsi[ig + ig0] = 0.0;
3533
}
36-
tmpsi_in += max_npw;
37-
tmhpsi += max_npw;
3834
}
3935
}
4036
else
4137
{
42-
for (int ib = 0; ib < nband; ++ib)
43-
{
4438
#ifdef _OPENMP
4539
#pragma omp parallel for
4640
#endif
41+
for (int ib = 0; ib < nband; ++ib)
42+
{
43+
const int ig0 = ib * max_npw;
4744
for (int ig = 0; ig < npw; ++ig)
4845
{
49-
tmhpsi[ig] += gk2_ik[ig] * tpiba2 * tmpsi_in[ig];
46+
tmhpsi[ig + ig0] += gk2_ik[ig] * tpiba2 * tmpsi_in[ig + ig0];
5047
}
51-
tmpsi_in += max_npw;
52-
tmhpsi += max_npw;
5348
}
5449
}
5550
}

source/module_hamilt_pw/hamilt_stodft/hamilt_sdft_pw.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,17 @@ void HamiltSdftPW<T, Device>::hPsi_norm(const T* psi_in, T* hpsi_norm, const int
5555
const Real emax = *this->emax;
5656
const Real Ebar = (emin + emax) / 2;
5757
const Real DeltaE = (emax - emin) / 2;
58+
59+
#ifdef _OPENMP
60+
#pragma omp parallel for
61+
#endif
5862
for (int ib = 0; ib < nbands; ++ib)
5963
{
64+
const int ig0 = ib * npwk_max;
6065
for (int ig = 0; ig < npwk; ++ig)
6166
{
62-
hpsi_norm[ig] = (hpsi_norm[ig] - Ebar * psi_in[ig]) / DeltaE;
67+
hpsi_norm[ig + ig0] = (hpsi_norm[ig + ig0] - Ebar * psi_in[ig + ig0]) / DeltaE;
6368
}
64-
hpsi_norm += npwk_max;
65-
psi_in += npwk_max;
6669
}
6770
ModuleBase::timer::tick("HamiltSdftPW", "hPsi_norm");
6871
}

0 commit comments

Comments
 (0)