Commit 5d8e3c6c authored by Stan Moore's avatar Stan Moore
Browse files

Optimize reneighbor for small systems

parent 29073f7d
Loading
Loading
Loading
Loading
+12 −9
Changes for src/KOKKOS/comm_kokkos.cpp: 12 added lines, 9 removed lines.
Original line number Diff line number Diff line
@@ -1046,10 +1046,16 @@ void CommKokkos::borders_device() {
  }

  if (1) {
    if (nswap > k_pbc.extent(0)) {
      k_pbc = DAT::tdual_int_2d("comm:pbc",nswap,6);
     k_pbc_flag     = DAT::tdual_int_1d("comm:pbc_flag",nswap);
     k_firstrecv    = DAT::tdual_int_1d("comm:firstrecv",nswap);
     k_sendnum_scan = DAT::tdual_int_1d("comm:sendnum_scan",nswap);
      k_swap = DAT::tdual_int_2d("comm:swap",3,nswap);
      k_pbc_flag    .d_view = Kokkos::subview(k_swap.d_view,0,Kokkos::ALL);
      k_firstrecv   .d_view = Kokkos::subview(k_swap.d_view,1,Kokkos::ALL);
      k_sendnum_scan.d_view = Kokkos::subview(k_swap.d_view,2,Kokkos::ALL);
      k_pbc_flag    .h_view = Kokkos::subview(k_swap.h_view,0,Kokkos::ALL);
      k_firstrecv   .h_view = Kokkos::subview(k_swap.h_view,1,Kokkos::ALL);
      k_sendnum_scan.h_view = Kokkos::subview(k_swap.h_view,2,Kokkos::ALL);
    }
    int scan = 0;
    for (int iswap = 0; iswap < nswap; iswap++) {
      scan += sendnum[iswap];
@@ -1064,15 +1070,12 @@ void CommKokkos::borders_device() {
      k_pbc.h_view(iswap,5) = pbc[iswap][5];
    }
    totalsend = scan;

    k_swap.modify<LMPHostType>();
    k_pbc.modify<LMPHostType>();
    k_pbc_flag    .modify<LMPHostType>();
    k_firstrecv   .modify<LMPHostType>();
    k_sendnum_scan.modify<LMPHostType>();

    k_swap.sync<LMPDeviceType>();
    k_pbc.sync<LMPDeviceType>();
    k_pbc_flag    .sync<LMPDeviceType>();    
    k_firstrecv   .sync<LMPDeviceType>();    
    k_sendnum_scan.sync<LMPDeviceType>();    
  }
}
/* ----------------------------------------------------------------------
+1 −0
Changes for src/KOKKOS/comm_kokkos.h: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ class CommKokkos : public CommBrick {
  //double *buf_send;                 // send buffer for all comm
  //double *buf_recv;                 // recv buffer for all comm

  DAT::tdual_int_2d k_swap;
  DAT::tdual_int_2d k_pbc;
  DAT::tdual_int_1d k_pbc_flag;
  DAT::tdual_int_1d k_firstrecv;
+2 −2
Changes for src/KOKKOS/npair_kokkos.h: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -280,7 +280,7 @@ class NeighborKokkosExecute
    bboxlo[0] = _bboxlo[0]; bboxlo[1] = _bboxlo[1]; bboxlo[2] = _bboxlo[2];
    bboxhi[0] = _bboxhi[0]; bboxhi[1] = _bboxhi[1]; bboxhi[2] = _bboxhi[2];

    resize = typename AT::t_int_scalar("NeighborKokkosFunctor::resize");
    resize = typename AT::t_int_scalar(Kokkos::view_alloc("NeighborKokkosFunctor::resize",Kokkos::WithoutInitializing));
#ifndef KOKKOS_USE_CUDA_UVM
    h_resize = Kokkos::create_mirror_view(resize);
#else
@@ -288,7 +288,7 @@ class NeighborKokkosExecute
#endif
    h_resize() = 1;
    new_maxneighs = typename AT::
      t_int_scalar("NeighborKokkosFunctor::new_maxneighs");
      t_int_scalar(Kokkos::view_alloc("NeighborKokkosFunctor::new_maxneighs",Kokkos::WithoutInitializing));
#ifndef KOKKOS_USE_CUDA_UVM
    h_new_maxneighs = Kokkos::create_mirror_view(new_maxneighs);
#else