diff --git a/src/KOKKOS/npair_skip_kokkos.cpp b/src/KOKKOS/npair_skip_kokkos.cpp index db330f23e6c5a92e0b4da3d4fcd40d207e54b18c..c537afaa6b8344d110e9f6d6f52430f92ba47e91 100644 --- a/src/KOKKOS/npair_skip_kokkos.cpp +++ b/src/KOKKOS/npair_skip_kokkos.cpp @@ -109,32 +109,37 @@ void NPairSkipKokkos<DeviceType>::operator()(TagNPairSkipCompute, const int &ii, const int i = d_ilist_skip(ii); const int itype = type(i); - if (d_iskip(itype)) return; - if (final) { + if (!d_iskip(itype)) { + + if (final) { - int n = 0; + int n = 0; - // loop over parent non-skip list + // loop over parent non-skip list - const int jnum = d_numneigh_skip(i); - const AtomNeighbors neighbors_i = AtomNeighbors(&d_neighbors(i,0),d_numneigh(i), + const int jnum = d_numneigh_skip(i); + const AtomNeighbors neighbors_i = AtomNeighbors(&d_neighbors(i,0),d_numneigh(i), &d_neighbors(i,1)-&d_neighbors(i,0)); - for (int jj = 0; jj < jnum; jj++) { - const int joriginal = d_neighbors_skip(i,jj); - int j = joriginal & NEIGHMASK; - if (d_ijskip(itype,type(j))) continue; - neighbors_i(n++) = joriginal; + for (int jj = 0; jj < jnum; jj++) { + const int joriginal = d_neighbors_skip(i,jj); + int j = joriginal & NEIGHMASK; + if (d_ijskip(itype,type(j))) continue; + neighbors_i(n++) = joriginal; + } + + d_numneigh(i) = n; + d_ilist(inum) = i; } - d_numneigh(i) = n; - d_ilist(inum) = i; - if (ii == num_skip-1) - d_inum() = inum+1; + inum++; } - inum++; + if (final) { + if (ii == num_skip-1) + d_inum() = inum; + } } template<class DeviceType> diff --git a/src/KOKKOS/pair_table_kokkos.cpp b/src/KOKKOS/pair_table_kokkos.cpp index b3e80d1f664e012555a826834df2d6b78ec7bba4..957214915bf403ac790b032d9179bc55e10161c3 100644 --- a/src/KOKKOS/pair_table_kokkos.cpp +++ b/src/KOKKOS/pair_table_kokkos.cpp @@ -141,8 +141,8 @@ void PairTableKokkos<DeviceType>::compute_style(int eflag_in, int vflag_in) } else if (neighflag == N2) { PairComputeFunctor<PairTableKokkos<DeviceType>,N2,false,S_TableCompute<DeviceType,TABSTYLE> > f(this,(NeighListKokkos<DeviceType>*) list); - if (eflag || vflag) Kokkos::parallel_reduce(nlocal,f,ev); - else Kokkos::parallel_for(nlocal,f); + if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); + else Kokkos::parallel_for(list->inum,f); } } else { if (neighflag == FULL) { @@ -163,8 +163,8 @@ void PairTableKokkos<DeviceType>::compute_style(int eflag_in, int vflag_in) } else if (neighflag == N2) { PairComputeFunctor<PairTableKokkos<DeviceType>,N2,true,S_TableCompute<DeviceType,TABSTYLE> > f(this,(NeighListKokkos<DeviceType>*) list); - if (eflag || vflag) Kokkos::parallel_reduce(nlocal,f,ev); - else Kokkos::parallel_for(nlocal,f); + if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); + else Kokkos::parallel_for(list->inum,f); } }