mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-10-31 03:54:33 +00:00 
			
		
		
		
	Simplify the communicator proliferation: mpi and none.
This commit is contained in:
		| @@ -32,14 +32,22 @@ namespace Grid { | |||||||
| /////////////////////////////////////////////////////////////////////////////////////////////////// | /////////////////////////////////////////////////////////////////////////////////////////////////// | ||||||
| // Info that is setup once and indept of cartesian layout | // Info that is setup once and indept of cartesian layout | ||||||
| /////////////////////////////////////////////////////////////////////////////////////////////////// | /////////////////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | Grid_MPI_Comm       CartesianCommunicator::communicator_world; | ||||||
|  |  | ||||||
| void CartesianCommunicator::Init(int *argc, char *** arv) | void CartesianCommunicator::Init(int *argc, char *** arv) | ||||||
| { | { | ||||||
|   ShmInitGeneric(); |   GlobalSharedMemory::Init(communicator_world); | ||||||
|  |   GlobalSharedMemory::SharedMemoryAllocate( | ||||||
|  | 		   GlobalSharedMemory::MAX_MPI_SHM_BYTES, | ||||||
|  | 		   GlobalSharedMemory::Hugepages); | ||||||
| } | } | ||||||
|  |  | ||||||
| CartesianCommunicator::CartesianCommunicator(const std::vector<int> &processors,const CartesianCommunicator &parent,int &srank)  | CartesianCommunicator::CartesianCommunicator(const std::vector<int> &processors,const CartesianCommunicator &parent,int &srank)  | ||||||
|   : CartesianCommunicator(processors) { srank=0;} |   : CartesianCommunicator(processors)  | ||||||
|  | { | ||||||
|  |   srank=0; | ||||||
|  |   SetCommunicator(communicator_world); | ||||||
|  | } | ||||||
|  |  | ||||||
| CartesianCommunicator::CartesianCommunicator(const std::vector<int> &processors) | CartesianCommunicator::CartesianCommunicator(const std::vector<int> &processors) | ||||||
| { | { | ||||||
| @@ -54,6 +62,7 @@ CartesianCommunicator::CartesianCommunicator(const std::vector<int> &processors) | |||||||
|     assert(_processors[d]==1); |     assert(_processors[d]==1); | ||||||
|     _processor_coor[d] = 0; |     _processor_coor[d] = 0; | ||||||
|   } |   } | ||||||
|  |   SetCommunicator(communicator_world); | ||||||
| } | } | ||||||
|  |  | ||||||
| CartesianCommunicator::~CartesianCommunicator(){} | CartesianCommunicator::~CartesianCommunicator(){} | ||||||
| @@ -121,6 +130,36 @@ void CartesianCommunicator::ShiftedRanks(int dim,int shift,int &source,int &dest | |||||||
|   dest=0; |   dest=0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | double CartesianCommunicator::StencilSendToRecvFrom( void *xmit, | ||||||
|  | 						     int xmit_to_rank, | ||||||
|  | 						     void *recv, | ||||||
|  | 						     int recv_from_rank, | ||||||
|  | 						     int bytes, int dir) | ||||||
|  | { | ||||||
|  |   std::vector<CommsRequest_t> list; | ||||||
|  |   // Discard the "dir" | ||||||
|  |   SendToRecvFromBegin   (list,xmit,xmit_to_rank,recv,recv_from_rank,bytes); | ||||||
|  |   SendToRecvFromComplete(list); | ||||||
|  |   return 2.0*bytes; | ||||||
|  | } | ||||||
|  | double CartesianCommunicator::StencilSendToRecvFromBegin(std::vector<CommsRequest_t> &list, | ||||||
|  | 							 void *xmit, | ||||||
|  | 							 int xmit_to_rank, | ||||||
|  | 							 void *recv, | ||||||
|  | 							 int recv_from_rank, | ||||||
|  | 							 int bytes, int dir) | ||||||
|  | { | ||||||
|  |   // Discard the "dir" | ||||||
|  |   SendToRecvFromBegin(list,xmit,xmit_to_rank,recv,recv_from_rank,bytes); | ||||||
|  |   return 2.0*bytes; | ||||||
|  | } | ||||||
|  | void CartesianCommunicator::StencilSendToRecvFromComplete(std::vector<CommsRequest_t> &waitall,int dir) | ||||||
|  | { | ||||||
|  |   SendToRecvFromComplete(waitall); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void CartesianCommunicator::StencilBarrier(void){}; | ||||||
|  |  | ||||||
|  |  | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user