From e048aed1b4301e482f52a0df4dc4f7c3b21eea21 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 25 Jan 2023 11:28:16 -0700 Subject: [PATCH 1/4] Small bugfixes for Kokkos --- src/KOKKOS/fix_setforce_kokkos.cpp | 5 +++-- src/KOKKOS/min_kokkos.cpp | 1 + src/KOKKOS/region_block_kokkos.cpp | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/fix_setforce_kokkos.cpp b/src/KOKKOS/fix_setforce_kokkos.cpp index 4b1c31bec0..f726953985 100644 --- a/src/KOKKOS/fix_setforce_kokkos.cpp +++ b/src/KOKKOS/fix_setforce_kokkos.cpp @@ -77,9 +77,8 @@ void FixSetForceKokkos::init() template void FixSetForceKokkos::post_force(int /*vflag*/) { - atomKK->sync(execution_space, X_MASK | F_MASK | MASK_MASK); + atomKK->sync(execution_space, F_MASK | MASK_MASK); - x = atomKK->k_x.view(); f = atomKK->k_f.view(); mask = atomKK->k_mask.view(); @@ -88,6 +87,8 @@ void FixSetForceKokkos::post_force(int /*vflag*/) // update region if necessary if (region) { + if (!utils::strmatch(region->style, "^block")) + error->all(FLERR,"Cannot (yet) use {}-style region with fix setforce/kk",style); region->prematch(); DAT::tdual_int_1d k_match = DAT::tdual_int_1d("setforce:k_match",nlocal); KokkosBase* regionKKBase = dynamic_cast(region); diff --git a/src/KOKKOS/min_kokkos.cpp b/src/KOKKOS/min_kokkos.cpp index 4e9c9db4e2..4e1c3967ff 100644 --- a/src/KOKKOS/min_kokkos.cpp +++ b/src/KOKKOS/min_kokkos.cpp @@ -513,6 +513,7 @@ double MinKokkos::energy_force(int resetflag) if (modify->n_min_post_force) { timer->stamp(); modify->min_post_force(vflag); + atomKK->sync(Device,F_MASK); timer->stamp(Timer::MODIFY); } diff --git a/src/KOKKOS/region_block_kokkos.cpp b/src/KOKKOS/region_block_kokkos.cpp index cfee46e916..9340014e08 100644 --- a/src/KOKKOS/region_block_kokkos.cpp +++ b/src/KOKKOS/region_block_kokkos.cpp @@ -48,7 +48,8 @@ void RegBlockKokkos::match_all_kokkos(int groupbit_in, DAT::tdual_in groupbit = groupbit_in; d_match = k_match_in.template view(); - atomKK->sync(Device, X_MASK | MASK_MASK); + auto execution_space = ExecutionSpaceFromDevice::space; + atomKK->sync(execution_space, X_MASK | MASK_MASK); x = atomKK->k_x.view(); mask = atomKK->k_mask.view(); From 171b182d423a4be4457af024417dbc30ed6107bd Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 25 Jan 2023 11:51:35 -0700 Subject: [PATCH 2/4] Small tweaks --- src/KOKKOS/fix_setforce_kokkos.cpp | 2 +- src/KOKKOS/region_block_kokkos.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/fix_setforce_kokkos.cpp b/src/KOKKOS/fix_setforce_kokkos.cpp index f726953985..9f193bc6e4 100644 --- a/src/KOKKOS/fix_setforce_kokkos.cpp +++ b/src/KOKKOS/fix_setforce_kokkos.cpp @@ -88,7 +88,7 @@ void FixSetForceKokkos::post_force(int /*vflag*/) if (region) { if (!utils::strmatch(region->style, "^block")) - error->all(FLERR,"Cannot (yet) use {}-style region with fix setforce/kk",style); + error->all(FLERR,"Cannot (yet) use {}-style region with fix setforce/kk",region->style); region->prematch(); DAT::tdual_int_1d k_match = DAT::tdual_int_1d("setforce:k_match",nlocal); KokkosBase* regionKKBase = dynamic_cast(region); diff --git a/src/KOKKOS/region_block_kokkos.cpp b/src/KOKKOS/region_block_kokkos.cpp index 9340014e08..c53fae7b03 100644 --- a/src/KOKKOS/region_block_kokkos.cpp +++ b/src/KOKKOS/region_block_kokkos.cpp @@ -48,7 +48,7 @@ void RegBlockKokkos::match_all_kokkos(int groupbit_in, DAT::tdual_in groupbit = groupbit_in; d_match = k_match_in.template view(); - auto execution_space = ExecutionSpaceFromDevice::space; + auto execution_space = ExecutionSpaceFromDevice::space; atomKK->sync(execution_space, X_MASK | MASK_MASK); x = atomKK->k_x.view(); From 16225acd0549467b9f2f82beb9a97f5e3b367e2d Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 25 Jan 2023 14:01:21 -0700 Subject: [PATCH 3/4] Use group for Kokkos nvt temp compute --- src/KOKKOS/fix_nvt_kokkos.cpp | 2 +- src/KOKKOS/fix_nvt_sllod_kokkos.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/fix_nvt_kokkos.cpp b/src/KOKKOS/fix_nvt_kokkos.cpp index d98ba5c163..16328c5e3a 100644 --- a/src/KOKKOS/fix_nvt_kokkos.cpp +++ b/src/KOKKOS/fix_nvt_kokkos.cpp @@ -39,7 +39,7 @@ FixNVTKokkos::FixNVTKokkos(LAMMPS *lmp, int narg, char **arg) : // id = fix-ID + temp this->id_temp = utils::strdup(std::string(this->id)+"_temp"); - this->modify->add_compute(fmt::format("{} all temp/kk",this->id_temp)); + this->modify->add_compute(fmt::format("{} {} temp/kk",this->id_temp,this->group->names[this->igroup])); this->tcomputeflag = 1; } diff --git a/src/KOKKOS/fix_nvt_sllod_kokkos.cpp b/src/KOKKOS/fix_nvt_sllod_kokkos.cpp index 12b1e8f322..fbec3816bc 100644 --- a/src/KOKKOS/fix_nvt_sllod_kokkos.cpp +++ b/src/KOKKOS/fix_nvt_sllod_kokkos.cpp @@ -67,7 +67,7 @@ FixNVTSllodKokkos::FixNVTSllodKokkos(LAMMPS *lmp, int narg, char **a } this->id_temp = utils::strdup(std::string(this->id)+"_temp"); - this->modify->add_compute(fmt::format("{} all temp/deform/kk",this->id_temp)); + this->modify->add_compute(fmt::format("{} {} temp/deform/kk",id_temp,group->names[igroup])); this->tcomputeflag = 1; this->nondeformbias = 0; } From 2fdf0ae3b34877de44e72498e8fb8be3e9223296 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 25 Jan 2023 14:11:49 -0700 Subject: [PATCH 4/4] Add this --- src/KOKKOS/fix_nvt_sllod_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/fix_nvt_sllod_kokkos.cpp b/src/KOKKOS/fix_nvt_sllod_kokkos.cpp index fbec3816bc..69ffdcd684 100644 --- a/src/KOKKOS/fix_nvt_sllod_kokkos.cpp +++ b/src/KOKKOS/fix_nvt_sllod_kokkos.cpp @@ -67,7 +67,7 @@ FixNVTSllodKokkos::FixNVTSllodKokkos(LAMMPS *lmp, int narg, char **a } this->id_temp = utils::strdup(std::string(this->id)+"_temp"); - this->modify->add_compute(fmt::format("{} {} temp/deform/kk",id_temp,group->names[igroup])); + this->modify->add_compute(fmt::format("{} {} temp/deform/kk",this->id_temp,this->group->names[this->igroup])); this->tcomputeflag = 1; this->nondeformbias = 0; }