Remove unnecessary atomics/duplication
This commit is contained in:
@ -874,9 +874,9 @@ void PairReaxFFKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
|
||||
}
|
||||
|
||||
if (neighflag == HALF)
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagPairReaxBuildListsHalf<HALF>>(0,ignum),*this);
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagPairReaxBuildListsFull>(0,ignum),*this);
|
||||
else if (neighflag == HALFTHREAD)
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagPairReaxBuildListsHalf<HALFTHREAD>>(0,ignum),*this);
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagPairReaxBuildListsFull>(0,ignum),*this);
|
||||
|
||||
// allocate duplicated memory
|
||||
if (need_dup) {
|
||||
@ -1740,15 +1740,8 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxBuildListsHalfBlockingP
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
template<int NEIGHFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxBuildListsHalf<NEIGHFLAG>, const int &ii) const {
|
||||
|
||||
const auto v_dDeltap_self = ScatterViewHelper<NeedDup_v<NEIGHFLAG,DeviceType>,decltype(dup_dDeltap_self),decltype(ndup_dDeltap_self)>::get(dup_dDeltap_self,ndup_dDeltap_self);
|
||||
const auto a_dDeltap_self = v_dDeltap_self.template access<AtomicDup_v<NEIGHFLAG,DeviceType>>();
|
||||
|
||||
const auto v_total_bo = ScatterViewHelper<NeedDup_v<NEIGHFLAG,DeviceType>,decltype(dup_total_bo),decltype(ndup_total_bo)>::get(dup_total_bo,ndup_total_bo);
|
||||
const auto a_total_bo = v_total_bo.template access<AtomicDup_v<NEIGHFLAG,DeviceType>>();
|
||||
void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxBuildListsFull, const int &ii) const {
|
||||
|
||||
const int i = d_ilist[ii];
|
||||
const X_FLOAT xtmp = x(i,0);
|
||||
@ -1757,7 +1750,8 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxBuildListsHalf<NEIGHFLA
|
||||
const int itype = type(i);
|
||||
|
||||
F_FLOAT C12, C34, C56, BO_s, BO_pi, BO_pi2, BO, delij[3], dBOp_i[3], dln_BOp_pi_i[3], dln_BOp_pi2_i[3];
|
||||
F_FLOAT total_bo = 0.0;
|
||||
F_FLOAT dDeltap_self_i[3] = {0.0,0.0,0.0};
|
||||
F_FLOAT total_bo_i = 0.0;
|
||||
|
||||
const int j_start = d_bo_first[i];
|
||||
const int j_end = j_start + d_bo_num[i];
|
||||
@ -1818,7 +1812,7 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxBuildListsHalf<NEIGHFLA
|
||||
for (int d = 0; d < 3; d++) dln_BOp_pi_i[d] = -(BO_pi*Cln_BOp_pi)*delij[d];
|
||||
for (int d = 0; d < 3; d++) dln_BOp_pi2_i[d] = -(BO_pi2*Cln_BOp_pi2)*delij[d];
|
||||
for (int d = 0; d < 3; d++) dBOp_i[d] = -(BO_s*Cln_BOp_s+BO_pi*Cln_BOp_pi+BO_pi2*Cln_BOp_pi2)*delij[d];
|
||||
for (int d = 0; d < 3; d++) a_dDeltap_self(i,d) += dBOp_i[d];
|
||||
for (int d = 0; d < 3; d++) dDeltap_self_i[d] += dBOp_i[d];
|
||||
|
||||
d_dln_BOp_pix(i,j_index) = dln_BOp_pi_i[0];
|
||||
d_dln_BOp_piy(i,j_index) = dln_BOp_pi_i[1];
|
||||
@ -1834,10 +1828,13 @@ void PairReaxFFKokkos<DeviceType>::operator()(TagPairReaxBuildListsHalf<NEIGHFLA
|
||||
|
||||
d_BO(i,j_index) -= bo_cut;
|
||||
d_BO_s(i,j_index) -= bo_cut;
|
||||
total_bo += d_BO(i,j_index);
|
||||
total_bo_i += d_BO(i,j_index);
|
||||
}
|
||||
|
||||
a_total_bo[i] += total_bo;
|
||||
for (int d = 0; d < 3; d++)
|
||||
d_dDeltap_self(i,d) = dDeltap_self_i[d];
|
||||
|
||||
d_total_bo[i] = total_bo_i;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -63,8 +63,7 @@ struct TagPairReaxBuildListsHalfBlockingPreview{};
|
||||
template<int NEIGHFLAG>
|
||||
struct TagPairReaxBuildListsHalfPreview{};
|
||||
|
||||
template<int NEIGHFLAG>
|
||||
struct TagPairReaxBuildListsHalf{};
|
||||
struct TagPairReaxBuildListsFull{};
|
||||
|
||||
struct TagPairReaxZero{};
|
||||
|
||||
@ -171,9 +170,8 @@ class PairReaxFFKokkos : public PairReaxFF {
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()(TagPairReaxBuildListsHalfPreview<NEIGHFLAG>, const int&) const;
|
||||
|
||||
template<int NEIGHFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()(TagPairReaxBuildListsHalf<NEIGHFLAG>, const int&) const;
|
||||
void operator()(TagPairReaxBuildListsFull, const int&) const;
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()(TagPairReaxZero, const int&) const;
|
||||
|
||||
Reference in New Issue
Block a user