Merge pull request #354 from stanmoore1/kokkos_bugfixes

Kokkos bugfixes
This commit is contained in:
sjplimp 2017-01-26 13:51:47 -07:00 committed by GitHub
commit 18e5584311
2 changed files with 14 additions and 7 deletions

View File

@ -402,7 +402,6 @@ void DomainKokkos::pbc()
void DomainKokkos::remap_all() void DomainKokkos::remap_all()
{ {
atomKK->sync(Device,X_MASK | IMAGE_MASK); atomKK->sync(Device,X_MASK | IMAGE_MASK);
atomKK->modified(Device,X_MASK | IMAGE_MASK);
x = atomKK->k_x.view<LMPDeviceType>(); x = atomKK->k_x.view<LMPDeviceType>();
image = atomKK->k_image.view<LMPDeviceType>(); image = atomKK->k_image.view<LMPDeviceType>();
@ -428,6 +427,8 @@ void DomainKokkos::remap_all()
LMPDeviceType::fence(); LMPDeviceType::fence();
copymode = 0; copymode = 0;
atomKK->modified(Device,X_MASK | IMAGE_MASK);
if (triclinic) lamda2x(nlocal); if (triclinic) lamda2x(nlocal);
} }
@ -521,7 +522,6 @@ void DomainKokkos::image_flip(int m_in, int n_in, int p_in)
p_flip = p_in; p_flip = p_in;
atomKK->sync(Device,IMAGE_MASK); atomKK->sync(Device,IMAGE_MASK);
atomKK->modified(Device,IMAGE_MASK);
image = atomKK->k_image.view<LMPDeviceType>(); image = atomKK->k_image.view<LMPDeviceType>();
int nlocal = atomKK->nlocal; int nlocal = atomKK->nlocal;
@ -530,6 +530,8 @@ void DomainKokkos::image_flip(int m_in, int n_in, int p_in)
Kokkos::parallel_for(Kokkos::RangePolicy<LMPDeviceType, TagDomain_image_flip>(0,nlocal),*this); Kokkos::parallel_for(Kokkos::RangePolicy<LMPDeviceType, TagDomain_image_flip>(0,nlocal),*this);
LMPDeviceType::fence(); LMPDeviceType::fence();
copymode = 0; copymode = 0;
atomKK->modified(Device,IMAGE_MASK);
} }
KOKKOS_INLINE_FUNCTION KOKKOS_INLINE_FUNCTION
@ -554,7 +556,6 @@ void DomainKokkos::operator()(TagDomain_image_flip, const int &i) const {
void DomainKokkos::lamda2x(int n) void DomainKokkos::lamda2x(int n)
{ {
atomKK->sync(Device,X_MASK); atomKK->sync(Device,X_MASK);
atomKK->modified(Device,X_MASK);
x = atomKK->k_x.view<LMPDeviceType>(); x = atomKK->k_x.view<LMPDeviceType>();
@ -562,6 +563,8 @@ void DomainKokkos::lamda2x(int n)
Kokkos::parallel_for(Kokkos::RangePolicy<LMPDeviceType, TagDomain_lamda2x>(0,n),*this); Kokkos::parallel_for(Kokkos::RangePolicy<LMPDeviceType, TagDomain_lamda2x>(0,n),*this);
LMPDeviceType::fence(); LMPDeviceType::fence();
copymode = 0; copymode = 0;
atomKK->modified(Device,X_MASK);
} }
KOKKOS_INLINE_FUNCTION KOKKOS_INLINE_FUNCTION
@ -579,7 +582,6 @@ void DomainKokkos::operator()(TagDomain_lamda2x, const int &i) const {
void DomainKokkos::x2lamda(int n) void DomainKokkos::x2lamda(int n)
{ {
atomKK->sync(Device,X_MASK); atomKK->sync(Device,X_MASK);
atomKK->modified(Device,X_MASK);
x = atomKK->k_x.view<LMPDeviceType>(); x = atomKK->k_x.view<LMPDeviceType>();
@ -587,6 +589,8 @@ void DomainKokkos::x2lamda(int n)
Kokkos::parallel_for(Kokkos::RangePolicy<LMPDeviceType, TagDomain_x2lamda>(0,n),*this); Kokkos::parallel_for(Kokkos::RangePolicy<LMPDeviceType, TagDomain_x2lamda>(0,n),*this);
LMPDeviceType::fence(); LMPDeviceType::fence();
copymode = 0; copymode = 0;
atomKK->modified(Device,X_MASK);
} }
KOKKOS_INLINE_FUNCTION KOKKOS_INLINE_FUNCTION

View File

@ -177,11 +177,12 @@ void FixLangevinKokkos<DeviceType>::post_force(int vflag)
// account for bias velocity // account for bias velocity
if(tbiasflag == BIAS){ if(tbiasflag == BIAS){
atomKK->sync(temperature->execution_space,temperature->datamask_read);
temperature->compute_scalar(); temperature->compute_scalar();
temperature->remove_bias_all(); // modifies velocities temperature->remove_bias_all(); // modifies velocities
// if temeprature compute is kokkosized host-devcie comm won't be needed // if temeprature compute is kokkosized host-devcie comm won't be needed
atomKK->modified(Host,V_MASK); atomKK->modified(temperature->execution_space,temperature->datamask_modify);
atomKK->sync(execution_space,V_MASK); atomKK->sync(execution_space,temperature->datamask_modify);
} }
// compute langevin force in parallel on the device // compute langevin force in parallel on the device
@ -508,8 +509,10 @@ void FixLangevinKokkos<DeviceType>::post_force(int vflag)
DeviceType::fence(); DeviceType::fence();
if(tbiasflag == BIAS){ if(tbiasflag == BIAS){
atomKK->sync(temperature->execution_space,temperature->datamask_read);
temperature->restore_bias_all(); // modifies velocities temperature->restore_bias_all(); // modifies velocities
atomKK->modified(Host,V_MASK); atomKK->modified(temperature->execution_space,temperature->datamask_modify);
atomKK->sync(execution_space,temperature->datamask_modify);
} }
// set modify flags for the views modified in post_force functor // set modify flags for the views modified in post_force functor