From adea2fc7f3fa43f0af488465d486bd6510fafe49 Mon Sep 17 00:00:00 2001 From: Matt Bettencourt Date: Mon, 12 Feb 2024 09:42:18 +0100 Subject: [PATCH 1/3] fixed bounds --- src/KOKKOS/mliap_data_kokkos.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/KOKKOS/mliap_data_kokkos.cpp b/src/KOKKOS/mliap_data_kokkos.cpp index e5b34ecaa0..c7913d2835 100644 --- a/src/KOKKOS/mliap_data_kokkos.cpp +++ b/src/KOKKOS/mliap_data_kokkos.cpp @@ -72,7 +72,6 @@ void MLIAPDataKokkos::generate_neighdata(class NeighList *list_in, i list = list_in; // grow nmax gradforce array if necessary - if (atom->nmax > nmax) { nmax = atom->nmax; if (gradgradflag > -1){ @@ -149,13 +148,13 @@ void MLIAPDataKokkos::generate_neighdata(class NeighList *list_in, i auto type = atomKK->k_type.view(); auto map=k_pairmliap->k_map.template view(); - Kokkos::parallel_scan(nlistatoms, KOKKOS_LAMBDA (int ii, int &update, const bool final) { + Kokkos::parallel_scan(natomneigh, KOKKOS_LAMBDA (int ii, int &update, const bool final) { if (final) d_ij(ii) = update; update += d_numneighs(ii); }); - Kokkos::parallel_for(nlistatoms, KOKKOS_LAMBDA (int ii) { + Kokkos::parallel_for(natomneigh, KOKKOS_LAMBDA (int ii) { int ij = d_ij(ii); const int i = d_ilist[ii]; const double xtmp = x(i, 0); @@ -186,10 +185,12 @@ void MLIAPDataKokkos::generate_neighdata(class NeighList *list_in, i d_iatoms[ii] = i; d_ielems[ii] = ielem; }); + Kokkos::parallel_for(nmax, KOKKOS_LAMBDA (int i) { const int itype = type(i); d_elems(i) = map(itype); }); + modified(execution_space, NUMNEIGHS_MASK | IATOMS_MASK | IELEMS_MASK | ELEMS_MASK | JATOMS_MASK | PAIR_I_MASK | JELEMS_MASK | RIJ_MASK | IJ_MASK ); eflag = eflag_in; vflag = vflag_in; @@ -203,9 +204,10 @@ void MLIAPDataKokkos::grow_neigharrays() { f = atom->f; f_device = atomKK->k_f.view().data(); // grow neighbor arrays if necessary - - if (natomneigh_max < nlistatoms) { - natomneigh_max = nlistatoms; + natomneigh = list->inum; + if (list->ghost == 1) natomneigh += list->gnum; + if (natomneigh_max < natomneigh) { + natomneigh_max = natomneigh; memoryKK->destroy_kokkos(k_iatoms,iatoms); memoryKK->create_kokkos(k_iatoms, iatoms, natomneigh_max, "mliap_data:iatoms"); @@ -214,7 +216,7 @@ void MLIAPDataKokkos::grow_neigharrays() { memoryKK->destroy_kokkos(k_ij); memoryKK->create_kokkos(k_ij, natomneigh_max, "mliap_data:ij"); memoryKK->destroy_kokkos(k_numneighs,numneighs); - memoryKK->create_kokkos(k_numneighs, numneighs, natomneigh_max, "mliap_data:numneighs"); + memoryKK->create_kokkos(k_numneighs, natomneigh_max, "mliap_data:numneighs"); } NeighListKokkos* k_list = static_cast*>(list); @@ -227,7 +229,7 @@ void MLIAPDataKokkos::grow_neigharrays() { auto d_cutsq=k_pairmliap->k_cutsq.template view(); auto h_cutsq=k_pairmliap->k_cutsq.template view(); auto d_numneighs = k_numneighs.template view(); - Kokkos::parallel_reduce(nlistatoms, KOKKOS_LAMBDA (int ii, int &contrib) { + Kokkos::parallel_reduce(natomneigh, KOKKOS_LAMBDA (int ii, int &contrib) { const int i = d_ilist[ii]; int count=0; const double xtmp = x(i, 0); @@ -250,7 +252,7 @@ void MLIAPDataKokkos::grow_neigharrays() { contrib += count; }, npairs); modified(execution_space, NUMNEIGHS_MASK); - + if (nneigh_max < npairs) { memoryKK->destroy_kokkos(k_jatoms,jatoms); memoryKK->create_kokkos(k_jatoms, jatoms, npairs, "mliap_data:jatoms"); From 4188e1252261ab1571237da89b240b528f43b32f Mon Sep 17 00:00:00 2001 From: Stan Gerald Moore Date: Tue, 13 Feb 2024 10:27:57 -0700 Subject: [PATCH 2/3] whitespace --- src/KOKKOS/mliap_data_kokkos.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/mliap_data_kokkos.cpp b/src/KOKKOS/mliap_data_kokkos.cpp index c7913d2835..444038635c 100644 --- a/src/KOKKOS/mliap_data_kokkos.cpp +++ b/src/KOKKOS/mliap_data_kokkos.cpp @@ -185,12 +185,12 @@ void MLIAPDataKokkos::generate_neighdata(class NeighList *list_in, i d_iatoms[ii] = i; d_ielems[ii] = ielem; }); - + Kokkos::parallel_for(nmax, KOKKOS_LAMBDA (int i) { const int itype = type(i); d_elems(i) = map(itype); }); - + modified(execution_space, NUMNEIGHS_MASK | IATOMS_MASK | IELEMS_MASK | ELEMS_MASK | JATOMS_MASK | PAIR_I_MASK | JELEMS_MASK | RIJ_MASK | IJ_MASK ); eflag = eflag_in; vflag = vflag_in; @@ -252,7 +252,7 @@ void MLIAPDataKokkos::grow_neigharrays() { contrib += count; }, npairs); modified(execution_space, NUMNEIGHS_MASK); - + if (nneigh_max < npairs) { memoryKK->destroy_kokkos(k_jatoms,jatoms); memoryKK->create_kokkos(k_jatoms, jatoms, npairs, "mliap_data:jatoms"); From 2625d946e3c8635d34efee97b7d6ef68a6306853 Mon Sep 17 00:00:00 2001 From: Matt Bettencourt Date: Thu, 15 Feb 2024 18:06:45 +0100 Subject: [PATCH 3/3] Fixed typo --- src/KOKKOS/mliap_data_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/mliap_data_kokkos.cpp b/src/KOKKOS/mliap_data_kokkos.cpp index c7913d2835..f8b6d5428e 100644 --- a/src/KOKKOS/mliap_data_kokkos.cpp +++ b/src/KOKKOS/mliap_data_kokkos.cpp @@ -216,7 +216,7 @@ void MLIAPDataKokkos::grow_neigharrays() { memoryKK->destroy_kokkos(k_ij); memoryKK->create_kokkos(k_ij, natomneigh_max, "mliap_data:ij"); memoryKK->destroy_kokkos(k_numneighs,numneighs); - memoryKK->create_kokkos(k_numneighs, natomneigh_max, "mliap_data:numneighs"); + memoryKK->create_kokkos(k_numneighs, numneighs, natomneigh_max, "mliap_data:numneighs"); } NeighListKokkos* k_list = static_cast*>(list);