diff --git a/src/KOKKOS/atom_vec_angle_kokkos.cpp b/src/KOKKOS/atom_vec_angle_kokkos.cpp index 48fc3a352cfa28f13db6fd2bdd12205b6107c0c8..34b868aadc1b51c176ec55f946a05d2305e19b87 100644 --- a/src/KOKKOS/atom_vec_angle_kokkos.cpp +++ b/src/KOKKOS/atom_vec_angle_kokkos.cpp @@ -80,22 +80,22 @@ void AtomVecAngleKokkos::grow(int n) memory->grow_kokkos(atomKK->k_molecule,atomKK->molecule,nmax,"atom:molecule"); memory->grow_kokkos(atomKK->k_nspecial,atomKK->nspecial,nmax,3,"atom:nspecial"); memory->grow_kokkos(atomKK->k_special,atomKK->special,nmax,atomKK->maxspecial, - "atom:special"); + "atom:special"); memory->grow_kokkos(atomKK->k_num_bond,atomKK->num_bond,nmax,"atom:num_bond"); memory->grow_kokkos(atomKK->k_bond_type,atomKK->bond_type,nmax,atomKK->bond_per_atom, - "atom:bond_type"); + "atom:bond_type"); memory->grow_kokkos(atomKK->k_bond_atom,atomKK->bond_atom,nmax,atomKK->bond_per_atom, - "atom:bond_atom"); + "atom:bond_atom"); memory->grow_kokkos(atomKK->k_num_angle,atomKK->num_angle,nmax,"atom:num_angle"); memory->grow_kokkos(atomKK->k_angle_type,atomKK->angle_type,nmax,atomKK->angle_per_atom, - "atom:angle_type"); + "atom:angle_type"); memory->grow_kokkos(atomKK->k_angle_atom1,atomKK->angle_atom1,nmax,atomKK->angle_per_atom, - "atom:angle_atom1"); + "atom:angle_atom1"); memory->grow_kokkos(atomKK->k_angle_atom2,atomKK->angle_atom2,nmax,atomKK->angle_per_atom, - "atom:angle_atom2"); + "atom:angle_atom2"); memory->grow_kokkos(atomKK->k_angle_atom3,atomKK->angle_atom3,nmax,atomKK->angle_per_atom, - "atom:angle_atom3"); + "atom:angle_atom3"); grow_reset(); sync(Host,ALL_MASK); @@ -241,7 +241,7 @@ struct AtomVecAngleKokkos_PackComm { _xprd(xprd),_yprd(yprd),_zprd(zprd), _xy(xy),_xz(xz),_yz(yz) { const size_t maxsend = (buf.view<DeviceType>().dimension_0() - *buf.view<DeviceType>().dimension_1())/3; + *buf.view<DeviceType>().dimension_1())/3; const size_t elements = 3; buffer_view<DeviceType>(_buf,buf,maxsend,elements); _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; @@ -272,11 +272,11 @@ struct AtomVecAngleKokkos_PackComm { /* ---------------------------------------------------------------------- */ int AtomVecAngleKokkos::pack_comm_kokkos(const int &n, - const DAT::tdual_int_2d &list, - const int & iswap, - const DAT::tdual_xfloat_2d &buf, - const int &pbc_flag, - const int* const pbc) + const DAT::tdual_int_2d &list, + const int & iswap, + const DAT::tdual_xfloat_2d &buf, + const int &pbc_flag, + const int* const pbc) { // Check whether to always run forward communication on the host // Choose correct forward PackComm kernel @@ -339,7 +339,7 @@ int AtomVecAngleKokkos::pack_comm_kokkos(const int &n, LMPDeviceType::fence(); } - return n*size_forward; + return n*size_forward; } /* ---------------------------------------------------------------------- */ @@ -714,18 +714,18 @@ struct AtomVecAngleKokkos_PackBorder { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); _buf(i,2) = _x(j,2); - _buf(i,3) = _tag(j); - _buf(i,4) = _type(j); - _buf(i,5) = _mask(j); - _buf(i,6) = _molecule(j); + _buf(i,3) = d_ubuf(_tag(j)).d; + _buf(i,4) = d_ubuf(_type(j)).d; + _buf(i,5) = d_ubuf(_mask(j)).d; + _buf(i,6) = d_ubuf(_molecule(j)).d; } else { _buf(i,0) = _x(j,0) + _dx; _buf(i,1) = _x(j,1) + _dy; _buf(i,2) = _x(j,2) + _dz; - _buf(i,3) = _tag(j); - _buf(i,4) = _type(j); - _buf(i,5) = _mask(j); - _buf(i,6) = _molecule(j); + _buf(i,3) = d_ubuf(_tag(j)).d; + _buf(i,4) = d_ubuf(_type(j)).d; + _buf(i,5) = d_ubuf(_mask(j)).d; + _buf(i,6) = d_ubuf(_molecule(j)).d; } } }; @@ -957,10 +957,10 @@ struct AtomVecAngleKokkos_UnpackBorder { _x(i+_first,0) = _buf(i,0); _x(i+_first,1) = _buf(i,1); _x(i+_first,2) = _buf(i,2); - _tag(i+_first) = static_cast<tagint> (_buf(i,3)); - _type(i+_first) = static_cast<int> (_buf(i,4)); - _mask(i+_first) = static_cast<int> (_buf(i,5)); - _molecule(i+_first) = static_cast<tagint> (_buf(i,6)); + _tag(i+_first) = (tagint) d_ubuf(_buf(i,3)).i; + _type(i+_first) = (int) d_ubuf(_buf(i,4)).i; + _mask(i+_first) = (int) d_ubuf(_buf(i,5)).i; + _molecule(i+_first) = (tagint) d_ubuf(_buf(i,6)).i; } }; @@ -1165,28 +1165,28 @@ struct AtomVecAngleKokkos_PackExchangeFunctor { _buf(mysend,m++) = _v(i,0); _buf(mysend,m++) = _v(i,1); _buf(mysend,m++) = _v(i,2); - _buf(mysend,m++) = _tag(i); - _buf(mysend,m++) = _type(i); - _buf(mysend,m++) = _mask(i); - _buf(mysend,m++) = _image(i); - _buf(mysend,m++) = _molecule(i); - _buf(mysend,m++) = _num_bond(i); + _buf(mysend,m++) = d_ubuf(_tag(i)).d; + _buf(mysend,m++) = d_ubuf(_type(i)).d; + _buf(mysend,m++) = d_ubuf(_mask(i)).d; + _buf(mysend,m++) = d_ubuf(_image(i)).d; + _buf(mysend,m++) = d_ubuf(_molecule(i)).d; + _buf(mysend,m++) = d_ubuf(_num_bond(i)).d; for (k = 0; k < _num_bond(i); k++) { - _buf(mysend,m++) = _bond_type(i,k); - _buf(mysend,m++) = _bond_atom(i,k); + _buf(mysend,m++) = d_ubuf(_bond_type(i,k)).d; + _buf(mysend,m++) = d_ubuf(_bond_atom(i,k)).d; } - _buf(mysend,m++) = _num_angle(i); + _buf(mysend,m++) = d_ubuf(_num_angle(i)).d; for (k = 0; k < _num_angle(i); k++) { - _buf(mysend,m++) = _angle_type(i,k); - _buf(mysend,m++) = _angle_atom1(i,k); - _buf(mysend,m++) = _angle_atom2(i,k); - _buf(mysend,m++) = _angle_atom3(i,k); + _buf(mysend,m++) = d_ubuf(_angle_type(i,k)).d; + _buf(mysend,m++) = d_ubuf(_angle_atom1(i,k)).d; + _buf(mysend,m++) = d_ubuf(_angle_atom2(i,k)).d; + _buf(mysend,m++) = d_ubuf(_angle_atom3(i,k)).d; } - _buf(mysend,m++) = _nspecial(i,0); - _buf(mysend,m++) = _nspecial(i,1); - _buf(mysend,m++) = _nspecial(i,2); + _buf(mysend,m++) = d_ubuf(_nspecial(i,0)).d; + _buf(mysend,m++) = d_ubuf(_nspecial(i,1)).d; + _buf(mysend,m++) = d_ubuf(_nspecial(i,2)).d; for (k = 0; k < _nspecial(i,2); k++) - _buf(mysend,m++) = _special(i,k); + _buf(mysend,m++) = d_ubuf(_special(i,k)).d; const int j = _copylist(mysend); @@ -1350,7 +1350,7 @@ struct AtomVecAngleKokkos_UnpackExchangeFunctor { _lo(lo),_hi(hi){ elements =17+atom->maxspecial+2*atom->bond_per_atom+4*atom->angle_per_atom; const int maxsendlist = (buf.template view<DeviceType>().dimension_0()* - buf.template view<DeviceType>().dimension_1())/elements; + buf.template view<DeviceType>().dimension_1())/elements; buffer_view<DeviceType>(_buf,buf,maxsendlist,elements); } @@ -1366,30 +1366,30 @@ struct AtomVecAngleKokkos_UnpackExchangeFunctor { _v(i,0) = _buf(myrecv,m++); _v(i,1) = _buf(myrecv,m++); _v(i,2) = _buf(myrecv,m++); - _tag(i) = _buf(myrecv,m++); - _type(i) = _buf(myrecv,m++); - _mask(i) = _buf(myrecv,m++); - _image(i) = _buf(myrecv,m++); + _tag(i) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _type(i) = (int) d_ubuf(_buf(myrecv,m++)).i; + _mask(i) = (int) d_ubuf(_buf(myrecv,m++)).i; + _image(i) = (imageint) d_ubuf(_buf(myrecv,m++)).i; - _molecule(i) = _buf(myrecv,m++); - _num_bond(i) = _buf(myrecv,m++); + _molecule(i) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _num_bond(i) = (int) d_ubuf(_buf(myrecv,m++)).i; int k; for (k = 0; k < _num_bond(i); k++) { - _bond_type(i,k) = _buf(myrecv,m++); - _bond_atom(i,k) = _buf(myrecv,m++); + _bond_type(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _bond_atom(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; } - _num_angle(i) = _buf(myrecv,m++); + _num_angle(i) = (int) d_ubuf(_buf(myrecv,m++)).i; for (k = 0; k < _num_angle(i); k++) { - _angle_type(i,k) = _buf(myrecv,m++); - _angle_atom1(i,k) = _buf(myrecv,m++); - _angle_atom2(i,k) = _buf(myrecv,m++); - _angle_atom3(i,k) = _buf(myrecv,m++); + _angle_type(i,k) = (int) d_ubuf(_buf(myrecv,m++)).i; + _angle_atom1(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _angle_atom2(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _angle_atom3(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; } - _nspecial(i,0) = _buf(myrecv,m++); - _nspecial(i,1) = _buf(myrecv,m++); - _nspecial(i,2) = _buf(myrecv,m++); + _nspecial(i,0) = (int) d_ubuf(_buf(myrecv,m++)).i; + _nspecial(i,1) = (int) d_ubuf(_buf(myrecv,m++)).i; + _nspecial(i,2) = (int) d_ubuf(_buf(myrecv,m++)).i; for (k = 0; k < _nspecial(i,2); k++) - _special(i,k) = _buf(myrecv,m++); + _special(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; } } }; diff --git a/src/KOKKOS/atom_vec_atomic_kokkos.cpp b/src/KOKKOS/atom_vec_atomic_kokkos.cpp index dc254e6a7ed238afa2b50f6f519dafea869f3079..d040bd35531320292d885279152df1fda372c2b7 100644 --- a/src/KOKKOS/atom_vec_atomic_kokkos.cpp +++ b/src/KOKKOS/atom_vec_atomic_kokkos.cpp @@ -619,16 +619,16 @@ struct AtomVecAtomicKokkos_PackBorder { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); _buf(i,2) = _x(j,2); - _buf(i,3) = _tag(j); - _buf(i,4) = _type(j); - _buf(i,5) = _mask(j); + _buf(i,3) = d_ubuf(_tag(j)).d; + _buf(i,4) = d_ubuf(_type(j)).d; + _buf(i,5) = d_ubuf(_mask(j)).d; } else { _buf(i,0) = _x(j,0) + _dx; _buf(i,1) = _x(j,1) + _dy; _buf(i,2) = _x(j,2) + _dz; - _buf(i,3) = _tag(j); - _buf(i,4) = _type(j); - _buf(i,5) = _mask(j); + _buf(i,3) = d_ubuf(_tag(j)).d; + _buf(i,4) = d_ubuf(_type(j)).d; + _buf(i,5) = d_ubuf(_mask(j)).d; } } }; @@ -836,9 +836,9 @@ struct AtomVecAtomicKokkos_UnpackBorder { _x(i+_first,0) = _buf(i,0); _x(i+_first,1) = _buf(i,1); _x(i+_first,2) = _buf(i,2); - _tag(i+_first) = static_cast<tagint> (_buf(i,3)); - _type(i+_first) = static_cast<int> (_buf(i,4)); - _mask(i+_first) = static_cast<int> (_buf(i,5)); + _tag(i+_first) = (tagint) d_ubuf(_buf(i,3)).i; + _type(i+_first) = (int) d_ubuf(_buf(i,4)).i; + _mask(i+_first) = (int) d_ubuf(_buf(i,5)).i; // printf("%i %i %lf %lf %lf %i BORDER\n",_tag(i+_first),i+_first,_x(i+_first,0),_x(i+_first,1),_x(i+_first,2),_type(i+_first)); } }; @@ -977,10 +977,10 @@ struct AtomVecAtomicKokkos_PackExchangeFunctor { _buf(mysend,4) = _v(i,0); _buf(mysend,5) = _v(i,1); _buf(mysend,6) = _v(i,2); - _buf(mysend,7) = _tag[i]; - _buf(mysend,8) = _type[i]; - _buf(mysend,9) = _mask[i]; - _buf(mysend,10) = _image[i]; + _buf(mysend,7) = d_ubuf(_tag[i]).d; + _buf(mysend,8) = d_ubuf(_type[i]).d; + _buf(mysend,9) = d_ubuf(_mask[i]).d; + _buf(mysend,10) = d_ubuf(_image[i]).d; const int j = _copylist(mysend); if(j>-1) { @@ -1091,10 +1091,10 @@ struct AtomVecAtomicKokkos_UnpackExchangeFunctor { _v(i,0) = _buf(myrecv,4); _v(i,1) = _buf(myrecv,5); _v(i,2) = _buf(myrecv,6); - _tag[i] = _buf(myrecv,7); - _type[i] = _buf(myrecv,8); - _mask[i] = _buf(myrecv,9); - _image[i] = _buf(myrecv,10); + _tag[i] = (tagint) d_ubuf(_buf(myrecv,7)).i; + _type[i] = (int) d_ubuf(_buf(myrecv,8)).i; + _mask[i] = (int) d_ubuf(_buf(myrecv,9)).i; + _image[i] = (imageint) d_ubuf(_buf(myrecv,10)).i; } } }; diff --git a/src/KOKKOS/atom_vec_bond_kokkos.cpp b/src/KOKKOS/atom_vec_bond_kokkos.cpp index f10decac28e9f8a8e5845548ae44dca33f5b9767..c46c49cb293fad7fcec6f395f0aa206788cf7561 100644 --- a/src/KOKKOS/atom_vec_bond_kokkos.cpp +++ b/src/KOKKOS/atom_vec_bond_kokkos.cpp @@ -662,18 +662,18 @@ struct AtomVecBondKokkos_PackBorder { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); _buf(i,2) = _x(j,2); - _buf(i,3) = _tag(j); - _buf(i,4) = _type(j); - _buf(i,5) = _mask(j); - _buf(i,6) = _molecule(j); + _buf(i,3) = d_ubuf(_tag(j)).d; + _buf(i,4) = d_ubuf(_type(j)).d; + _buf(i,5) = d_ubuf(_mask(j)).d; + _buf(i,6) = d_ubuf(_molecule(j)).d; } else { _buf(i,0) = _x(j,0) + _dx; _buf(i,1) = _x(j,1) + _dy; _buf(i,2) = _x(j,2) + _dz; - _buf(i,3) = _tag(j); - _buf(i,4) = _type(j); - _buf(i,5) = _mask(j); - _buf(i,6) = _molecule(j); + _buf(i,3) = d_ubuf(_tag(j)).d; + _buf(i,4) = d_ubuf(_type(j)).d; + _buf(i,5) = d_ubuf(_mask(j)).d; + _buf(i,6) = d_ubuf(_molecule(j)).d; } } }; @@ -905,10 +905,10 @@ struct AtomVecBondKokkos_UnpackBorder { _x(i+_first,0) = _buf(i,0); _x(i+_first,1) = _buf(i,1); _x(i+_first,2) = _buf(i,2); - _tag(i+_first) = static_cast<tagint> (_buf(i,3)); - _type(i+_first) = static_cast<int> (_buf(i,4)); - _mask(i+_first) = static_cast<int> (_buf(i,5)); - _molecule(i+_first) = static_cast<tagint> (_buf(i,6)); + _tag(i+_first) = (tagint) d_ubuf(_buf(i,3)).i; + _type(i+_first) = (int) d_ubuf(_buf(i,4)).i; + _mask(i+_first) = (int) d_ubuf(_buf(i,5)).i; + _molecule(i+_first) = (tagint) d_ubuf(_buf(i,6)).i; } }; @@ -1095,21 +1095,21 @@ struct AtomVecBondKokkos_PackExchangeFunctor { _buf(mysend,m++) = _v(i,0); _buf(mysend,m++) = _v(i,1); _buf(mysend,m++) = _v(i,2); - _buf(mysend,m++) = _tag(i); - _buf(mysend,m++) = _type(i); - _buf(mysend,m++) = _mask(i); - _buf(mysend,m++) = _image(i); - _buf(mysend,m++) = _molecule(i); - _buf(mysend,m++) = _num_bond(i); + _buf(mysend,m++) = d_ubuf(_tag(i)).d; + _buf(mysend,m++) = d_ubuf(_type(i)).d; + _buf(mysend,m++) = d_ubuf(_mask(i)).d; + _buf(mysend,m++) = d_ubuf(_image(i)).d; + _buf(mysend,m++) = d_ubuf(_molecule(i)).d; + _buf(mysend,m++) = d_ubuf(_num_bond(i)).d; for (k = 0; k < _num_bond(i); k++) { - _buf(mysend,m++) = _bond_type(i,k); - _buf(mysend,m++) = _bond_atom(i,k); + _buf(mysend,m++) = d_ubuf(_bond_type(i,k)).d; + _buf(mysend,m++) = d_ubuf(_bond_atom(i,k)).d; } - _buf(mysend,m++) = _nspecial(i,0); - _buf(mysend,m++) = _nspecial(i,1); - _buf(mysend,m++) = _nspecial(i,2); + _buf(mysend,m++) = d_ubuf(_nspecial(i,0)).d; + _buf(mysend,m++) = d_ubuf(_nspecial(i,1)).d; + _buf(mysend,m++) = d_ubuf(_nspecial(i,2)).d; for (k = 0; k < _nspecial(i,2); k++) - _buf(mysend,m++) = _special(i,k); + _buf(mysend,m++) = d_ubuf(_special(i,k)).d; const int j = _copylist(mysend); @@ -1267,23 +1267,23 @@ struct AtomVecBondKokkos_UnpackExchangeFunctor { _v(i,0) = _buf(myrecv,m++); _v(i,1) = _buf(myrecv,m++); _v(i,2) = _buf(myrecv,m++); - _tag(i) = _buf(myrecv,m++); - _type(i) = _buf(myrecv,m++); - _mask(i) = _buf(myrecv,m++); - _image(i) = _buf(myrecv,m++); + _tag(i) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _type(i) = (int) d_ubuf(_buf(myrecv,m++)).i; + _mask(i) = (int) d_ubuf(_buf(myrecv,m++)).i; + _image(i) = (imageint) d_ubuf(_buf(myrecv,m++)).i; - _molecule(i) = _buf(myrecv,m++); - _num_bond(i) = _buf(myrecv,m++); + _molecule(i) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _num_bond(i) = (int) d_ubuf(_buf(myrecv,m++)).i; int k; for (k = 0; k < _num_bond(i); k++) { - _bond_type(i,k) = _buf(myrecv,m++); - _bond_atom(i,k) = _buf(myrecv,m++); + _bond_type(i,k) = (int) d_ubuf(_buf(myrecv,m++)).i; + _bond_atom(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; } - _nspecial(i,0) = _buf(myrecv,m++); - _nspecial(i,1) = _buf(myrecv,m++); - _nspecial(i,2) = _buf(myrecv,m++); + _nspecial(i,0) = (int) d_ubuf(_buf(myrecv,m++)).i; + _nspecial(i,1) = (int) d_ubuf(_buf(myrecv,m++)).i; + _nspecial(i,2) = (int) d_ubuf(_buf(myrecv,m++)).i; for (k = 0; k < _nspecial(i,2); k++) - _special(i,k) = _buf(myrecv,m++); + _special(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; } } }; diff --git a/src/KOKKOS/atom_vec_charge_kokkos.cpp b/src/KOKKOS/atom_vec_charge_kokkos.cpp index f6952f127ce8455ce15fd455271e45d462f80c26..856660d1e9cdecf8c7fab09b53ad20326329f422 100644 --- a/src/KOKKOS/atom_vec_charge_kokkos.cpp +++ b/src/KOKKOS/atom_vec_charge_kokkos.cpp @@ -323,7 +323,7 @@ struct AtomVecChargeKokkos_PackCommSelf { /* ---------------------------------------------------------------------- */ int AtomVecChargeKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list, const int & iswap, - const int nfirst, const int &pbc_flag, const int* const pbc) { + const int nfirst, const int &pbc_flag, const int* const pbc) { if(commKK->forward_comm_on_host) { sync(Host,X_MASK); modified(Host,X_MASK); @@ -631,17 +631,17 @@ struct AtomVecChargeKokkos_PackBorder { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); _buf(i,2) = _x(j,2); - _buf(i,3) = _tag(j); - _buf(i,4) = _type(j); - _buf(i,5) = _mask(j); + _buf(i,3) = d_ubuf(_tag(j)).d; + _buf(i,4) = d_ubuf(_type(j)).d; + _buf(i,5) = d_ubuf(_mask(j)).d; _buf(i,6) = _q(j); } else { _buf(i,0) = _x(j,0) + _dx; _buf(i,1) = _x(j,1) + _dy; _buf(i,2) = _x(j,2) + _dz; - _buf(i,3) = _tag(j); - _buf(i,4) = _type(j); - _buf(i,5) = _mask(j); + _buf(i,3) = d_ubuf(_tag(j)).d; + _buf(i,4) = d_ubuf(_type(j)).d; + _buf(i,5) = d_ubuf(_mask(j)).d; _buf(i,6) = _q(j); } } @@ -872,9 +872,9 @@ struct AtomVecChargeKokkos_UnpackBorder { _x(i+_first,0) = _buf(i,0); _x(i+_first,1) = _buf(i,1); _x(i+_first,2) = _buf(i,2); - _tag(i+_first) = static_cast<tagint> (_buf(i,3)); - _type(i+_first) = static_cast<int> (_buf(i,4)); - _mask(i+_first) = static_cast<int> (_buf(i,5)); + _tag(i+_first) = (tagint) d_ubuf(_buf(i,3)).i; + _type(i+_first) = (int) d_ubuf(_buf(i,4)).i; + _mask(i+_first) = (int) d_ubuf(_buf(i,5)).i; _q(i+_first) = _buf(i,6); } }; @@ -1039,10 +1039,10 @@ struct AtomVecChargeKokkos_PackExchangeFunctor { _buf(mysend,4) = _v(i,0); _buf(mysend,5) = _v(i,1); _buf(mysend,6) = _v(i,2); - _buf(mysend,7) = _tag[i]; - _buf(mysend,8) = _type[i]; - _buf(mysend,9) = _mask[i]; - _buf(mysend,10) = _image[i]; + _buf(mysend,7) = d_ubuf(_tag[i]).d; + _buf(mysend,8) = d_ubuf(_type[i]).d; + _buf(mysend,9) = d_ubuf(_mask[i]).d; + _buf(mysend,10) = d_ubuf(_image[i]).d; _buf(mysend,11) = _q[i]; const int j = _copylist(mysend); @@ -1163,10 +1163,10 @@ struct AtomVecChargeKokkos_UnpackExchangeFunctor { _v(i,0) = _buf(myrecv,4); _v(i,1) = _buf(myrecv,5); _v(i,2) = _buf(myrecv,6); - _tag[i] = _buf(myrecv,7); - _type[i] = _buf(myrecv,8); - _mask[i] = _buf(myrecv,9); - _image[i] = _buf(myrecv,10); + _tag[i] = (tagint) d_ubuf(_buf(myrecv,7)).i; + _type[i] = (int) d_ubuf(_buf(myrecv,8)).i; + _mask[i] = (int) d_ubuf(_buf(myrecv,9)).i; + _image[i] = (imageint) d_ubuf(_buf(myrecv,10)).i; _q[i] = _buf(myrecv,11); } } diff --git a/src/KOKKOS/atom_vec_full_kokkos.cpp b/src/KOKKOS/atom_vec_full_kokkos.cpp index 731168b6eacd2760f1cb6bb46ecde7c6147fb733..fa4cf18ae386c4bec29d064b32f8bb359e9fed72 100644 --- a/src/KOKKOS/atom_vec_full_kokkos.cpp +++ b/src/KOKKOS/atom_vec_full_kokkos.cpp @@ -761,17 +761,6 @@ void AtomVecFullKokkos::unpack_reverse(int n, int *list, double *buf) template<class DeviceType,int PBC_FLAG> struct AtomVecFullKokkos_PackBorder { - union ubuf { - double d; - int64_t i; - KOKKOS_INLINE_FUNCTION - ubuf(double arg) : d(arg) {} - KOKKOS_INLINE_FUNCTION - ubuf(int64_t arg) : i(arg) {} - KOKKOS_INLINE_FUNCTION - ubuf(int arg) : i(arg) {} - }; - typedef DeviceType device_type; typedef ArrayTypes<DeviceType> AT; @@ -808,20 +797,20 @@ struct AtomVecFullKokkos_PackBorder { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); _buf(i,2) = _x(j,2); - _buf(i,3) = ubuf(_tag(j)).d; - _buf(i,4) = ubuf(_type(j)).d; - _buf(i,5) = ubuf(_mask(j)).d; + _buf(i,3) = d_ubuf(_tag(j)).d; + _buf(i,4) = d_ubuf(_type(j)).d; + _buf(i,5) = d_ubuf(_mask(j)).d; _buf(i,6) = _q(j); - _buf(i,7) = ubuf(_molecule(j)).d; + _buf(i,7) = d_ubuf(_molecule(j)).d; } else { _buf(i,0) = _x(j,0) + _dx; _buf(i,1) = _x(j,1) + _dy; _buf(i,2) = _x(j,2) + _dz; - _buf(i,3) = ubuf(_tag(j)).d; - _buf(i,4) = ubuf(_type(j)).d; - _buf(i,5) = ubuf(_mask(j)).d; + _buf(i,3) = d_ubuf(_tag(j)).d; + _buf(i,4) = d_ubuf(_type(j)).d; + _buf(i,5) = d_ubuf(_mask(j)).d; _buf(i,6) = _q(j); - _buf(i,7) = ubuf(_molecule(j)).d; + _buf(i,7) = d_ubuf(_molecule(j)).d; } } }; @@ -1030,17 +1019,6 @@ int AtomVecFullKokkos::pack_border_hybrid(int n, int *list, double *buf) template<class DeviceType> struct AtomVecFullKokkos_UnpackBorder { - union ubuf { - double d; - int64_t i; - KOKKOS_INLINE_FUNCTION - ubuf(double arg) : d(arg) {} - KOKKOS_INLINE_FUNCTION - ubuf(int64_t arg) : i(arg) {} - KOKKOS_INLINE_FUNCTION - ubuf(int arg) : i(arg) {} - }; - typedef DeviceType device_type; typedef ArrayTypes<DeviceType> AT; @@ -1072,11 +1050,11 @@ struct AtomVecFullKokkos_UnpackBorder { _x(i+_first,0) = _buf(i,0); _x(i+_first,1) = _buf(i,1); _x(i+_first,2) = _buf(i,2); - _tag(i+_first) = (tagint) ubuf(_buf(i,3)).i; - _type(i+_first) = (int) ubuf(_buf(i,4)).i; - _mask(i+_first) = (int) ubuf(_buf(i,5)).i; + _tag(i+_first) = (tagint) d_ubuf(_buf(i,3)).i; + _type(i+_first) = (int) d_ubuf(_buf(i,4)).i; + _mask(i+_first) = (int) d_ubuf(_buf(i,5)).i; _q(i+_first) = _buf(i,6); - _molecule(i+_first) = (tagint) ubuf(_buf(i,7)).i; + _molecule(i+_first) = (tagint) d_ubuf(_buf(i,7)).i; } }; @@ -1178,18 +1156,6 @@ int AtomVecFullKokkos::unpack_border_hybrid(int n, int first, double *buf) template<class DeviceType> struct AtomVecFullKokkos_PackExchangeFunctor { - - union ubuf { - double d; - int64_t i; - KOKKOS_INLINE_FUNCTION - ubuf(double arg) : d(arg) {} - KOKKOS_INLINE_FUNCTION - ubuf(int64_t arg) : i(arg) {} - KOKKOS_INLINE_FUNCTION - ubuf(int arg) : i(arg) {} - }; - typedef DeviceType device_type; typedef ArrayTypes<DeviceType> AT; typename AT::t_x_array_randomread _x; @@ -1328,7 +1294,7 @@ struct AtomVecFullKokkos_PackExchangeFunctor { elements = 20+atom->maxspecial+2*atom->bond_per_atom+4*atom->angle_per_atom+ 5*atom->dihedral_per_atom + 5*atom->improper_per_atom; const int maxsendlist = (buf.template view<DeviceType>().dimension_0()* - buf.template view<DeviceType>().dimension_1())/elements; + buf.template view<DeviceType>().dimension_1())/elements; buffer_view<DeviceType>(_buf,buf,maxsendlist,elements); } @@ -1344,46 +1310,46 @@ struct AtomVecFullKokkos_PackExchangeFunctor { _buf(mysend,m++) = _v(i,0); _buf(mysend,m++) = _v(i,1); _buf(mysend,m++) = _v(i,2); - _buf(mysend,m++) = ubuf(_tag(i)).d; - _buf(mysend,m++) = ubuf(_type(i)).d; - _buf(mysend,m++) = ubuf(_mask(i)).d; - _buf(mysend,m++) = ubuf(_image(i)).d; + _buf(mysend,m++) = d_ubuf(_tag(i)).d; + _buf(mysend,m++) = d_ubuf(_type(i)).d; + _buf(mysend,m++) = d_ubuf(_mask(i)).d; + _buf(mysend,m++) = d_ubuf(_image(i)).d; _buf(mysend,m++) = _q(i); - _buf(mysend,m++) = ubuf(_molecule(i)).d; - _buf(mysend,m++) = ubuf(_num_bond(i)).d; + _buf(mysend,m++) = d_ubuf(_molecule(i)).d; + _buf(mysend,m++) = d_ubuf(_num_bond(i)).d; for (k = 0; k < _num_bond(i); k++) { - _buf(mysend,m++) = ubuf(_bond_type(i,k)).d; - _buf(mysend,m++) = ubuf(_bond_atom(i,k)).d; + _buf(mysend,m++) = d_ubuf(_bond_type(i,k)).d; + _buf(mysend,m++) = d_ubuf(_bond_atom(i,k)).d; } - _buf(mysend,m++) = ubuf(_num_angle(i)).d; + _buf(mysend,m++) = d_ubuf(_num_angle(i)).d; for (k = 0; k < _num_angle(i); k++) { - _buf(mysend,m++) = ubuf(_angle_type(i,k)).d; - _buf(mysend,m++) = ubuf(_angle_atom1(i,k)).d; - _buf(mysend,m++) = ubuf(_angle_atom2(i,k)).d; - _buf(mysend,m++) = ubuf(_angle_atom3(i,k)).d; + _buf(mysend,m++) = d_ubuf(_angle_type(i,k)).d; + _buf(mysend,m++) = d_ubuf(_angle_atom1(i,k)).d; + _buf(mysend,m++) = d_ubuf(_angle_atom2(i,k)).d; + _buf(mysend,m++) = d_ubuf(_angle_atom3(i,k)).d; } - _buf(mysend,m++) = ubuf(_num_dihedral(i)).d; + _buf(mysend,m++) = d_ubuf(_num_dihedral(i)).d; for (k = 0; k < _num_dihedral(i); k++) { - _buf(mysend,m++) = ubuf(_dihedral_type(i,k)).d; - _buf(mysend,m++) = ubuf(_dihedral_atom1(i,k)).d; - _buf(mysend,m++) = ubuf(_dihedral_atom2(i,k)).d; - _buf(mysend,m++) = ubuf(_dihedral_atom3(i,k)).d; - _buf(mysend,m++) = ubuf(_dihedral_atom4(i,k)).d; + _buf(mysend,m++) = d_ubuf(_dihedral_type(i,k)).d; + _buf(mysend,m++) = d_ubuf(_dihedral_atom1(i,k)).d; + _buf(mysend,m++) = d_ubuf(_dihedral_atom2(i,k)).d; + _buf(mysend,m++) = d_ubuf(_dihedral_atom3(i,k)).d; + _buf(mysend,m++) = d_ubuf(_dihedral_atom4(i,k)).d; } - _buf(mysend,m++) = ubuf(_num_improper(i)).d; + _buf(mysend,m++) = d_ubuf(_num_improper(i)).d; for (k = 0; k < _num_improper(i); k++) { - _buf(mysend,m++) = ubuf(_improper_type(i,k)).d; - _buf(mysend,m++) = ubuf(_improper_atom1(i,k)).d; - _buf(mysend,m++) = ubuf(_improper_atom2(i,k)).d; - _buf(mysend,m++) = ubuf(_improper_atom3(i,k)).d; - _buf(mysend,m++) = ubuf(_improper_atom4(i,k)).d; + _buf(mysend,m++) = d_ubuf(_improper_type(i,k)).d; + _buf(mysend,m++) = d_ubuf(_improper_atom1(i,k)).d; + _buf(mysend,m++) = d_ubuf(_improper_atom2(i,k)).d; + _buf(mysend,m++) = d_ubuf(_improper_atom3(i,k)).d; + _buf(mysend,m++) = d_ubuf(_improper_atom4(i,k)).d; } - _buf(mysend,m++) = ubuf(_nspecial(i,0)).d; - _buf(mysend,m++) = ubuf(_nspecial(i,1)).d; - _buf(mysend,m++) = ubuf(_nspecial(i,2)).d; + _buf(mysend,m++) = d_ubuf(_nspecial(i,0)).d; + _buf(mysend,m++) = d_ubuf(_nspecial(i,1)).d; + _buf(mysend,m++) = d_ubuf(_nspecial(i,2)).d; for (k = 0; k < _nspecial(i,2); k++) - _buf(mysend,m++) = ubuf(_special(i,k)).d; + _buf(mysend,m++) = d_ubuf(_special(i,k)).d; const int j = _copylist(mysend); @@ -1531,18 +1497,6 @@ int AtomVecFullKokkos::pack_exchange(int i, double *buf) template<class DeviceType> struct AtomVecFullKokkos_UnpackExchangeFunctor { - - union ubuf { - double d; - int64_t i; - KOKKOS_INLINE_FUNCTION - ubuf(double arg) : d(arg) {} - KOKKOS_INLINE_FUNCTION - ubuf(int64_t arg) : i(arg) {} - KOKKOS_INLINE_FUNCTION - ubuf(int arg) : i(arg) {} - }; - typedef DeviceType device_type; typedef ArrayTypes<DeviceType> AT; typename AT::t_x_array _x; @@ -1617,7 +1571,7 @@ struct AtomVecFullKokkos_UnpackExchangeFunctor { elements = 20+atom->maxspecial+2*atom->bond_per_atom+4*atom->angle_per_atom+ 5*atom->dihedral_per_atom + 5*atom->improper_per_atom; const int maxsendlist = (buf.template view<DeviceType>().dimension_0()* - buf.template view<DeviceType>().dimension_1())/elements; + buf.template view<DeviceType>().dimension_1())/elements; buffer_view<DeviceType>(_buf,buf,maxsendlist,elements); } @@ -1633,46 +1587,46 @@ struct AtomVecFullKokkos_UnpackExchangeFunctor { _v(i,0) = _buf(myrecv,m++); _v(i,1) = _buf(myrecv,m++); _v(i,2) = _buf(myrecv,m++); - _tag(i) = (tagint) ubuf(_buf(myrecv,m++)).i; - _type(i) = (int) ubuf(_buf(myrecv,m++)).i; - _mask(i) = (int) ubuf(_buf(myrecv,m++)).i; - _image(i) = (imageint) ubuf(_buf(myrecv,m++)).i; + _tag(i) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _type(i) = (int) d_ubuf(_buf(myrecv,m++)).i; + _mask(i) = (int) d_ubuf(_buf(myrecv,m++)).i; + _image(i) = (imageint) d_ubuf(_buf(myrecv,m++)).i; _q(i) = _buf(myrecv,m++); - _molecule(i) = (tagint) ubuf(_buf(myrecv,m++)).i; - _num_bond(i) = (int) ubuf(_buf(myrecv,m++)).i; + _molecule(i) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _num_bond(i) = (int) d_ubuf(_buf(myrecv,m++)).i; int k; for (k = 0; k < _num_bond(i); k++) { - _bond_type(i,k) = (int) ubuf(_buf(myrecv,m++)).i; - _bond_atom(i,k) = (tagint) ubuf(_buf(myrecv,m++)).i; + _bond_type(i,k) = (int) d_ubuf(_buf(myrecv,m++)).i; + _bond_atom(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; } - _num_angle(i) = (int) ubuf(_buf(myrecv,m++)).i; + _num_angle(i) = (int) d_ubuf(_buf(myrecv,m++)).i; for (k = 0; k < _num_angle(i); k++) { - _angle_type(i,k) = (int) ubuf(_buf(myrecv,m++)).i; - _angle_atom1(i,k) = (tagint) ubuf(_buf(myrecv,m++)).i; - _angle_atom2(i,k) = (tagint) ubuf(_buf(myrecv,m++)).i; - _angle_atom3(i,k) = (tagint) ubuf(_buf(myrecv,m++)).i; + _angle_type(i,k) = (int) d_ubuf(_buf(myrecv,m++)).i; + _angle_atom1(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _angle_atom2(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _angle_atom3(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; } - _num_dihedral(i) = (int) ubuf(_buf(myrecv,m++)).i; + _num_dihedral(i) = (int) d_ubuf(_buf(myrecv,m++)).i; for (k = 0; k < _num_dihedral(i); k++) { - _dihedral_type(i,k) = (int) ubuf(_buf(myrecv,m++)).i; - _dihedral_atom1(i,k) = (tagint) ubuf(_buf(myrecv,m++)).i; - _dihedral_atom2(i,k) = (tagint) ubuf(_buf(myrecv,m++)).i; - _dihedral_atom3(i,k) = (tagint) ubuf(_buf(myrecv,m++)).i; - _dihedral_atom4(i,k) = (tagint) ubuf(_buf(myrecv,m++)).i; + _dihedral_type(i,k) = (int) d_ubuf(_buf(myrecv,m++)).i; + _dihedral_atom1(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _dihedral_atom2(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _dihedral_atom3(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _dihedral_atom4(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; } - _num_improper(i) = (int) ubuf(_buf(myrecv,m++)).i; + _num_improper(i) = (int) d_ubuf(_buf(myrecv,m++)).i; for (k = 0; k < _num_improper(i); k++) { - _improper_type(i,k) = (int) ubuf(_buf(myrecv,m++)).i; - _improper_atom1(i,k) = (tagint) ubuf(_buf(myrecv,m++)).i; - _improper_atom2(i,k) = (tagint) ubuf(_buf(myrecv,m++)).i; - _improper_atom3(i,k) = (tagint) ubuf(_buf(myrecv,m++)).i; - _improper_atom4(i,k) = (tagint) ubuf(_buf(myrecv,m++)).i; + _improper_type(i,k) = (int) d_ubuf(_buf(myrecv,m++)).i; + _improper_atom1(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _improper_atom2(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _improper_atom3(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _improper_atom4(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; } - _nspecial(i,0) = (int) ubuf(_buf(myrecv,m++)).i; - _nspecial(i,1) = (int) ubuf(_buf(myrecv,m++)).i; - _nspecial(i,2) = (int) ubuf(_buf(myrecv,m++)).i; + _nspecial(i,0) = (int) d_ubuf(_buf(myrecv,m++)).i; + _nspecial(i,1) = (int) d_ubuf(_buf(myrecv,m++)).i; + _nspecial(i,2) = (int) d_ubuf(_buf(myrecv,m++)).i; for (k = 0; k < _nspecial(i,2); k++) - _special(i,k) = (tagint) ubuf(_buf(myrecv,m++)).i; + _special(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; } } }; diff --git a/src/KOKKOS/atom_vec_kokkos.h b/src/KOKKOS/atom_vec_kokkos.h index 7ac66f162696e4d4814676134b7ff8ffc626d4ae..7f593f235f6736d0dd966c6989feb40632705b8a 100644 --- a/src/KOKKOS/atom_vec_kokkos.h +++ b/src/KOKKOS/atom_vec_kokkos.h @@ -20,6 +20,17 @@ namespace LAMMPS_NS { +union d_ubuf { + double d; + int64_t i; + KOKKOS_INLINE_FUNCTION + d_ubuf(double arg) : d(arg) {} + KOKKOS_INLINE_FUNCTION + d_ubuf(int64_t arg) : i(arg) {} + KOKKOS_INLINE_FUNCTION + d_ubuf(int arg) : i(arg) {} +}; + class AtomVecKokkos : public AtomVec { public: AtomVecKokkos(class LAMMPS *); diff --git a/src/KOKKOS/atom_vec_molecular_kokkos.cpp b/src/KOKKOS/atom_vec_molecular_kokkos.cpp index 4fd8114376f23e17ad5c3a0d0a793402ebf3a30f..5c16ac15135ec642a2a3fa95b31c01cbf41c71fb 100644 --- a/src/KOKKOS/atom_vec_molecular_kokkos.cpp +++ b/src/KOKKOS/atom_vec_molecular_kokkos.cpp @@ -786,18 +786,18 @@ struct AtomVecMolecularKokkos_PackBorder { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); _buf(i,2) = _x(j,2); - _buf(i,3) = _tag(j); - _buf(i,4) = _type(j); - _buf(i,5) = _mask(j); - _buf(i,6) = _molecule(j); + _buf(i,3) = d_ubuf(_tag(j)).d; + _buf(i,4) = d_ubuf(_type(j)).d; + _buf(i,5) = d_ubuf(_mask(j)).d; + _buf(i,6) = d_ubuf(_molecule(j)).d; } else { _buf(i,0) = _x(j,0) + _dx; _buf(i,1) = _x(j,1) + _dy; _buf(i,2) = _x(j,2) + _dz; - _buf(i,3) = _tag(j); - _buf(i,4) = _type(j); - _buf(i,5) = _mask(j); - _buf(i,6) = _molecule(j); + _buf(i,3) = d_ubuf(_tag(j)).d; + _buf(i,4) = d_ubuf(_type(j)).d; + _buf(i,5) = d_ubuf(_mask(j)).d; + _buf(i,6) = d_ubuf(_molecule(j)).d; } } }; @@ -1029,10 +1029,10 @@ struct AtomVecMolecularKokkos_UnpackBorder { _x(i+_first,0) = _buf(i,0); _x(i+_first,1) = _buf(i,1); _x(i+_first,2) = _buf(i,2); - _tag(i+_first) = static_cast<tagint> (_buf(i,3)); - _type(i+_first) = static_cast<int> (_buf(i,4)); - _mask(i+_first) = static_cast<int> (_buf(i,5)); - _molecule(i+_first) = static_cast<tagint> (_buf(i,6)); + _tag(i+_first) = (tagint) d_ubuf(_buf(i,3)).i; + _type(i+_first) = (int) d_ubuf(_buf(i,4)).i; + _mask(i+_first) = (int) d_ubuf(_buf(i,5)).i; + _molecule(i+_first) = (tagint) d_ubuf(_buf(i,6)).i; } }; @@ -1263,7 +1263,7 @@ struct AtomVecMolecularKokkos_PackExchangeFunctor { elements = 19+atom->maxspecial+2*atom->bond_per_atom+4*atom->angle_per_atom+ 5*atom->dihedral_per_atom + 5*atom->improper_per_atom; const int maxsendlist = (buf.template view<DeviceType>().dimension_0()* - buf.template view<DeviceType>().dimension_1())/elements; + buf.template view<DeviceType>().dimension_1())/elements; buffer_view<DeviceType>(_buf,buf,maxsendlist,elements); } @@ -1279,45 +1279,45 @@ struct AtomVecMolecularKokkos_PackExchangeFunctor { _buf(mysend,m++) = _v(i,0); _buf(mysend,m++) = _v(i,1); _buf(mysend,m++) = _v(i,2); - _buf(mysend,m++) = _tag(i); - _buf(mysend,m++) = _type(i); - _buf(mysend,m++) = _mask(i); - _buf(mysend,m++) = _image(i); - _buf(mysend,m++) = _molecule(i); - _buf(mysend,m++) = _num_bond(i); + _buf(mysend,m++) = d_ubuf(_tag(i)).d; + _buf(mysend,m++) = d_ubuf(_type(i)).d; + _buf(mysend,m++) = d_ubuf(_mask(i)).d; + _buf(mysend,m++) = d_ubuf(_image(i)).d; + _buf(mysend,m++) = d_ubuf(_molecule(i)).d; + _buf(mysend,m++) = d_ubuf(_num_bond(i)).d; for (k = 0; k < _num_bond(i); k++) { - _buf(mysend,m++) = _bond_type(i,k); - _buf(mysend,m++) = _bond_atom(i,k); + _buf(mysend,m++) = d_ubuf(_bond_type(i,k)).d; + _buf(mysend,m++) = d_ubuf(_bond_atom(i,k)).d; } - _buf(mysend,m++) = _num_angle(i); + _buf(mysend,m++) = d_ubuf(_num_angle(i)).d; for (k = 0; k < _num_angle(i); k++) { - _buf(mysend,m++) = _angle_type(i,k); - _buf(mysend,m++) = _angle_atom1(i,k); - _buf(mysend,m++) = _angle_atom2(i,k); - _buf(mysend,m++) = _angle_atom3(i,k); + _buf(mysend,m++) = d_ubuf(_angle_type(i,k)).d; + _buf(mysend,m++) = d_ubuf(_angle_atom1(i,k)).d; + _buf(mysend,m++) = d_ubuf(_angle_atom2(i,k)).d; + _buf(mysend,m++) = d_ubuf(_angle_atom3(i,k)).d; } - _buf(mysend,m++) = _num_dihedral(i); + _buf(mysend,m++) = d_ubuf(_num_dihedral(i)).d; for (k = 0; k < _num_dihedral(i); k++) { - _buf(mysend,m++) = _dihedral_type(i,k); - _buf(mysend,m++) = _dihedral_atom1(i,k); - _buf(mysend,m++) = _dihedral_atom2(i,k); - _buf(mysend,m++) = _dihedral_atom3(i,k); - _buf(mysend,m++) = _dihedral_atom4(i,k); + _buf(mysend,m++) = d_ubuf(_dihedral_type(i,k)).d; + _buf(mysend,m++) = d_ubuf(_dihedral_atom1(i,k)).d; + _buf(mysend,m++) = d_ubuf(_dihedral_atom2(i,k)).d; + _buf(mysend,m++) = d_ubuf(_dihedral_atom3(i,k)).d; + _buf(mysend,m++) = d_ubuf(_dihedral_atom4(i,k)).d; } - _buf(mysend,m++) = _num_improper(i); + _buf(mysend,m++) = d_ubuf(_num_improper(i)).d; for (k = 0; k < _num_improper(i); k++) { - _buf(mysend,m++) = _improper_type(i,k); - _buf(mysend,m++) = _improper_atom1(i,k); - _buf(mysend,m++) = _improper_atom2(i,k); - _buf(mysend,m++) = _improper_atom3(i,k); - _buf(mysend,m++) = _improper_atom4(i,k); + _buf(mysend,m++) = d_ubuf(_improper_type(i,k)).d; + _buf(mysend,m++) = d_ubuf(_improper_atom1(i,k)).d; + _buf(mysend,m++) = d_ubuf(_improper_atom2(i,k)).d; + _buf(mysend,m++) = d_ubuf(_improper_atom3(i,k)).d; + _buf(mysend,m++) = d_ubuf(_improper_atom4(i,k)).d; } - _buf(mysend,m++) = _nspecial(i,0); - _buf(mysend,m++) = _nspecial(i,1); - _buf(mysend,m++) = _nspecial(i,2); + _buf(mysend,m++) = d_ubuf(_nspecial(i,0)).d; + _buf(mysend,m++) = d_ubuf(_nspecial(i,1)).d; + _buf(mysend,m++) = d_ubuf(_nspecial(i,2)).d; for (k = 0; k < _nspecial(i,2); k++) - _buf(mysend,m++) = _special(i,k); + _buf(mysend,m++) = d_ubuf(_special(i,k)).d; const int j = _copylist(mysend); @@ -1536,7 +1536,7 @@ struct AtomVecMolecularKokkos_UnpackExchangeFunctor { elements = 19+atom->maxspecial+2*atom->bond_per_atom+4*atom->angle_per_atom+ 5*atom->dihedral_per_atom + 5*atom->improper_per_atom; const int maxsendlist = (buf.template view<DeviceType>().dimension_0()* - buf.template view<DeviceType>().dimension_1())/elements; + buf.template view<DeviceType>().dimension_1())/elements; buffer_view<DeviceType>(_buf,buf,maxsendlist,elements); } @@ -1552,46 +1552,46 @@ struct AtomVecMolecularKokkos_UnpackExchangeFunctor { _v(i,0) = _buf(myrecv,m++); _v(i,1) = _buf(myrecv,m++); _v(i,2) = _buf(myrecv,m++); - _tag(i) = _buf(myrecv,m++); - _type(i) = _buf(myrecv,m++); - _mask(i) = _buf(myrecv,m++); - _image(i) = _buf(myrecv,m++); + _tag(i) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _type(i) = (int) d_ubuf(_buf(myrecv,m++)).i; + _mask(i) = (int) d_ubuf(_buf(myrecv,m++)).i; + _image(i) = (imageint) d_ubuf(_buf(myrecv,m++)).i; - _molecule(i) = _buf(myrecv,m++); - _num_bond(i) = _buf(myrecv,m++); + _molecule(i) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _num_bond(i) = (int) d_ubuf(_buf(myrecv,m++)).i; int k; for (k = 0; k < _num_bond(i); k++) { - _bond_type(i,k) = _buf(myrecv,m++); - _bond_atom(i,k) = _buf(myrecv,m++); + _bond_type(i,k) = (int) d_ubuf(_buf(myrecv,m++)).i; + _bond_atom(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; } - _num_angle(i) = _buf(myrecv,m++); + _num_angle(i) = (int) d_ubuf(_buf(myrecv,m++)).i; for (k = 0; k < _num_angle(i); k++) { - _angle_type(i,k) = _buf(myrecv,m++); - _angle_atom1(i,k) = _buf(myrecv,m++); - _angle_atom2(i,k) = _buf(myrecv,m++); - _angle_atom3(i,k) = _buf(myrecv,m++); + _angle_type(i,k) = (int) d_ubuf(_buf(myrecv,m++)).i; + _angle_atom1(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _angle_atom2(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _angle_atom3(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; } - _num_dihedral(i) = _buf(myrecv,m++); + _num_dihedral(i) = d_ubuf(_buf(myrecv,m++)).i; for (k = 0; k < _num_dihedral(i); k++) { - _dihedral_type(i,k) = _buf(myrecv,m++); - _dihedral_atom1(i,k) = _buf(myrecv,m++); - _dihedral_atom2(i,k) = _buf(myrecv,m++); - _dihedral_atom3(i,k) = _buf(myrecv,m++); - _dihedral_atom4(i,k) = _buf(myrecv,m++); + _dihedral_type(i,k) = (int) d_ubuf(_buf(myrecv,m++)).i; + _dihedral_atom1(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _dihedral_atom2(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _dihedral_atom3(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _dihedral_atom4(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; } - _num_improper(i) = _buf(myrecv,m++); - for (k = 0; k < _num_improper(i); k++) { - _improper_type(i,k) = _buf(myrecv,m++); - _improper_atom1(i,k) = _buf(myrecv,m++); - _improper_atom2(i,k) = _buf(myrecv,m++); - _improper_atom3(i,k) = _buf(myrecv,m++); - _improper_atom4(i,k) = _buf(myrecv,m++); + _num_improper(i) = (int) d_ubuf(_buf(myrecv,m++)).i; + for (k = 0; k < (int) _num_improper(i); k++) { + _improper_type(i,k) = (int) d_ubuf(_buf(myrecv,m++)).i; + _improper_atom1(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _improper_atom2(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _improper_atom3(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; + _improper_atom4(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; } - _nspecial(i,0) = _buf(myrecv,m++); - _nspecial(i,1) = _buf(myrecv,m++); - _nspecial(i,2) = _buf(myrecv,m++); + _nspecial(i,0) = (int) d_ubuf(_buf(myrecv,m++)).i; + _nspecial(i,1) = (int) d_ubuf(_buf(myrecv,m++)).i; + _nspecial(i,2) = (int) d_ubuf(_buf(myrecv,m++)).i; for (k = 0; k < _nspecial(i,2); k++) - _special(i,k) = _buf(myrecv,m++); + _special(i,k) = (tagint) d_ubuf(_buf(myrecv,m++)).i; } } };