00001 #ifndef MPISYNCHROSHUFFLEALLTOALLCOMM_H_ 00002 #define MPISYNCHROSHUFFLEALLTOALLCOMM_H_ 00003 00004 #include "MPIAllToAllCommunicator.h" 00005 #include "MPIInputSpikeBuffer.h" 00006 #include "MPIOutputSpikeBuffer.h" 00007 00008 #include <vector> 00009 00010 using std::vector; 00011 00013 00019 class MPISynchroShuffleAllToAllComm : public MPIAllToAllCommunicator 00020 { 00021 public: 00022 00024 MPISynchroShuffleAllToAllComm(MPIInputBufferVector & mpiInputBuffers, 00025 MPIOutputBufferVector & mpiOutputBuffers, 00026 MPI::Intracomm & comm, 00027 vector<bool> &incomingConnections, 00028 vector<bool> &outgoingConnections); 00029 00030 virtual ~MPISynchroShuffleAllToAllComm(); 00031 00033 virtual void doExchangeAlgorithm(); 00034 00036 virtual void prepare(); 00037 00038 }; 00039 00040 #endif /*MPISYNCHROSHUFFLEALLTOALLCOMM_H_*/