From 6ec5cee36888e6bc55e6eece70cde970835f0aa2 Mon Sep 17 00:00:00 2001 From: Peter Boyle Date: Tue, 17 Jun 2025 16:38:10 +0200 Subject: [PATCH] Preparing for compressed comms --- Grid/communicator/Communicator_base.h | 5 +++-- Grid/communicator/Communicator_mpi3.cc | 23 +++++++++++++++-------- Grid/communicator/Communicator_none.cc | 2 ++ Grid/communicator/SharedMemoryMPI.cc | 2 ++ 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/Grid/communicator/Communicator_base.h b/Grid/communicator/Communicator_base.h index 62fcfa7b..8fd8ec34 100644 --- a/Grid/communicator/Communicator_base.h +++ b/Grid/communicator/Communicator_base.h @@ -183,6 +183,7 @@ public: int recv_from_rank, int bytes); + int IsOffNode(int rank); double StencilSendToRecvFrom(void *xmit, int xmit_to_rank,int do_xmit, void *recv, @@ -201,9 +202,9 @@ public: void StencilSendToRecvFromPollIRecv(std::vector &list); double StencilSendToRecvFromBegin(std::vector &list, - void *xmit, + void *xmit,void *xmit_comp, int xmit_to_rank,int do_xmit, - void *recv, + void *recv,void *recv_comp, int recv_from_rank,int do_recv, int xbytes,int rbytes,int dir); diff --git a/Grid/communicator/Communicator_mpi3.cc b/Grid/communicator/Communicator_mpi3.cc index 8f3bf9af..fc5e4bf0 100644 --- a/Grid/communicator/Communicator_mpi3.cc +++ b/Grid/communicator/Communicator_mpi3.cc @@ -395,11 +395,16 @@ double CartesianCommunicator::StencilSendToRecvFrom( void *xmit, { std::vector list; double offbytes = StencilSendToRecvFromPrepare(list,xmit,dest,dox,recv,from,dor,bytes,bytes,dir); - offbytes += StencilSendToRecvFromBegin(list,xmit,dest,dox,recv,from,dor,bytes,bytes,dir); + offbytes += StencilSendToRecvFromBegin(list,xmit,xmit,dest,dox,recv,recv,from,dor,bytes,bytes,dir); StencilSendToRecvFromComplete(list,dir); return offbytes; } - +int CartesianCommunicator::IsOffNode(int rank) +{ + int grank = ShmRanks[rank]; + if ( grank == MPI_UNDEFINED ) return true; + else return false; +} #ifdef ACCELERATOR_AWARE_MPI void CartesianCommunicator::StencilSendToRecvFromPollIRecv(std::vector &list) {}; @@ -414,9 +419,9 @@ double CartesianCommunicator::StencilSendToRecvFromPrepare(std::vector &list, - void *xmit, + void *xmit,void *xmit_comp, int dest,int dox, - void *recv, + void *recv,void *recv_comp, int from,int dor, int xbytes,int rbytes,int dir) { @@ -440,7 +445,8 @@ double CartesianCommunicator::StencilSendToRecvFromBegin(std::vectorShmBufferTranslate(from,xmit); assert(shm!=NULL); + // std::cout << " StencilSendToRecvFrom "< &list, - void *xmit, + void *xmit,void *xmit_comp, int dest,int dox, - void *recv, + void *recv,void *recv_comp, int from,int dor, int xbytes,int rbytes,int dir) { diff --git a/Grid/communicator/Communicator_none.cc b/Grid/communicator/Communicator_none.cc index 3dee8f4d..350b967c 100644 --- a/Grid/communicator/Communicator_none.cc +++ b/Grid/communicator/Communicator_none.cc @@ -124,6 +124,8 @@ void CartesianCommunicator::ShiftedRanks(int dim,int shift,int &source,int &dest dest=0; } +int CartesianCommunicator::IsOffNode(int rank) { return false; } + double CartesianCommunicator::StencilSendToRecvFrom( void *xmit, int xmit_to_rank,int dox, void *recv, diff --git a/Grid/communicator/SharedMemoryMPI.cc b/Grid/communicator/SharedMemoryMPI.cc index 86638dfa..4f18adca 100644 --- a/Grid/communicator/SharedMemoryMPI.cc +++ b/Grid/communicator/SharedMemoryMPI.cc @@ -1010,11 +1010,13 @@ void *SharedMemory::ShmBufferTranslate(int rank,void * local_p) { int gpeer = ShmRanks[rank]; assert(gpeer!=ShmRank); // never send to self + // std::cout << "ShmBufferTranslate for rank " << rank<<" peer "<