Commit 557e5b96 authored by Stan Moore's avatar Stan Moore
Browse files

Fixing Kokkos execution space issue with regions

parent 633ca33f
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -89,8 +89,10 @@ void FixSetForceKokkos<DeviceType>::post_force(int vflag)
  if (iregion >= 0) {
    region = domain->regions[iregion];
    region->prematch();
    d_match = DAT::t_int_1d("setforce:d_match",nlocal);
    region->match_all_kokkos(groupbit,d_match);
    DAT::tdual_int_1d k_match = DAT::tdual_int_1d("setforce:k_match",nlocal);
    region->match_all_kokkos(groupbit,k_match);
    k_match.template sync<DeviceType>();
    d_match = k_match.template view<DeviceType>();
  }

  // reallocate sforce array if necessary
+2 −2
Original line number Diff line number Diff line
@@ -75,8 +75,8 @@ class FixSetForceKokkos : public FixSetForce {

 private:
  DAT::tdual_ffloat_2d k_sforce;
  DAT::t_ffloat_2d_randomread d_sforce;
  DAT::t_int_1d d_match;
  typename AT::t_ffloat_2d_randomread d_sforce;
  typename AT::t_int_1d d_match;

  typename AT::t_x_array_randomread x;
  typename AT::t_f_array f;

src/KOKKOS/out.txt

0 → 100644
+119 −0
Original line number Diff line number Diff line
atom_vec_angle_kokkos.cpp:    k_count.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:    if (mask & X_MASK) atomKK->k_x.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:    if (mask & V_MASK) atomKK->k_v.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:    if (mask & F_MASK) atomKK->k_f.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:    if (mask & TAG_MASK) atomKK->k_tag.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:    if (mask & TYPE_MASK) atomKK->k_type.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:    if (mask & MASK_MASK) atomKK->k_mask.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:    if (mask & IMAGE_MASK) atomKK->k_image.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:    if (mask & MOLECULE_MASK) atomKK->k_molecule.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:      atomKK->k_nspecial.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:      atomKK->k_special.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:      atomKK->k_num_bond.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:      atomKK->k_bond_type.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:      atomKK->k_bond_atom.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:      atomKK->k_num_angle.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:      atomKK->k_angle_type.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:      atomKK->k_angle_atom1.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:      atomKK->k_angle_atom2.modify<LMPDeviceType>();
atom_vec_angle_kokkos.cpp:      atomKK->k_angle_atom3.modify<LMPDeviceType>();
atom_vec_atomic_kokkos.cpp:    k_count.modify<LMPDeviceType>();
atom_vec_atomic_kokkos.cpp:    if (mask & X_MASK) atomKK->k_x.modify<LMPDeviceType>();
atom_vec_atomic_kokkos.cpp:    if (mask & V_MASK) atomKK->k_v.modify<LMPDeviceType>();
atom_vec_atomic_kokkos.cpp:    if (mask & F_MASK) atomKK->k_f.modify<LMPDeviceType>();
atom_vec_atomic_kokkos.cpp:    if (mask & TAG_MASK) atomKK->k_tag.modify<LMPDeviceType>();
atom_vec_atomic_kokkos.cpp:    if (mask & TYPE_MASK) atomKK->k_type.modify<LMPDeviceType>();
atom_vec_atomic_kokkos.cpp:    if (mask & MASK_MASK) atomKK->k_mask.modify<LMPDeviceType>();
atom_vec_atomic_kokkos.cpp:    if (mask & IMAGE_MASK) atomKK->k_image.modify<LMPDeviceType>();
atom_vec_bond_kokkos.cpp:    k_count.modify<LMPDeviceType>();
atom_vec_bond_kokkos.cpp:    if (mask & X_MASK) atomKK->k_x.modify<LMPDeviceType>();
atom_vec_bond_kokkos.cpp:    if (mask & V_MASK) atomKK->k_v.modify<LMPDeviceType>();
atom_vec_bond_kokkos.cpp:    if (mask & F_MASK) atomKK->k_f.modify<LMPDeviceType>();
atom_vec_bond_kokkos.cpp:    if (mask & TAG_MASK) atomKK->k_tag.modify<LMPDeviceType>();
atom_vec_bond_kokkos.cpp:    if (mask & TYPE_MASK) atomKK->k_type.modify<LMPDeviceType>();
atom_vec_bond_kokkos.cpp:    if (mask & MASK_MASK) atomKK->k_mask.modify<LMPDeviceType>();
atom_vec_bond_kokkos.cpp:    if (mask & IMAGE_MASK) atomKK->k_image.modify<LMPDeviceType>();
atom_vec_bond_kokkos.cpp:    if (mask & MOLECULE_MASK) atomKK->k_molecule.modify<LMPDeviceType>();
atom_vec_bond_kokkos.cpp:      atomKK->k_nspecial.modify<LMPDeviceType>();
atom_vec_bond_kokkos.cpp:      atomKK->k_special.modify<LMPDeviceType>();
atom_vec_bond_kokkos.cpp:      atomKK->k_num_bond.modify<LMPDeviceType>();
atom_vec_bond_kokkos.cpp:      atomKK->k_bond_type.modify<LMPDeviceType>();
atom_vec_bond_kokkos.cpp:      atomKK->k_bond_atom.modify<LMPDeviceType>();
atom_vec_charge_kokkos.cpp:    k_count.modify<LMPDeviceType>();
atom_vec_charge_kokkos.cpp:    if (mask & X_MASK) atomKK->k_x.modify<LMPDeviceType>();
atom_vec_charge_kokkos.cpp:    if (mask & V_MASK) atomKK->k_v.modify<LMPDeviceType>();
atom_vec_charge_kokkos.cpp:    if (mask & F_MASK) atomKK->k_f.modify<LMPDeviceType>();
atom_vec_charge_kokkos.cpp:    if (mask & TAG_MASK) atomKK->k_tag.modify<LMPDeviceType>();
atom_vec_charge_kokkos.cpp:    if (mask & TYPE_MASK) atomKK->k_type.modify<LMPDeviceType>();
atom_vec_charge_kokkos.cpp:    if (mask & MASK_MASK) atomKK->k_mask.modify<LMPDeviceType>();
atom_vec_charge_kokkos.cpp:    if (mask & IMAGE_MASK) atomKK->k_image.modify<LMPDeviceType>();
atom_vec_charge_kokkos.cpp:    if (mask & Q_MASK) atomKK->k_q.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:    k_count.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:    if (mask & X_MASK) atomKK->k_x.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:    if (mask & V_MASK) atomKK->k_v.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:    if (mask & F_MASK) atomKK->k_f.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:    if (mask & TAG_MASK) atomKK->k_tag.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:    if (mask & TYPE_MASK) atomKK->k_type.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:    if (mask & MASK_MASK) atomKK->k_mask.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:    if (mask & IMAGE_MASK) atomKK->k_image.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:    if (mask & Q_MASK) atomKK->k_q.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:    if (mask & MOLECULE_MASK) atomKK->k_molecule.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_nspecial.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_special.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_num_bond.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_bond_type.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_bond_atom.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_num_angle.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_angle_type.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_angle_atom1.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_angle_atom2.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_angle_atom3.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_num_dihedral.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_dihedral_type.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_dihedral_atom1.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_dihedral_atom2.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_dihedral_atom3.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_dihedral_atom4.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_num_improper.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_improper_type.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_improper_atom1.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_improper_atom2.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_improper_atom3.modify<LMPDeviceType>();
atom_vec_full_kokkos.cpp:      atomKK->k_improper_atom4.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:    k_count.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:    if (mask & X_MASK) atomKK->k_x.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:    if (mask & V_MASK) atomKK->k_v.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:    if (mask & F_MASK) atomKK->k_f.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:    if (mask & TAG_MASK) atomKK->k_tag.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:    if (mask & TYPE_MASK) atomKK->k_type.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:    if (mask & MASK_MASK) atomKK->k_mask.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:    if (mask & IMAGE_MASK) atomKK->k_image.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:    if (mask & MOLECULE_MASK) atomKK->k_molecule.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_nspecial.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_special.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_num_bond.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_bond_type.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_bond_atom.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_num_angle.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_angle_type.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_angle_atom1.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_angle_atom2.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_angle_atom3.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_num_dihedral.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_dihedral_type.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_dihedral_atom1.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_dihedral_atom2.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_dihedral_atom3.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_dihedral_atom4.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_num_improper.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_improper_type.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_improper_atom1.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_improper_atom2.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_improper_atom3.modify<LMPDeviceType>();
atom_vec_molecular_kokkos.cpp:      atomKK->k_improper_atom4.modify<LMPDeviceType>();
comm_kokkos.cpp:      k_buf_send.modify<LMPDeviceType>();
neighbor_kokkos.cpp:    k_bondlist.modify<LMPDeviceType>();
neighbor_kokkos.cpp:    k_anglelist.modify<LMPDeviceType>();
neighbor_kokkos.cpp:    k_dihedrallist.modify<LMPDeviceType>();
neighbor_kokkos.cpp:    k_improperlist.modify<LMPDeviceType>();
verlet_kokkos.cpp:      atomKK->k_f.modify<LMPDeviceType>();
+4 −2
Original line number Diff line number Diff line
@@ -54,10 +54,10 @@ int RegBlockKokkos<DeviceType>::k_inside(double x, double y, double z) const
}

template<class DeviceType>
void RegBlockKokkos<DeviceType>::match_all_kokkos(int groupbit_in, DAT::t_int_1d d_match_in)
void RegBlockKokkos<DeviceType>::match_all_kokkos(int groupbit_in, DAT::tdual_int_1d k_match_in)
{
  groupbit = groupbit_in;
  d_match = d_match_in;
  d_match = k_match_in.template view<DeviceType>();

  atomKK->sync(Device, X_MASK | MASK_MASK);

@@ -69,6 +69,8 @@ void RegBlockKokkos<DeviceType>::match_all_kokkos(int groupbit_in, DAT::t_int_1d
  Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagRegBlockMatchAll>(0,nlocal),*this);
  DeviceType::fence();
  copymode = 0;

  k_match_in.template modify<DeviceType>();
}

template<class DeviceType>
+2 −2
Original line number Diff line number Diff line
@@ -39,14 +39,14 @@ class RegBlockKokkos : public RegBlock {

  RegBlockKokkos(class LAMMPS *, int, char **);
  ~RegBlockKokkos();
  void match_all_kokkos(int, DAT::t_int_1d);
  void match_all_kokkos(int, DAT::tdual_int_1d);

  KOKKOS_INLINE_FUNCTION
  void operator()(TagRegBlockMatchAll, const int&) const;

 private:
  int groupbit;
  DAT::t_int_1d d_match;
  typename AT::t_int_1d d_match;

  typename AT::t_x_array_randomread x;
  typename AT::t_int_1d_randomread mask;
Loading