Adding ubuf union to Kokkos atom_vec styles

This commit is contained in:
Stan Moore
2017-04-26 08:15:42 -06:00
parent 2f32fb7f8b
commit d73d70fa1f
7 changed files with 288 additions and 323 deletions

View File

@ -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;
}
}
};

View File

@ -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;
}
}
};

View File

@ -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;
}
}
};

View File

@ -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);
}
}

View File

@ -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;
}
}
};

View File

@ -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 *);

View File

@ -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;
}
}
};