Fixing auto_sync logic bug in modify_kokkos
This commit is contained in:
@ -44,17 +44,19 @@ void ModifyKokkos::setup(int vflag)
|
|||||||
if (update->whichflag == 1)
|
if (update->whichflag == 1)
|
||||||
for (int i = 0; i < nfix; i++) {
|
for (int i = 0; i < nfix; i++) {
|
||||||
atomKK->sync(fix[i]->execution_space,fix[i]->datamask_read);
|
atomKK->sync(fix[i]->execution_space,fix[i]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[i]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[i]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[i]->setup(vflag);
|
fix[i]->setup(vflag);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[i]->execution_space,fix[i]->datamask_modify);
|
atomKK->modified(fix[i]->execution_space,fix[i]->datamask_modify);
|
||||||
}
|
}
|
||||||
else if (update->whichflag == 2)
|
else if (update->whichflag == 2)
|
||||||
for (int i = 0; i < nfix; i++) {
|
for (int i = 0; i < nfix; i++) {
|
||||||
atomKK->sync(fix[i]->execution_space,fix[i]->datamask_read);
|
atomKK->sync(fix[i]->execution_space,fix[i]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[i]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[i]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[i]->min_setup(vflag);
|
fix[i]->min_setup(vflag);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[i]->execution_space,fix[i]->datamask_modify);
|
atomKK->modified(fix[i]->execution_space,fix[i]->datamask_modify);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -70,9 +72,10 @@ void ModifyKokkos::setup_pre_exchange()
|
|||||||
for (int i = 0; i < n_pre_exchange; i++) {
|
for (int i = 0; i < n_pre_exchange; i++) {
|
||||||
atomKK->sync(fix[list_pre_exchange[i]]->execution_space,
|
atomKK->sync(fix[list_pre_exchange[i]]->execution_space,
|
||||||
fix[list_pre_exchange[i]]->datamask_read);
|
fix[list_pre_exchange[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_pre_exchange[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_pre_exchange[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_pre_exchange[i]]->setup_pre_exchange();
|
fix[list_pre_exchange[i]]->setup_pre_exchange();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_pre_exchange[i]]->execution_space,
|
atomKK->modified(fix[list_pre_exchange[i]]->execution_space,
|
||||||
fix[list_pre_exchange[i]]->datamask_modify);
|
fix[list_pre_exchange[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -80,9 +83,10 @@ void ModifyKokkos::setup_pre_exchange()
|
|||||||
for (int i = 0; i < n_min_pre_exchange; i++) {
|
for (int i = 0; i < n_min_pre_exchange; i++) {
|
||||||
atomKK->sync(fix[list_min_pre_exchange[i]]->execution_space,
|
atomKK->sync(fix[list_min_pre_exchange[i]]->execution_space,
|
||||||
fix[list_min_pre_exchange[i]]->datamask_read);
|
fix[list_min_pre_exchange[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_min_pre_exchange[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_min_pre_exchange[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_min_pre_exchange[i]]->setup_pre_exchange();
|
fix[list_min_pre_exchange[i]]->setup_pre_exchange();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_min_pre_exchange[i]]->execution_space,
|
atomKK->modified(fix[list_min_pre_exchange[i]]->execution_space,
|
||||||
fix[list_min_pre_exchange[i]]->datamask_modify);
|
fix[list_min_pre_exchange[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -99,9 +103,10 @@ void ModifyKokkos::setup_pre_neighbor()
|
|||||||
for (int i = 0; i < n_pre_neighbor; i++) {
|
for (int i = 0; i < n_pre_neighbor; i++) {
|
||||||
atomKK->sync(fix[list_pre_neighbor[i]]->execution_space,
|
atomKK->sync(fix[list_pre_neighbor[i]]->execution_space,
|
||||||
fix[list_pre_neighbor[i]]->datamask_read);
|
fix[list_pre_neighbor[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_pre_neighbor[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_pre_neighbor[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_pre_neighbor[i]]->setup_pre_neighbor();
|
fix[list_pre_neighbor[i]]->setup_pre_neighbor();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_pre_neighbor[i]]->execution_space,
|
atomKK->modified(fix[list_pre_neighbor[i]]->execution_space,
|
||||||
fix[list_pre_neighbor[i]]->datamask_modify);
|
fix[list_pre_neighbor[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -109,9 +114,10 @@ void ModifyKokkos::setup_pre_neighbor()
|
|||||||
for (int i = 0; i < n_min_pre_neighbor; i++) {
|
for (int i = 0; i < n_min_pre_neighbor; i++) {
|
||||||
atomKK->sync(fix[list_min_pre_neighbor[i]]->execution_space,
|
atomKK->sync(fix[list_min_pre_neighbor[i]]->execution_space,
|
||||||
fix[list_min_pre_neighbor[i]]->datamask_read);
|
fix[list_min_pre_neighbor[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_min_pre_neighbor[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_min_pre_neighbor[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_min_pre_neighbor[i]]->setup_pre_neighbor();
|
fix[list_min_pre_neighbor[i]]->setup_pre_neighbor();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_min_pre_neighbor[i]]->execution_space,
|
atomKK->modified(fix[list_min_pre_neighbor[i]]->execution_space,
|
||||||
fix[list_min_pre_neighbor[i]]->datamask_modify);
|
fix[list_min_pre_neighbor[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -128,9 +134,10 @@ void ModifyKokkos::setup_pre_force(int vflag)
|
|||||||
for (int i = 0; i < n_pre_force; i++) {
|
for (int i = 0; i < n_pre_force; i++) {
|
||||||
atomKK->sync(fix[list_pre_force[i]]->execution_space,
|
atomKK->sync(fix[list_pre_force[i]]->execution_space,
|
||||||
fix[list_pre_force[i]]->datamask_read);
|
fix[list_pre_force[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_pre_force[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_pre_force[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_pre_force[i]]->setup_pre_force(vflag);
|
fix[list_pre_force[i]]->setup_pre_force(vflag);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_pre_force[i]]->execution_space,
|
atomKK->modified(fix[list_pre_force[i]]->execution_space,
|
||||||
fix[list_pre_force[i]]->datamask_modify);
|
fix[list_pre_force[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -138,9 +145,10 @@ void ModifyKokkos::setup_pre_force(int vflag)
|
|||||||
for (int i = 0; i < n_min_pre_force; i++) {
|
for (int i = 0; i < n_min_pre_force; i++) {
|
||||||
atomKK->sync(fix[list_min_pre_force[i]]->execution_space,
|
atomKK->sync(fix[list_min_pre_force[i]]->execution_space,
|
||||||
fix[list_min_pre_force[i]]->datamask_read);
|
fix[list_min_pre_force[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_min_pre_force[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_min_pre_force[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_min_pre_force[i]]->setup_pre_force(vflag);
|
fix[list_min_pre_force[i]]->setup_pre_force(vflag);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_min_pre_force[i]]->execution_space,
|
atomKK->modified(fix[list_min_pre_force[i]]->execution_space,
|
||||||
fix[list_min_pre_force[i]]->datamask_modify);
|
fix[list_min_pre_force[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -157,9 +165,10 @@ void ModifyKokkos::setup_pre_reverse(int eflag, int vflag)
|
|||||||
for (int i = 0; i < n_pre_reverse; i++) {
|
for (int i = 0; i < n_pre_reverse; i++) {
|
||||||
atomKK->sync(fix[list_pre_reverse[i]]->execution_space,
|
atomKK->sync(fix[list_pre_reverse[i]]->execution_space,
|
||||||
fix[list_pre_reverse[i]]->datamask_read);
|
fix[list_pre_reverse[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_pre_reverse[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_pre_reverse[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_pre_reverse[i]]->setup_pre_reverse(eflag,vflag);
|
fix[list_pre_reverse[i]]->setup_pre_reverse(eflag,vflag);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_pre_reverse[i]]->execution_space,
|
atomKK->modified(fix[list_pre_reverse[i]]->execution_space,
|
||||||
fix[list_pre_reverse[i]]->datamask_modify);
|
fix[list_pre_reverse[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -167,9 +176,10 @@ void ModifyKokkos::setup_pre_reverse(int eflag, int vflag)
|
|||||||
for (int i = 0; i < n_min_pre_reverse; i++) {
|
for (int i = 0; i < n_min_pre_reverse; i++) {
|
||||||
atomKK->sync(fix[list_min_pre_reverse[i]]->execution_space,
|
atomKK->sync(fix[list_min_pre_reverse[i]]->execution_space,
|
||||||
fix[list_min_pre_reverse[i]]->datamask_read);
|
fix[list_min_pre_reverse[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_min_pre_reverse[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_min_pre_reverse[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_min_pre_reverse[i]]->setup_pre_reverse(eflag,vflag);
|
fix[list_min_pre_reverse[i]]->setup_pre_reverse(eflag,vflag);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_min_pre_reverse[i]]->execution_space,
|
atomKK->modified(fix[list_min_pre_reverse[i]]->execution_space,
|
||||||
fix[list_min_pre_reverse[i]]->datamask_modify);
|
fix[list_min_pre_reverse[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -184,9 +194,10 @@ void ModifyKokkos::initial_integrate(int vflag)
|
|||||||
for (int i = 0; i < n_initial_integrate; i++) {
|
for (int i = 0; i < n_initial_integrate; i++) {
|
||||||
atomKK->sync(fix[list_initial_integrate[i]]->execution_space,
|
atomKK->sync(fix[list_initial_integrate[i]]->execution_space,
|
||||||
fix[list_initial_integrate[i]]->datamask_read);
|
fix[list_initial_integrate[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_initial_integrate[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_initial_integrate[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_initial_integrate[i]]->initial_integrate(vflag);
|
fix[list_initial_integrate[i]]->initial_integrate(vflag);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_initial_integrate[i]]->execution_space,
|
atomKK->modified(fix[list_initial_integrate[i]]->execution_space,
|
||||||
fix[list_initial_integrate[i]]->datamask_modify);
|
fix[list_initial_integrate[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -201,9 +212,10 @@ void ModifyKokkos::post_integrate()
|
|||||||
for (int i = 0; i < n_post_integrate; i++) {
|
for (int i = 0; i < n_post_integrate; i++) {
|
||||||
atomKK->sync(fix[list_post_integrate[i]]->execution_space,
|
atomKK->sync(fix[list_post_integrate[i]]->execution_space,
|
||||||
fix[list_post_integrate[i]]->datamask_read);
|
fix[list_post_integrate[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_post_integrate[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_post_integrate[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_post_integrate[i]]->post_integrate();
|
fix[list_post_integrate[i]]->post_integrate();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_post_integrate[i]]->execution_space,
|
atomKK->modified(fix[list_post_integrate[i]]->execution_space,
|
||||||
fix[list_post_integrate[i]]->datamask_modify);
|
fix[list_post_integrate[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -218,9 +230,10 @@ void ModifyKokkos::pre_exchange()
|
|||||||
for (int i = 0; i < n_pre_exchange; i++) {
|
for (int i = 0; i < n_pre_exchange; i++) {
|
||||||
atomKK->sync(fix[list_pre_exchange[i]]->execution_space,
|
atomKK->sync(fix[list_pre_exchange[i]]->execution_space,
|
||||||
fix[list_pre_exchange[i]]->datamask_read);
|
fix[list_pre_exchange[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_pre_exchange[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_pre_exchange[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_pre_exchange[i]]->pre_exchange();
|
fix[list_pre_exchange[i]]->pre_exchange();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_pre_exchange[i]]->execution_space,
|
atomKK->modified(fix[list_pre_exchange[i]]->execution_space,
|
||||||
fix[list_pre_exchange[i]]->datamask_modify);
|
fix[list_pre_exchange[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -235,9 +248,10 @@ void ModifyKokkos::pre_neighbor()
|
|||||||
for (int i = 0; i < n_pre_neighbor; i++) {
|
for (int i = 0; i < n_pre_neighbor; i++) {
|
||||||
atomKK->sync(fix[list_pre_neighbor[i]]->execution_space,
|
atomKK->sync(fix[list_pre_neighbor[i]]->execution_space,
|
||||||
fix[list_pre_neighbor[i]]->datamask_read);
|
fix[list_pre_neighbor[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_pre_neighbor[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_pre_neighbor[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_pre_neighbor[i]]->pre_neighbor();
|
fix[list_pre_neighbor[i]]->pre_neighbor();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_pre_neighbor[i]]->execution_space,
|
atomKK->modified(fix[list_pre_neighbor[i]]->execution_space,
|
||||||
fix[list_pre_neighbor[i]]->datamask_modify);
|
fix[list_pre_neighbor[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -252,9 +266,10 @@ void ModifyKokkos::pre_force(int vflag)
|
|||||||
for (int i = 0; i < n_pre_force; i++) {
|
for (int i = 0; i < n_pre_force; i++) {
|
||||||
atomKK->sync(fix[list_pre_force[i]]->execution_space,
|
atomKK->sync(fix[list_pre_force[i]]->execution_space,
|
||||||
fix[list_pre_force[i]]->datamask_read);
|
fix[list_pre_force[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_pre_force[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_pre_force[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_pre_force[i]]->pre_force(vflag);
|
fix[list_pre_force[i]]->pre_force(vflag);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_pre_force[i]]->execution_space,
|
atomKK->modified(fix[list_pre_force[i]]->execution_space,
|
||||||
fix[list_pre_force[i]]->datamask_modify);
|
fix[list_pre_force[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -269,9 +284,10 @@ void ModifyKokkos::pre_reverse(int eflag, int vflag)
|
|||||||
for (int i = 0; i < n_pre_reverse; i++) {
|
for (int i = 0; i < n_pre_reverse; i++) {
|
||||||
atomKK->sync(fix[list_pre_reverse[i]]->execution_space,
|
atomKK->sync(fix[list_pre_reverse[i]]->execution_space,
|
||||||
fix[list_pre_reverse[i]]->datamask_read);
|
fix[list_pre_reverse[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_pre_reverse[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_pre_reverse[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_pre_reverse[i]]->pre_reverse(eflag,vflag);
|
fix[list_pre_reverse[i]]->pre_reverse(eflag,vflag);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_pre_reverse[i]]->execution_space,
|
atomKK->modified(fix[list_pre_reverse[i]]->execution_space,
|
||||||
fix[list_pre_reverse[i]]->datamask_modify);
|
fix[list_pre_reverse[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -286,9 +302,10 @@ void ModifyKokkos::post_force(int vflag)
|
|||||||
for (int i = 0; i < n_post_force; i++) {
|
for (int i = 0; i < n_post_force; i++) {
|
||||||
atomKK->sync(fix[list_post_force[i]]->execution_space,
|
atomKK->sync(fix[list_post_force[i]]->execution_space,
|
||||||
fix[list_post_force[i]]->datamask_read);
|
fix[list_post_force[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_post_force[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_post_force[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_post_force[i]]->post_force(vflag);
|
fix[list_post_force[i]]->post_force(vflag);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_post_force[i]]->execution_space,
|
atomKK->modified(fix[list_post_force[i]]->execution_space,
|
||||||
fix[list_post_force[i]]->datamask_modify);
|
fix[list_post_force[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -303,9 +320,10 @@ void ModifyKokkos::final_integrate()
|
|||||||
for (int i = 0; i < n_final_integrate; i++) {
|
for (int i = 0; i < n_final_integrate; i++) {
|
||||||
atomKK->sync(fix[list_final_integrate[i]]->execution_space,
|
atomKK->sync(fix[list_final_integrate[i]]->execution_space,
|
||||||
fix[list_final_integrate[i]]->datamask_read);
|
fix[list_final_integrate[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_final_integrate[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_final_integrate[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_final_integrate[i]]->final_integrate();
|
fix[list_final_integrate[i]]->final_integrate();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_final_integrate[i]]->execution_space,
|
atomKK->modified(fix[list_final_integrate[i]]->execution_space,
|
||||||
fix[list_final_integrate[i]]->datamask_modify);
|
fix[list_final_integrate[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -322,9 +340,10 @@ void ModifyKokkos::end_of_step()
|
|||||||
if (update->ntimestep % end_of_step_every[i] == 0) {
|
if (update->ntimestep % end_of_step_every[i] == 0) {
|
||||||
atomKK->sync(fix[list_end_of_step[i]]->execution_space,
|
atomKK->sync(fix[list_end_of_step[i]]->execution_space,
|
||||||
fix[list_end_of_step[i]]->datamask_read);
|
fix[list_end_of_step[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_end_of_step[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_end_of_step[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_end_of_step[i]]->end_of_step();
|
fix[list_end_of_step[i]]->end_of_step();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_end_of_step[i]]->execution_space,
|
atomKK->modified(fix[list_end_of_step[i]]->execution_space,
|
||||||
fix[list_end_of_step[i]]->datamask_modify);
|
fix[list_end_of_step[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -342,9 +361,10 @@ double ModifyKokkos::thermo_energy()
|
|||||||
for (int i = 0; i < n_thermo_energy; i++) {
|
for (int i = 0; i < n_thermo_energy; i++) {
|
||||||
atomKK->sync(fix[list_thermo_energy[i]]->execution_space,
|
atomKK->sync(fix[list_thermo_energy[i]]->execution_space,
|
||||||
fix[list_thermo_energy[i]]->datamask_read);
|
fix[list_thermo_energy[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_thermo_energy[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_thermo_energy[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
energy += fix[list_thermo_energy[i]]->compute_scalar();
|
energy += fix[list_thermo_energy[i]]->compute_scalar();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_thermo_energy[i]]->execution_space,
|
atomKK->modified(fix[list_thermo_energy[i]]->execution_space,
|
||||||
fix[list_thermo_energy[i]]->datamask_modify);
|
fix[list_thermo_energy[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -375,9 +395,10 @@ void ModifyKokkos::setup_pre_force_respa(int vflag, int ilevel)
|
|||||||
for (int i = 0; i < n_pre_force; i++) {
|
for (int i = 0; i < n_pre_force; i++) {
|
||||||
atomKK->sync(fix[list_pre_force[i]]->execution_space,
|
atomKK->sync(fix[list_pre_force[i]]->execution_space,
|
||||||
fix[list_pre_force[i]]->datamask_read);
|
fix[list_pre_force[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_pre_force[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_pre_force[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_pre_force[i]]->setup_pre_force_respa(vflag,ilevel);
|
fix[list_pre_force[i]]->setup_pre_force_respa(vflag,ilevel);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_pre_force[i]]->execution_space,
|
atomKK->modified(fix[list_pre_force[i]]->execution_space,
|
||||||
fix[list_pre_force[i]]->datamask_modify);
|
fix[list_pre_force[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -392,10 +413,11 @@ void ModifyKokkos::initial_integrate_respa(int vflag, int ilevel, int iloop)
|
|||||||
for (int i = 0; i < n_initial_integrate_respa; i++) {
|
for (int i = 0; i < n_initial_integrate_respa; i++) {
|
||||||
atomKK->sync(fix[list_initial_integrate_respa[i]]->execution_space,
|
atomKK->sync(fix[list_initial_integrate_respa[i]]->execution_space,
|
||||||
fix[list_initial_integrate_respa[i]]->datamask_read);
|
fix[list_initial_integrate_respa[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_initial_integrate_respa[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_initial_integrate_respa[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_initial_integrate_respa[i]]->
|
fix[list_initial_integrate_respa[i]]->
|
||||||
initial_integrate_respa(vflag,ilevel,iloop);
|
initial_integrate_respa(vflag,ilevel,iloop);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_initial_integrate_respa[i]]->execution_space,
|
atomKK->modified(fix[list_initial_integrate_respa[i]]->execution_space,
|
||||||
fix[list_initial_integrate_respa[i]]->datamask_modify);
|
fix[list_initial_integrate_respa[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -410,9 +432,10 @@ void ModifyKokkos::post_integrate_respa(int ilevel, int iloop)
|
|||||||
for (int i = 0; i < n_post_integrate_respa; i++) {
|
for (int i = 0; i < n_post_integrate_respa; i++) {
|
||||||
atomKK->sync(fix[list_post_integrate_respa[i]]->execution_space,
|
atomKK->sync(fix[list_post_integrate_respa[i]]->execution_space,
|
||||||
fix[list_post_integrate_respa[i]]->datamask_read);
|
fix[list_post_integrate_respa[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_post_integrate_respa[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_post_integrate_respa[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_post_integrate_respa[i]]->post_integrate_respa(ilevel,iloop);
|
fix[list_post_integrate_respa[i]]->post_integrate_respa(ilevel,iloop);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_post_integrate_respa[i]]->execution_space,
|
atomKK->modified(fix[list_post_integrate_respa[i]]->execution_space,
|
||||||
fix[list_post_integrate_respa[i]]->datamask_modify);
|
fix[list_post_integrate_respa[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -427,9 +450,10 @@ void ModifyKokkos::pre_force_respa(int vflag, int ilevel, int iloop)
|
|||||||
for (int i = 0; i < n_pre_force_respa; i++) {
|
for (int i = 0; i < n_pre_force_respa; i++) {
|
||||||
atomKK->sync(fix[list_pre_force_respa[i]]->execution_space,
|
atomKK->sync(fix[list_pre_force_respa[i]]->execution_space,
|
||||||
fix[list_pre_force_respa[i]]->datamask_read);
|
fix[list_pre_force_respa[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_pre_force_respa[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_pre_force_respa[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_pre_force_respa[i]]->pre_force_respa(vflag,ilevel,iloop);
|
fix[list_pre_force_respa[i]]->pre_force_respa(vflag,ilevel,iloop);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_pre_force_respa[i]]->execution_space,
|
atomKK->modified(fix[list_pre_force_respa[i]]->execution_space,
|
||||||
fix[list_pre_force_respa[i]]->datamask_modify);
|
fix[list_pre_force_respa[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -444,9 +468,10 @@ void ModifyKokkos::post_force_respa(int vflag, int ilevel, int iloop)
|
|||||||
for (int i = 0; i < n_post_force_respa; i++) {
|
for (int i = 0; i < n_post_force_respa; i++) {
|
||||||
atomKK->sync(fix[list_post_force_respa[i]]->execution_space,
|
atomKK->sync(fix[list_post_force_respa[i]]->execution_space,
|
||||||
fix[list_post_force_respa[i]]->datamask_read);
|
fix[list_post_force_respa[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_post_force_respa[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_post_force_respa[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_post_force_respa[i]]->post_force_respa(vflag,ilevel,iloop);
|
fix[list_post_force_respa[i]]->post_force_respa(vflag,ilevel,iloop);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_post_force_respa[i]]->execution_space,
|
atomKK->modified(fix[list_post_force_respa[i]]->execution_space,
|
||||||
fix[list_post_force_respa[i]]->datamask_modify);
|
fix[list_post_force_respa[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -461,9 +486,10 @@ void ModifyKokkos::final_integrate_respa(int ilevel, int iloop)
|
|||||||
for (int i = 0; i < n_final_integrate_respa; i++) {
|
for (int i = 0; i < n_final_integrate_respa; i++) {
|
||||||
atomKK->sync(fix[list_final_integrate_respa[i]]->execution_space,
|
atomKK->sync(fix[list_final_integrate_respa[i]]->execution_space,
|
||||||
fix[list_final_integrate_respa[i]]->datamask_read);
|
fix[list_final_integrate_respa[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_final_integrate_respa[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_final_integrate_respa[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_final_integrate_respa[i]]->final_integrate_respa(ilevel,iloop);
|
fix[list_final_integrate_respa[i]]->final_integrate_respa(ilevel,iloop);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_final_integrate_respa[i]]->execution_space,
|
atomKK->modified(fix[list_final_integrate_respa[i]]->execution_space,
|
||||||
fix[list_final_integrate_respa[i]]->datamask_modify);
|
fix[list_final_integrate_respa[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -478,9 +504,10 @@ void ModifyKokkos::min_pre_exchange()
|
|||||||
for (int i = 0; i < n_min_pre_exchange; i++) {
|
for (int i = 0; i < n_min_pre_exchange; i++) {
|
||||||
atomKK->sync(fix[list_min_pre_exchange[i]]->execution_space,
|
atomKK->sync(fix[list_min_pre_exchange[i]]->execution_space,
|
||||||
fix[list_min_pre_exchange[i]]->datamask_read);
|
fix[list_min_pre_exchange[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_min_pre_exchange[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_min_pre_exchange[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_min_pre_exchange[i]]->min_pre_exchange();
|
fix[list_min_pre_exchange[i]]->min_pre_exchange();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_min_pre_exchange[i]]->execution_space,
|
atomKK->modified(fix[list_min_pre_exchange[i]]->execution_space,
|
||||||
fix[list_min_pre_exchange[i]]->datamask_modify);
|
fix[list_min_pre_exchange[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -495,9 +522,10 @@ void ModifyKokkos::min_pre_neighbor()
|
|||||||
for (int i = 0; i < n_min_pre_neighbor; i++) {
|
for (int i = 0; i < n_min_pre_neighbor; i++) {
|
||||||
atomKK->sync(fix[list_min_pre_neighbor[i]]->execution_space,
|
atomKK->sync(fix[list_min_pre_neighbor[i]]->execution_space,
|
||||||
fix[list_min_pre_neighbor[i]]->datamask_read);
|
fix[list_min_pre_neighbor[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_min_pre_neighbor[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_min_pre_neighbor[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_min_pre_neighbor[i]]->min_pre_neighbor();
|
fix[list_min_pre_neighbor[i]]->min_pre_neighbor();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_min_pre_neighbor[i]]->execution_space,
|
atomKK->modified(fix[list_min_pre_neighbor[i]]->execution_space,
|
||||||
fix[list_min_pre_neighbor[i]]->datamask_modify);
|
fix[list_min_pre_neighbor[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -512,9 +540,10 @@ void ModifyKokkos::min_pre_force(int vflag)
|
|||||||
for (int i = 0; i < n_min_pre_force; i++) {
|
for (int i = 0; i < n_min_pre_force; i++) {
|
||||||
atomKK->sync(fix[list_min_pre_force[i]]->execution_space,
|
atomKK->sync(fix[list_min_pre_force[i]]->execution_space,
|
||||||
fix[list_min_pre_force[i]]->datamask_read);
|
fix[list_min_pre_force[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_min_pre_force[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_min_pre_force[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_min_pre_force[i]]->min_pre_force(vflag);
|
fix[list_min_pre_force[i]]->min_pre_force(vflag);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_min_pre_force[i]]->execution_space,
|
atomKK->modified(fix[list_min_pre_force[i]]->execution_space,
|
||||||
fix[list_min_pre_force[i]]->datamask_modify);
|
fix[list_min_pre_force[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -529,9 +558,10 @@ void ModifyKokkos::min_pre_reverse(int eflag, int vflag)
|
|||||||
for (int i = 0; i < n_min_pre_reverse; i++) {
|
for (int i = 0; i < n_min_pre_reverse; i++) {
|
||||||
atomKK->sync(fix[list_min_pre_reverse[i]]->execution_space,
|
atomKK->sync(fix[list_min_pre_reverse[i]]->execution_space,
|
||||||
fix[list_min_pre_reverse[i]]->datamask_read);
|
fix[list_min_pre_reverse[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_min_pre_reverse[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_min_pre_reverse[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_min_pre_reverse[i]]->min_pre_reverse(eflag,vflag);
|
fix[list_min_pre_reverse[i]]->min_pre_reverse(eflag,vflag);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_min_pre_reverse[i]]->execution_space,
|
atomKK->modified(fix[list_min_pre_reverse[i]]->execution_space,
|
||||||
fix[list_min_pre_reverse[i]]->datamask_modify);
|
fix[list_min_pre_reverse[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -546,9 +576,10 @@ void ModifyKokkos::min_post_force(int vflag)
|
|||||||
for (int i = 0; i < n_min_post_force; i++) {
|
for (int i = 0; i < n_min_post_force; i++) {
|
||||||
atomKK->sync(fix[list_min_post_force[i]]->execution_space,
|
atomKK->sync(fix[list_min_post_force[i]]->execution_space,
|
||||||
fix[list_min_post_force[i]]->datamask_read);
|
fix[list_min_post_force[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_min_post_force[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_min_post_force[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_min_post_force[i]]->min_post_force(vflag);
|
fix[list_min_post_force[i]]->min_post_force(vflag);
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_min_post_force[i]]->execution_space,
|
atomKK->modified(fix[list_min_post_force[i]]->execution_space,
|
||||||
fix[list_min_post_force[i]]->datamask_modify);
|
fix[list_min_post_force[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -568,10 +599,11 @@ double ModifyKokkos::min_energy(double *fextra)
|
|||||||
for (int i = 0; i < n_min_energy; i++) {
|
for (int i = 0; i < n_min_energy; i++) {
|
||||||
ifix = list_min_energy[i];
|
ifix = list_min_energy[i];
|
||||||
atomKK->sync(fix[ifix]->execution_space,fix[ifix]->datamask_read);
|
atomKK->sync(fix[ifix]->execution_space,fix[ifix]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[ifix]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[ifix]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
eng += fix[ifix]->min_energy(&fextra[index]);
|
eng += fix[ifix]->min_energy(&fextra[index]);
|
||||||
index += fix[ifix]->min_dof();
|
index += fix[ifix]->min_dof();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[ifix]->execution_space,fix[ifix]->datamask_modify);
|
atomKK->modified(fix[ifix]->execution_space,fix[ifix]->datamask_modify);
|
||||||
}
|
}
|
||||||
return eng;
|
return eng;
|
||||||
@ -586,9 +618,10 @@ void ModifyKokkos::min_store()
|
|||||||
for (int i = 0; i < n_min_energy; i++) {
|
for (int i = 0; i < n_min_energy; i++) {
|
||||||
atomKK->sync(fix[list_min_energy[i]]->execution_space,
|
atomKK->sync(fix[list_min_energy[i]]->execution_space,
|
||||||
fix[list_min_energy[i]]->datamask_read);
|
fix[list_min_energy[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_min_energy[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_min_energy[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_min_energy[i]]->min_store();
|
fix[list_min_energy[i]]->min_store();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_min_energy[i]]->execution_space,
|
atomKK->modified(fix[list_min_energy[i]]->execution_space,
|
||||||
fix[list_min_energy[i]]->datamask_modify);
|
fix[list_min_energy[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -603,9 +636,10 @@ void ModifyKokkos::min_clearstore()
|
|||||||
for (int i = 0; i < n_min_energy; i++) {
|
for (int i = 0; i < n_min_energy; i++) {
|
||||||
atomKK->sync(fix[list_min_energy[i]]->execution_space,
|
atomKK->sync(fix[list_min_energy[i]]->execution_space,
|
||||||
fix[list_min_energy[i]]->datamask_read);
|
fix[list_min_energy[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_min_energy[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_min_energy[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_min_energy[i]]->min_clearstore();
|
fix[list_min_energy[i]]->min_clearstore();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_min_energy[i]]->execution_space,
|
atomKK->modified(fix[list_min_energy[i]]->execution_space,
|
||||||
fix[list_min_energy[i]]->datamask_modify);
|
fix[list_min_energy[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -616,9 +650,10 @@ void ModifyKokkos::min_pushstore()
|
|||||||
for (int i = 0; i < n_min_energy; i++) {
|
for (int i = 0; i < n_min_energy; i++) {
|
||||||
atomKK->sync(fix[list_min_energy[i]]->execution_space,
|
atomKK->sync(fix[list_min_energy[i]]->execution_space,
|
||||||
fix[list_min_energy[i]]->datamask_read);
|
fix[list_min_energy[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_min_energy[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_min_energy[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_min_energy[i]]->min_pushstore();
|
fix[list_min_energy[i]]->min_pushstore();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_min_energy[i]]->execution_space,
|
atomKK->modified(fix[list_min_energy[i]]->execution_space,
|
||||||
fix[list_min_energy[i]]->datamask_modify);
|
fix[list_min_energy[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -629,9 +664,10 @@ void ModifyKokkos::min_popstore()
|
|||||||
for (int i = 0; i < n_min_energy; i++) {
|
for (int i = 0; i < n_min_energy; i++) {
|
||||||
atomKK->sync(fix[list_min_energy[i]]->execution_space,
|
atomKK->sync(fix[list_min_energy[i]]->execution_space,
|
||||||
fix[list_min_energy[i]]->datamask_read);
|
fix[list_min_energy[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_min_energy[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_min_energy[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[list_min_energy[i]]->min_popstore();
|
fix[list_min_energy[i]]->min_popstore();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_min_energy[i]]->execution_space,
|
atomKK->modified(fix[list_min_energy[i]]->execution_space,
|
||||||
fix[list_min_energy[i]]->datamask_modify);
|
fix[list_min_energy[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -649,10 +685,11 @@ void ModifyKokkos::min_step(double alpha, double *hextra)
|
|||||||
for (int i = 0; i < n_min_energy; i++) {
|
for (int i = 0; i < n_min_energy; i++) {
|
||||||
ifix = list_min_energy[i];
|
ifix = list_min_energy[i];
|
||||||
atomKK->sync(fix[ifix]->execution_space,fix[ifix]->datamask_read);
|
atomKK->sync(fix[ifix]->execution_space,fix[ifix]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[ifix]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[ifix]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
fix[ifix]->min_step(alpha,&hextra[index]);
|
fix[ifix]->min_step(alpha,&hextra[index]);
|
||||||
index += fix[ifix]->min_dof();
|
index += fix[ifix]->min_dof();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[ifix]->execution_space,fix[ifix]->datamask_modify);
|
atomKK->modified(fix[ifix]->execution_space,fix[ifix]->datamask_modify);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -670,11 +707,12 @@ double ModifyKokkos::max_alpha(double *hextra)
|
|||||||
for (int i = 0; i < n_min_energy; i++) {
|
for (int i = 0; i < n_min_energy; i++) {
|
||||||
ifix = list_min_energy[i];
|
ifix = list_min_energy[i];
|
||||||
atomKK->sync(fix[ifix]->execution_space,fix[ifix]->datamask_read);
|
atomKK->sync(fix[ifix]->execution_space,fix[ifix]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[ifix]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[ifix]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
double alpha_one = fix[ifix]->max_alpha(&hextra[index]);
|
double alpha_one = fix[ifix]->max_alpha(&hextra[index]);
|
||||||
alpha = MIN(alpha,alpha_one);
|
alpha = MIN(alpha,alpha_one);
|
||||||
index += fix[ifix]->min_dof();
|
index += fix[ifix]->min_dof();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[ifix]->execution_space,fix[ifix]->datamask_modify);
|
atomKK->modified(fix[ifix]->execution_space,fix[ifix]->datamask_modify);
|
||||||
}
|
}
|
||||||
return alpha;
|
return alpha;
|
||||||
@ -690,9 +728,10 @@ int ModifyKokkos::min_dof()
|
|||||||
for (int i = 0; i < n_min_energy; i++) {
|
for (int i = 0; i < n_min_energy; i++) {
|
||||||
atomKK->sync(fix[list_min_energy[i]]->execution_space,
|
atomKK->sync(fix[list_min_energy[i]]->execution_space,
|
||||||
fix[list_min_energy[i]]->datamask_read);
|
fix[list_min_energy[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_min_energy[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_min_energy[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
ndof += fix[list_min_energy[i]]->min_dof();
|
ndof += fix[list_min_energy[i]]->min_dof();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
atomKK->modified(fix[list_min_energy[i]]->execution_space,
|
atomKK->modified(fix[list_min_energy[i]]->execution_space,
|
||||||
fix[list_min_energy[i]]->datamask_modify);
|
fix[list_min_energy[i]]->datamask_modify);
|
||||||
}
|
}
|
||||||
@ -710,9 +749,10 @@ int ModifyKokkos::min_reset_ref()
|
|||||||
for (int i = 0; i < n_min_energy; i++) {
|
for (int i = 0; i < n_min_energy; i++) {
|
||||||
atomKK->sync(fix[list_min_energy[i]]->execution_space,
|
atomKK->sync(fix[list_min_energy[i]]->execution_space,
|
||||||
fix[list_min_energy[i]]->datamask_read);
|
fix[list_min_energy[i]]->datamask_read);
|
||||||
|
int prev_auto_sync = lmp->kokkos->auto_sync;
|
||||||
if (!fix[list_min_energy[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
if (!fix[list_min_energy[i]]->kokkosable) lmp->kokkos->auto_sync = 1;
|
||||||
itmp = fix[list_min_energy[i]]->min_reset_ref();
|
itmp = fix[list_min_energy[i]]->min_reset_ref();
|
||||||
lmp->kokkos->auto_sync = 0;
|
lmp->kokkos->auto_sync = prev_auto_sync;
|
||||||
if (itmp) itmpall = 1;
|
if (itmp) itmpall = 1;
|
||||||
atomKK->modified(fix[list_min_energy[i]]->execution_space,
|
atomKK->modified(fix[list_min_energy[i]]->execution_space,
|
||||||
fix[list_min_energy[i]]->datamask_modify);
|
fix[list_min_energy[i]]->datamask_modify);
|
||||||
|
|||||||
Reference in New Issue
Block a user