1
0
mirror of https://github.com/paboyle/Grid.git synced 2024-11-10 07:55:35 +00:00
Grid/Grid_Communicator.h
Peter Boyle 196fd203e2 Fixing the Checkerboarding cshift.
Implemented "fake" communications in preparation for the leap to MPI.
2015-03-29 20:35:37 +01:00

40 lines
1.0 KiB
C++

#ifndef GRID_COMMUNICATOR_H
#define GRID_COMMUNICATOR_H
///////////////////////////////////
// Processor layout information
///////////////////////////////////
namespace dpo {
class CartesianCommunicator {
public:
// Communicator should know nothing of the physics grid, only processor grid.
std::vector<int> _processors; // Which dimensions get relayed out over processors lanes.
int _processor; // linear processor rank
std::vector<int> _processor_coor; // linear processor coordinate
unsigned long _ndimension;
#ifdef GRID_COMMS_MPI
MPI_Comm communicator;
#endif
CartesianCommunicator(std::vector<int> &pdimensions_in);
int Rank(std::vector<int> coor);
void GlobalSumF(float &);
void GlobalSumFVector(float *,int N);
void GlobalSumF(double &);
void GlobalSumFVector(double *,int N);
void SendToRecvFrom(void *xmit,
std::vector<int> to_coordinate,
void *recv,
std::vector<int> from_coordinate,
int bytes);
};
}
#endif