00001 #ifndef MPIALLTOALLCOMMUNICATORFACTORY_H_ 00002 #define MPIALLTOALLCOMMUNICATORFACTORY_H_ 00003 00004 #include <string> 00005 00006 #include "MPIDefaultAllToAllCommunicator.h" 00007 #include "MPISynchroShuffleAllToAllComm.h" 00008 #include "MPIInputSpikeBuffer.h" 00009 #include "MPIOutputSpikeBuffer.h" 00010 00011 using std::string; 00012 00013 00015 class MPIAllToAllCommunicatorFactory 00016 { 00017 public: 00019 typedef enum { Default, SynchronuousShuffle } CommunicatorType; 00020 00022 00025 MPIAllToAllCommunicatorFactory(MPIAllToAllCommunicatorFactory::CommunicatorType commType); 00026 00027 virtual ~MPIAllToAllCommunicatorFactory(); 00028 00030 MPIAllToAllCommunicator * getCommunicator( 00031 MPIInputBufferVector & mpiInputBuffers, 00032 MPIOutputBufferVector & mpiOutputBuffers, 00033 MPI::Intracomm & comm, 00034 vector<bool> &incomingConnections, 00035 vector<bool> &outgoingConnections); 00036 00037 protected: 00038 00040 CommunicatorType communicator_type; 00041 00042 }; 00043 00044 #endif /*MPIALLTOALLCOMMUNICATORFACTORY_H_*/