Commit ff7276e4 authored by Stan Moore's avatar Stan Moore
Browse files

Clean up the fused comm

parent 553714b0
Loading
Loading
Loading
Loading
+7 −7
Changes for src/KOKKOS/atom_vec_kokkos.cpp: 7 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -271,7 +271,7 @@ int AtomVecKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list, c
/* ---------------------------------------------------------------------- */

template<class DeviceType,int TRICLINIC>
struct AtomVecKokkos_PackCommSelfSquash {
struct AtomVecKokkos_PackCommSelfFused {
  typedef DeviceType device_type;

  typename ArrayTypes<DeviceType>::t_x_array_randomread _x;
@@ -283,7 +283,7 @@ struct AtomVecKokkos_PackCommSelfSquash {
  typename ArrayTypes<DeviceType>::t_int_1d_const _sendnum_scan;
  X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz;

  AtomVecKokkos_PackCommSelfSquash(
  AtomVecKokkos_PackCommSelfFused(
      const typename DAT::tdual_x_array &x,
      const typename DAT::tdual_int_2d &list,
      const typename DAT::tdual_int_2d &pbc,
@@ -334,18 +334,18 @@ struct AtomVecKokkos_PackCommSelfSquash {

/* ---------------------------------------------------------------------- */

int AtomVecKokkos::pack_comm_self_squash(const int &n, const DAT::tdual_int_2d &list, const DAT::tdual_int_1d &sendnum_scan,
int AtomVecKokkos::pack_comm_self_fused(const int &n, const DAT::tdual_int_2d &list, const DAT::tdual_int_1d &sendnum_scan,
                                         const DAT::tdual_int_1d &firstrecv, const DAT::tdual_int_1d &pbc_flag, const DAT::tdual_int_2d &pbc) {
  if(commKK->forward_comm_on_host) {
    sync(Host,X_MASK);
    modified(Host,X_MASK);
    if(domain->triclinic) {
    struct AtomVecKokkos_PackCommSelfSquash<LMPHostType,1> f(atomKK->k_x,list,pbc,pbc_flag,firstrecv,sendnum_scan,
    struct AtomVecKokkos_PackCommSelfFused<LMPHostType,1> f(atomKK->k_x,list,pbc,pbc_flag,firstrecv,sendnum_scan,
        domain->xprd,domain->yprd,domain->zprd,
        domain->xy,domain->xz,domain->yz);
    Kokkos::parallel_for(n,f);
    } else {
    struct AtomVecKokkos_PackCommSelfSquash<LMPHostType,0> f(atomKK->k_x,list,pbc,pbc_flag,firstrecv,sendnum_scan,
    struct AtomVecKokkos_PackCommSelfFused<LMPHostType,0> f(atomKK->k_x,list,pbc,pbc_flag,firstrecv,sendnum_scan,
        domain->xprd,domain->yprd,domain->zprd,
        domain->xy,domain->xz,domain->yz);
    Kokkos::parallel_for(n,f);
@@ -354,12 +354,12 @@ int AtomVecKokkos::pack_comm_self_squash(const int &n, const DAT::tdual_int_2d &
    sync(Device,X_MASK);
    modified(Device,X_MASK);
    if(domain->triclinic) {
    struct AtomVecKokkos_PackCommSelfSquash<LMPDeviceType,1> f(atomKK->k_x,list,pbc,pbc_flag,firstrecv,sendnum_scan,
    struct AtomVecKokkos_PackCommSelfFused<LMPDeviceType,1> f(atomKK->k_x,list,pbc,pbc_flag,firstrecv,sendnum_scan,
        domain->xprd,domain->yprd,domain->zprd,
        domain->xy,domain->xz,domain->yz);
    Kokkos::parallel_for(n,f);
    } else {
    struct AtomVecKokkos_PackCommSelfSquash<LMPDeviceType,0> f(atomKK->k_x,list,pbc,pbc_flag,firstrecv,sendnum_scan,
    struct AtomVecKokkos_PackCommSelfFused<LMPDeviceType,0> f(atomKK->k_x,list,pbc,pbc_flag,firstrecv,sendnum_scan,
        domain->xprd,domain->yprd,domain->zprd,
        domain->xy,domain->xz,domain->yz);
    Kokkos::parallel_for(n,f);
+1 −1
Changes for src/KOKKOS/atom_vec_kokkos.h: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ class AtomVecKokkos : public AtomVec {
                   const int &pbc_flag, const int pbc[]);

  virtual int
    pack_comm_self_squash(const int &n, const DAT::tdual_int_2d &list,
    pack_comm_self_fused(const int &n, const DAT::tdual_int_2d &list,
                         const DAT::tdual_int_1d &sendnum_scan,
                         const DAT::tdual_int_1d &firstrecv,
                         const DAT::tdual_int_1d &pbc_flag,
+3 −5
Changes for src/KOKKOS/comm_kokkos.cpp: 3 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -187,11 +187,9 @@ void CommKokkos::forward_comm_device(int dummy)
  k_sendlist.sync<DeviceType>();
  atomKK->sync(ExecutionSpaceFromDevice<DeviceType>::space,X_MASK);

  int comm_squash = 1;
  if (comm_squash) {
    n = avec->pack_comm_self_squash(totalsend,k_sendlist,k_sendnum_scan,
  if (comm->nprocs == 1) {
    n = avec->pack_comm_self_fused(totalsend,k_sendlist,k_sendnum_scan,
                    k_firstrecv,k_pbc_flag,k_pbc);
    DeviceType::fence();
  } else {

  for (int iswap = 0; iswap < nswap; iswap++) {
@@ -1045,7 +1043,7 @@ void CommKokkos::borders_device() {
    atom->map_set();
  }

  if (1) {
  if (comm->nprocs == 1) {
    if (nswap > k_pbc.extent(0)) {
      k_pbc = DAT::tdual_int_2d("comm:pbc",nswap,6);
      k_swap = DAT::tdual_int_2d("comm:swap",3,nswap);