Fix segfaults. Currently wrong results, both with and without MPI.
This commit is contained in:
@ -273,7 +273,6 @@ int AtomVecKokkos::pack_comm_direct(const int &n, const DAT::tdual_int_2d &list,
|
||||
const DAT::tdual_xfloat_2d &buf,
|
||||
const DAT::tdual_int_1d &k_self_flags)
|
||||
{
|
||||
error->all(FLERR, "KOKKOS: pack_comm_direct called\n");
|
||||
if (lmp->kokkos->forward_comm_on_host) {
|
||||
atomKK->sync(Host,X_MASK);
|
||||
if (domain->triclinic) {
|
||||
|
||||
@ -110,7 +110,6 @@ void CommBrickDirectKokkos::setup()
|
||||
|
||||
void CommBrickDirectKokkos::forward_comm(int dummy)
|
||||
{
|
||||
error->all(FLERR, "cbdk: forward_comm\n");
|
||||
int forward_comm_classic = 0;
|
||||
int forward_comm_on_host = 0;
|
||||
|
||||
@ -184,11 +183,13 @@ void CommBrickDirectKokkos::forward_comm_device()
|
||||
// send all owned atoms to receiving procs
|
||||
// except for self copies
|
||||
|
||||
offset = 0;
|
||||
for (int iswap = 0; iswap < ndirect; iswap++) {
|
||||
if (proc_direct[iswap] == me) continue;
|
||||
if (sendnum_direct[iswap]) {
|
||||
int n = sendnum_direct[iswap]*atomKK->avecKK->size_forward;
|
||||
MPI_Send(k_buf_send_direct.view<DeviceType>().data() + offset,n,MPI_DOUBLE,proc_direct[iswap],sendtag[iswap],world);
|
||||
offset += n; // TODO: check
|
||||
}
|
||||
}
|
||||
|
||||
@ -239,6 +240,11 @@ void CommBrickDirectKokkos::borders()
|
||||
if (k_sendatoms_list.d_view.extent(1) < maxsend)
|
||||
MemKK::realloc_kokkos(k_sendatoms_list,"comm_direct:sendatoms_list",maxlist,maxsend);
|
||||
|
||||
if(k_sendnum_scan_direct.extent(0) < nswap) {
|
||||
MemKK::realloc_kokkos(k_sendnum_scan_direct,"comm_direct:sendnum_scan",nswap);
|
||||
MemKK::realloc_kokkos(k_firstrecv_direct,"comm_direct:firstrecv",nswap);
|
||||
}
|
||||
|
||||
for (int ilist = 0; ilist < maxlist; ilist++) {
|
||||
const int nsend = sendnum_list[ilist];
|
||||
for (int i = 0; i < nsend; i++)
|
||||
|
||||
Reference in New Issue
Block a user