Changeset 286 for XMLIO_V2/dev/common/src/xmlio/manager/mpi_manager.hpp
- Timestamp:
- 10/21/11 19:01:35 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XMLIO_V2/dev/common/src/xmlio/manager/mpi_manager.hpp
r268 r286 52 52 53 53 static void Initialise(int * argc, char *** argv); 54 static void InitialiseClient(int * argc, char *** argv); 55 static void InitialiseServer(int * argc, char *** argv); 54 56 static void Finalize(void); 55 57 … … 57 59 58 60 59 static inline int GetCommRank(MPIComm _comm) 60 { return (CMPIManager::GetCommRank(MPI_Comm_f2c(_comm))); } 61 62 static inline int GetCommSize(MPIComm _comm) 63 { return (CMPIManager::GetCommSize(MPI_Comm_f2c(_comm))); } 64 65 static inline MPIComm GetCommWorld(void) 66 { return (MPI_Comm_c2f(MPI_COMM_WORLD)); } 67 68 static inline MPIComm CreateComm(MPI_Group _group, MPIComm _pcomm = CMPIManager::GetCommWorld()) 69 { return (MPI_Comm_c2f(CMPIManager::CreateComm( _group, MPI_Comm_f2c(_pcomm)))); } 61 62 static inline MPI_Comm GetCommWorld(void) 63 { return (MPI_COMM_WORLD); } 70 64 71 65 static int GetCommRank(MPI_Comm _comm = MPI_COMM_WORLD); 72 66 static int GetCommSize(MPI_Comm _comm = MPI_COMM_WORLD); 73 67 74 static MPI_Comm CreateComm(MPI_Group _group, MPI_Comm _pcomm); 68 static MPI_Comm CreateComm(MPI_Group _group, MPI_Comm _pcomm=MPI_COMM_WORLD); 69 70 static inline MPI_Comm GetCommClient(void) 71 { return CommClient; } 72 static inline MPI_Comm GetCommServer(void) 73 { return CommServer; } 74 static inline MPI_Comm GetCommClientServer(void) 75 { return CommClientServer; } 76 static inline int GetNbClient(void) 77 { return NbClient; } 78 static inline int GetNbServer(void) 79 { return NbServer; } 80 81 static inline bool IsConnected(void) 82 { return (NbServer==0)?true:false; } 83 84 static inline bool IsClient(void) 85 { return _IsClient; } 86 87 static inline bool IsServer(void) 88 { return _IsServer; } 75 89 76 90 public : // Autre … … 78 92 static void Barrier(MPI_Comm _comm = MPI_COMM_WORLD); 79 93 80 static inline bool DispatchClient(bool _is_server,81 MPIComm & _comm_client,82 MPIComm & _comm_client_server,83 MPIComm & _comm_server,84 MPIComm _comm_parent = CMPIManager::GetCommWorld())85 {86 MPI_Comm comm_client = MPI_Comm_f2c(_comm_client);87 MPI_Comm comm_client_server = MPI_Comm_f2c(_comm_client_server);88 MPI_Comm comm_server = MPI_Comm_f2c(_comm_server);89 MPI_Comm comm_parent = MPI_Comm_f2c(_comm_parent);90 bool ret = CMPIManager::DispatchClient(_is_server, comm_client, comm_client_server, comm_server, comm_parent);91 _comm_client = MPI_Comm_c2f(comm_client);92 _comm_client_server = MPI_Comm_c2f(comm_client_server);93 _comm_server = MPI_Comm_c2f(comm_server);94 return (ret);95 }96 97 98 94 static bool DispatchClient(bool _is_server, 99 95 MPI_Comm & _comm_client, 100 96 MPI_Comm & _comm_client_server, 101 97 MPI_Comm & _comm_server, 102 MPI_Comm _comm_parent = MPI_COMM_WORLD);98 MPI_Comm _comm_parent); 103 99 104 100 public : // Groupes 105 101 106 102 static MPI_Group GetGroupWorld(void); 103 static MPI_Group GetGroup(MPI_Comm Comm); 107 104 static MPI_Group CreateSubGroup(MPI_Group _pgroup, const std::vector<int> & _ranks); 108 105 static MPI_Group CreateSubGroup(MPI_Group _pgroup, int _min_rank, int _max_rank, int _intval = 1); … … 110 107 public : // Tests 111 108 112 static inline bool IsMaster(MPIComm _comm) 113 { return (CMPIManager::IsMaster(MPI_Comm_f2c(_comm))); } 114 115 static inline bool IsRank(int _rank, MPIComm _comm) 116 { return (CMPIManager::IsRank(_rank, MPI_Comm_f2c(_comm))); } 109 117 110 118 111 static bool IsMaster(MPI_Comm _comm = MPI_COMM_WORLD); … … 126 119 static bool Test (MPI_Request & _request); 127 120 128 129 static inline bool HasReceivedData(MPIComm _comm, int _src_rank)130 { return (CMPIManager::HasReceivedData(MPI_Comm_f2c(_comm), _src_rank)); }131 132 static inline std::size_t GetReceivedDataSize(MPIComm _comm, int _src_rank)133 { return (CMPIManager::GetReceivedDataSize(MPI_Comm_f2c(_comm), _src_rank)); }134 135 136 121 137 122 static bool HasReceivedData(MPI_Comm _comm, int _src_rank); 138 123 139 124 static std::size_t GetReceivedDataSize(MPI_Comm _comm, int _src_rank); 125 140 126 static void Receive(MPI_Comm _comm, int _src_rank, char * _data); 141 127 … … 150 136 public : // Communication 'complexe' 151 137 152 static inline void SendLinearBuffer(MPIComm _comm, int _dest_rank, CLinearBuffer & _lbuffer, MPI_Request & _request) 153 { CMPIManager::SendLinearBuffer(MPI_Comm_f2c(_comm), _dest_rank, _lbuffer, _request); } 154 155 static inline void ReceiveLinearBuffer(MPIComm _comm, int _src_rank, CLinearBuffer & _lbuffer) 156 { CMPIManager::ReceiveLinearBuffer(MPI_Comm_f2c(_comm), _src_rank, _lbuffer); } 157 158 static inline boost::shared_ptr<CLinearBuffer> ReceiveLinearBuffer(MPIComm _comm, int _src_rank) 159 { return (CMPIManager::ReceiveLinearBuffer(MPI_Comm_f2c(_comm), _src_rank)); } 160 161 static inline void ReceiveCircularBuffer(MPIComm _comm, int _src_rank, CCircularBuffer & _cbuffer) 162 { CMPIManager::ReceiveCircularBuffer(MPI_Comm_f2c(_comm), _src_rank, _cbuffer); } 163 164 138 165 139 static void SendLinearBuffer(MPI_Comm _comm, int _dest_rank, CLinearBuffer & _lbuffer, MPI_Request & _request); 166 140 static void ReceiveLinearBuffer(MPI_Comm _comm, int _src_rank, CLinearBuffer & _lbuffer); … … 175 149 static void FreeMemory (void * _data); 176 150 151 private : 152 153 static bool Initialized ; 154 static MPI_Comm CommClient ; 155 static MPI_Comm CommServer ; 156 static MPI_Comm CommClientServer ; 157 static int NbClient ; 158 static int NbServer ; 159 160 static bool _IsClient ; 161 static bool _IsServer ; 162 static bool using_server ; 163 static bool using_oasis ; 164 177 165 }; // class CMPIManager 178 166
Note: See TracChangeset
for help on using the changeset viewer.