PaCO++  0.05
CommunicationScheduling.h
Go to the documentation of this file.
1 #ifndef COMMUNICATION_SCHEDULING_IS_DEFINED
2 #define COMMUNICATION_SCHEDULING_IS_DEFINED
3 
4 #include "FabriqueManagerTpl.h"
5 #include "PaCO++_types.h"
6 #include "PaCO++_operation.h"
7 #include "com/paco_com.h"
8 
9 // Abstract class to be implemeted by each scheduling lib
10 
13 {
14 public:
15 
16  virtual unsigned int getNbPhases()=0;
17  virtual unsigned int getElementPhase(const unsigned phase)=0;
18  virtual unsigned int getSrc(const unsigned phase, const unsigned id)=0;
19  virtual unsigned int getDst(const unsigned phase, const unsigned id)=0;
20  virtual unsigned int getSize(const unsigned phase, const unsigned id)=0;
21  virtual void* getInfo(const unsigned phase, const unsigned id)=0;
22 
23 };
24 
25 // Abstract class to be implemeted by each scheduling lib
28 {
29 
30 public:
32  virtual ~paco_comScheduling();
33 
34  virtual paco_comSchedule* computeScheduling(unsigned rank,
35  PaCO::PacoTopology_t* srctopo, PaCO::PacoTopology_t* dsttopo,
36  unsigned **com_matrix, void** info_vector[])=0;
37 
39  paco_comSchedule* getSchedule(long id);
40 
41  virtual void setSchedule(long id, paco_comSchedule* cs);
42 
43  virtual void clearScheduleId(long id) throw (InvalidArgument);
44 
45  virtual void clearAllSchedules();
46 
47  virtual void propageComMatrix(PaCO_operation* op, unsigned **comMatrix);
48 
49  virtual void displayStatus();
50 
51 protected:
54 
55  // Save scheduling
56  typedef map<long, paco_comSchedule*> _schedule_info_map_t;
57  _schedule_info_map_t _schedule_info_map; // the map of predefined schedules
58 
59 };
60 
61 // Abstract fabrique class for communication scheduling
63 {
64 public:
66  virtual paco_comScheduling* create_comScheduling()=0;
67 };
68 
69 // The scheduling fabrique
71 
72 #endif
PaCO::PacoTopology_t * _server_topo
map< long, paco_comSchedule * > _schedule_info_map_t
PaCO::PacoTopology_t * _client_topo
virtual unsigned int getElementPhase(const unsigned phase)=0
virtual unsigned int getSrc(const unsigned phase, const unsigned id)=0
virtual unsigned int getSize(const unsigned phase, const unsigned id)=0
paco_fabrique_manager_tpl< paco_fabrique_comScheduling > paco_fabrique_manager_comScheduling
_schedule_info_map_t _schedule_info_map
virtual unsigned int getNbPhases()=0
virtual unsigned int getDst(const unsigned phase, const unsigned id)=0
virtual void * getInfo(const unsigned phase, const unsigned id)=0