PaCO++  0.05
paco_comScheduling_libgraph Class Reference

#include <paco_libgraph_comScheduling.h>

Inheritance diagram for paco_comScheduling_libgraph:
Inheritance graph
Collaboration diagram for paco_comScheduling_libgraph:
Collaboration graph

Public Member Functions

virtual void clearAllSchedules ()
 
virtual void clearScheduleId (long id) throw (InvalidArgument)
 
paco_comSchedulecomputeScheduling (unsigned rank, PaCO::PacoTopology_t *srctopo, PaCO::PacoTopology_t *dsttopo, unsigned **com_matrix, void **info_vector[])
 
virtual void displayStatus ()
 
unsigned int get_beta ()
 
unsigned int get_k ()
 
paco_comSchedulegetSchedule (long id)
 
 paco_comScheduling_libgraph ()
 
virtual void propageComMatrix (PaCO_operation *op, unsigned **comMatrix)
 
void set_beta (unsigned int beta)
 
void set_k (unsigned int k)
 
virtual void setSchedule (long id, paco_comSchedule *cs)
 
virtual ~paco_comScheduling_libgraph ()
 

Protected Types

typedef map< long, paco_comSchedule * > _schedule_info_map_t
 

Protected Member Functions

virtual void initializeBigraph (PaCO::PacoTopology_t *srctopo, PaCO::PacoTopology_t *dsttopo)
 

Protected Attributes

unsigned int _beta
 
node ** _client_nodes
 
PaCO::PacoTopology_t_client_topo
 
bigraph * _g
 
unsigned int _k
 
_schedule_info_map_t _schedule_info_map
 
node ** _server_nodes
 
PaCO::PacoTopology_t_server_topo
 

Detailed Description

Definition at line 62 of file paco_libgraph_comScheduling.h.

Member Typedef Documentation

◆ _schedule_info_map_t

typedef map<long, paco_comSchedule*> paco_comScheduling::_schedule_info_map_t
protectedinherited

Definition at line 56 of file CommunicationScheduling.h.

Constructor & Destructor Documentation

◆ paco_comScheduling_libgraph()

paco_comScheduling_libgraph::paco_comScheduling_libgraph ( )

◆ ~paco_comScheduling_libgraph()

paco_comScheduling_libgraph::~paco_comScheduling_libgraph ( )
virtual

Definition at line 15 of file paco_libgraph_comScheduling.cc.

References _client_nodes, _g, and _server_nodes.

Member Function Documentation

◆ clearAllSchedules()

void paco_comScheduling::clearAllSchedules ( )
virtualinherited

Definition at line 44 of file CommunicationScheduling.cc.

References paco_comScheduling::_schedule_info_map.

Referenced by PaCO_operation::clearAllScheduleMemory(), set_beta(), and set_k().

45 {
46 #ifdef DEBUG_INTERNAL
47  std::cerr <<"[INFO] clearing all schedule memories\n";
48 #endif
49  for(_schedule_info_map_t::iterator it = _schedule_info_map.begin(); it!= _schedule_info_map.end(); it++)
50  {
51  delete it->second;
52  }
53  _schedule_info_map.clear();
54 }
_schedule_info_map_t _schedule_info_map

◆ clearScheduleId()

void paco_comScheduling::clearScheduleId ( long  id)
throw (InvalidArgument
)
virtualinherited

Definition at line 26 of file CommunicationScheduling.cc.

References paco_comScheduling::_schedule_info_map.

Referenced by PaCO_operation::clearCommunicationMemoryId(), and PaCO_operation::clearScheduleMemoryId().

27 {
28  if (id<0)
29  throw new InvalidArgument("clearScheduleMemeoryId expects an id >0");
30 
31 #ifdef DEBUG_INTERNAL
32  std::cerr <<"[INFO] clearing schedule memory Id "<<id<<endl;
33 #endif
34 
35  _schedule_info_map_t::iterator it = _schedule_info_map.find(id);
36  if (it != _schedule_info_map.end())
37  {
38  delete _schedule_info_map[id];
39  _schedule_info_map.erase(it);
40  }
41 }
_schedule_info_map_t _schedule_info_map

◆ computeScheduling()

paco_comSchedule * paco_comScheduling_libgraph::computeScheduling ( unsigned  rank,
PaCO::PacoTopology_t srctopo,
PaCO::PacoTopology_t dsttopo,
unsigned **  com_matrix,
void **  info_vector[] 
)
virtual

Implements paco_comScheduling.

Definition at line 92 of file paco_libgraph_comScheduling.cc.

References _client_nodes, _g, _server_nodes, paco_comSchedule_libgraph::build_idx(), paco_comSchedule_libgraph::get_kbps(), initializeBigraph(), and PaCO::PacoTopology_s::total.

95 {
96  // 1. setup a new bigraph
97  initializeBigraph(srctopo, dsttopo);
98 
99  // 2. fill the bigraph
100  for (unsigned i = 0; i < srctopo->total; i++)
101  {
102  if (i!= rank)
103  for (unsigned j = 0; j < dsttopo->total; j++)
104  {
105  _g->add_edge(_client_nodes[i], _server_nodes[j], com_matrix[i][j]);
106 #ifdef INFO_INTERNAL
107  std::cerr << "edge: "<<_client_nodes[i] << " -> "<<_server_nodes[j] << " : "<< com_matrix[i][j]<<endl;
108 #endif
109  }
110  else
111  for (unsigned j = 0; j < dsttopo->total; j++)
112  {
113  _g->add_edge(_client_nodes[i],_server_nodes[j], com_matrix[i][j], info_vector[j]);
114 #ifdef INFO_INTERNAL
115  std::cerr << "edge: "<<_client_nodes[i] << " -> "<<_server_nodes[j] << " : "<< com_matrix[i][j]<<" ("<<info_vector[j]<<")\n";
116 #endif
117  }
118  }
119 
120  _g->remove_empty_nodes();
121 
122  paco_comSchedule_libgraph* schedule_info = new paco_comSchedule_libgraph(new kbps_approximation(_g));
123 
124  schedule_info->get_kbps()->compute_poly2();
125  schedule_info->get_kbps()->serialize();
126  schedule_info->build_idx();
127 
128  return schedule_info;
129 }
virtual void initializeBigraph(PaCO::PacoTopology_t *srctopo, PaCO::PacoTopology_t *dsttopo)
unsigned long total
Definition: PaCO++.idl:35
kbps_approximation * get_kbps() const
Here is the call graph for this function:

◆ displayStatus()

void paco_comScheduling::displayStatus ( )
virtualinherited

Definition at line 70 of file CommunicationScheduling.cc.

References paco_comScheduling::_client_topo, paco_comScheduling::_schedule_info_map, paco_comScheduling::_server_topo, and PaCO::PacoTopology_s::total.

71 {
72  cerr << this << " ctopo: "<<_client_topo<<" - "<<_client_topo->total<< " stopo: "<<_server_topo<<" - "<<_server_topo->total << " map: "<< _schedule_info_map.size() << endl;
73 }
PaCO::PacoTopology_t * _server_topo
PaCO::PacoTopology_t * _client_topo
unsigned long total
Definition: PaCO++.idl:35
_schedule_info_map_t _schedule_info_map

◆ get_beta()

unsigned int paco_comScheduling_libgraph::get_beta ( )

Definition at line 44 of file paco_libgraph_comScheduling.cc.

References _beta.

45 {
46  return _beta;
47 }

◆ get_k()

unsigned int paco_comScheduling_libgraph::get_k ( )

Definition at line 50 of file paco_libgraph_comScheduling.cc.

References _k.

51 {
52  return _k;
53 }

◆ getSchedule()

paco_comSchedule * paco_comScheduling::getSchedule ( long  id)
inherited

return NULL if schedule id is unknown

Definition at line 8 of file CommunicationScheduling.cc.

References paco_comScheduling::_schedule_info_map.

9 {
10  _schedule_info_map_t::iterator it = _schedule_info_map.find(id);
11  if (it != _schedule_info_map.end())
12  {
13  return it->second;
14  }
15  else
16  return NULL;
17  }
_schedule_info_map_t _schedule_info_map

◆ initializeBigraph()

void paco_comScheduling_libgraph::initializeBigraph ( PaCO::PacoTopology_t srctopo,
PaCO::PacoTopology_t dsttopo 
)
protectedvirtual

create and initialize a graph

Definition at line 56 of file paco_libgraph_comScheduling.cc.

References _beta, _client_nodes, _g, _k, _server_nodes, and PaCO::PacoTopology_s::total.

Referenced by computeScheduling().

57 {
58 #ifdef INFO_INTERNAL
59  std::cerr<<__FUNCTION__<<" with beta:"<<_libgraph_beta<<" k:"<<_libgraph_k<<endl;
60 #endif
61 
62  // Removing old instances
63  if (_g) delete _g;
64  if (_client_nodes) delete[] _client_nodes;
65  if (_server_nodes) delete[] _server_nodes;
66 
67  // Creating new instances
68  _g = new bigraph();
69 
70  // Setting up the parametter of the graph
71  if ((_beta==0)||(_k==0)) {
72  std::cerr<< "ERROR: libgraph not initialized -- Specifiy k & beta !!"<<endl;
73  }
74 
75  _g->set_beta(_beta);
76  _g->set_k(_k);
77 
78  _client_nodes = new node*[srctopo->total];
79  _server_nodes = new node*[dsttopo->total];
80 
81  for (unsigned i = 0; i < srctopo->total; i++)
82  {
83  _client_nodes[i] = _g->add_node(true);
84  }
85  for (unsigned i = 0; i < dsttopo->total; i++)
86  {
87  _server_nodes[i] = _g->add_node(false);
88  }
89 }
unsigned long total
Definition: PaCO++.idl:35

◆ propageComMatrix()

void paco_comScheduling::propageComMatrix ( PaCO_operation op,
unsigned **  comMatrix 
)
virtualinherited

Reimplemented in paco_comScheduling_direct.

Definition at line 58 of file CommunicationScheduling.cc.

References PaCO_operation::my_com, PaCO_operation::mytopo, paco_com::paco_bcast(), PaCO_operation::serveur_topo_aller, and PaCO::PacoTopology_s::total.

59 {
60  std::cerr << "[Debug] doing all-2-all communication, #phases: " << op->mytopo.total << endl;
61  int size_temp_vector = sizeof(unsigned) * op->serveur_topo_aller.total;;
62  for (unsigned i = 0; i < op->mytopo.total; i++)
63  {
64  std::cerr << "[Debug] all-2-all phase: "<<i<<" sz:"<<size_temp_vector<< endl;
65  op->my_com->paco_bcast((void*) comMatrix[i], size_temp_vector, i);
66  }
67 }
virtual int paco_bcast(void *buf, int count, int root)=0
PaCO::PacoTopology_t serveur_topo_aller
unsigned long total
Definition: PaCO++.idl:35
PaCO::PacoTopology_t mytopo
Here is the call graph for this function:

◆ set_beta()

void paco_comScheduling_libgraph::set_beta ( unsigned int  beta)

Definition at line 24 of file paco_libgraph_comScheduling.cc.

References _beta, and paco_comScheduling::clearAllSchedules().

25 {
26  if (_beta == beta) return;
27 
28  _beta = beta;
29  // beta change -> clear all schedule memory
31 }
virtual void clearAllSchedules()
Here is the call graph for this function:

◆ set_k()

void paco_comScheduling_libgraph::set_k ( unsigned int  k)

Definition at line 34 of file paco_libgraph_comScheduling.cc.

References _k, and paco_comScheduling::clearAllSchedules().

35 {
36  if (_k == k) return;
37 
38  _k = k;
39  // k change -> clear all schedule memory
41 }
virtual void clearAllSchedules()
Here is the call graph for this function:

◆ setSchedule()

void paco_comScheduling::setSchedule ( long  id,
paco_comSchedule cs 
)
virtualinherited

Definition at line 20 of file CommunicationScheduling.cc.

21 {
22  // _schedule_info_map[id] = cs;
23 }

Member Data Documentation

◆ _beta

unsigned int paco_comScheduling_libgraph::_beta
protected

◆ _client_nodes

node** paco_comScheduling_libgraph::_client_nodes
protected

◆ _client_topo

PaCO::PacoTopology_t* paco_comScheduling::_client_topo
protectedinherited

Definition at line 52 of file CommunicationScheduling.h.

Referenced by paco_comScheduling::displayStatus().

◆ _g

bigraph* paco_comScheduling_libgraph::_g
protected

◆ _k

unsigned int paco_comScheduling_libgraph::_k
protected

◆ _schedule_info_map

◆ _server_nodes

node** paco_comScheduling_libgraph::_server_nodes
protected

◆ _server_topo

PaCO::PacoTopology_t* paco_comScheduling::_server_topo
protectedinherited

Definition at line 53 of file CommunicationScheduling.h.

Referenced by paco_comScheduling::displayStatus().


The documentation for this class was generated from the following files: