PaCO++  0.05
ParisBasicExample Class Referenceabstract

#include <ParisBasicExample.h>

Inheritance diagram for ParisBasicExample:
Inheritance graph
Collaboration diagram for ParisBasicExample:
Collaboration graph

Public Member Functions

virtual void clientFree ()
 
virtual void clientFree (int server_node)
 
virtual PieceToSendcomputePiecesToSend ()
 
virtual PieceToSendcomputePiecesToSend (unsigned &size)=0
 
virtual bool freeComId (long id)
 
virtual void * getClientData (int server_node, long &size, long &length, bool &end)
 
virtual void * getClientData (void *pid, int server_node, long &size, long &length, bool &end)=0
 
virtual void * getDescr ()
 
virtual PaCO::PacoTopology_t getDestTopology ()
 
virtual long getNodeRank ()
 
virtual void * getServerData (long &length)
 
virtual PaCO::PacoTopology_t getSourceTopology ()
 
virtual bool insertData (void *rcptBuf)
 
virtual bool insertData (void *rcptBuf, unsigned long element_nb)=0
 
 ParisBasicExample ()
 
virtual void serverFree ()
 
virtual bool setComId (long id)
 
virtual void setCommunicator (void *group)
 
virtual void setDataPtr (void *dataPtr)
 
virtual void setDescr (void *descr)
 
virtual void setDestTopology (PaCO::PacoTopology_t topo)
 
void setEltSize (long size)
 
void setNbElt (long elt_nb)
 
virtual void setNodeRank (long Rank)
 
virtual void setSourceTopology (PaCO::PacoTopology_t topo)
 
virtual ~ParisBasicExample ()
 

Private Attributes

long _data_elt_nb
 
long * _data_rst
 
long _data_size
 
PaCO::PacoTopology_t _destTopo
 
CORBA::Short _length
 
long _my_rank
 
long _server_nb_nodes
 
PaCO::PacoTopology_t _srcTopo
 
char * _user_data
 
long * position
 
char * temp_buffer
 

Detailed Description

Definition at line 8 of file ParisBasicExample.h.

Constructor & Destructor Documentation

◆ ParisBasicExample()

ParisBasicExample::ParisBasicExample ( )

Definition at line 6 of file ParisBasicExample.cc.

References _length, _user_data, and temp_buffer.

◆ ~ParisBasicExample()

ParisBasicExample::~ParisBasicExample ( )
virtual

Definition at line 14 of file ParisBasicExample.cc.

References _data_rst, and position.

15 {
16  delete position;
17  delete _data_rst;
18 }

Member Function Documentation

◆ clientFree() [1/2]

void ParisBasicExample::clientFree ( )
virtual

Implements DistributionLibrary.

Definition at line 177 of file ParisBasicExample.cc.

References temp_buffer.

Referenced by getClientData().

178 {
179  free(temp_buffer);
180 }

◆ clientFree() [2/2]

void ParisBasicExample::clientFree ( int  server_node)
virtual

Definition at line 183 of file ParisBasicExample.cc.

References temp_buffer.

184 {
185  free(temp_buffer);
186 }

◆ computePiecesToSend() [1/2]

PieceToSend * ParisBasicExample::computePiecesToSend ( )
virtual

Definition at line 98 of file ParisBasicExample.cc.

References _data_elt_nb, _data_size, _my_rank, _server_nb_nodes, PieceToSend::destNode, PieceToSend::size, and PieceToSend::sourceNode.

99 {
100  // Compute total data length
101  long total_length = _data_size * _data_elt_nb;
102  // We send at each server node the
103  // same data
104  PieceToSend * comm_vector = new PieceToSend[_server_nb_nodes];
105  for (int i = 0; i < _server_nb_nodes; i++)
106  {
107  comm_vector[i].sourceNode = _my_rank;
108  comm_vector[i].destNode = i;
109  if (i == _my_rank)
110  {
111  comm_vector[i].size = total_length;
112  }
113  else
114  {
115  comm_vector[i].size = 0;
116  }
117  }
118  return comm_vector;
119 }

◆ computePiecesToSend() [2/2]

virtual PieceToSend* DistributionLibrary::computePiecesToSend ( unsigned &  size)
pure virtualinherited

Implemented in BasicBC, Controlled, Identity, and GaBro.

◆ freeComId()

virtual bool DistributionLibrary::freeComId ( long  id)
inlinevirtualinherited

Reimplemented in BasicBC, and GaBro.

Definition at line 41 of file DistributionLibrairie.h.

41 { return false;}

◆ getClientData() [1/2]

void * ParisBasicExample::getClientData ( int  server_node,
long &  size,
long &  length,
bool &  end 
)
virtual

Definition at line 134 of file ParisBasicExample.cc.

References _data_elt_nb, _data_rst, _data_size, _length, _user_data, clientFree(), position, and temp_buffer.

135 {
136  if (size > 0)
137  {
138  if (temp_buffer) clientFree(server_node);
139  // First get position
140  long actual_pos = position[server_node];
141  // Test if size > _data_rst
142  long real_size = 0;
143  if (size > _data_rst[server_node])
144  {
145  real_size = _data_rst[server_node];
146  size = size - _data_rst[server_node];
147  _data_rst[server_node] = 0;
148  }
149  else
150  {
151  real_size = size;
152  _data_rst[server_node] = _data_rst[server_node] - size;
153  size = 0;
154  }
155  length = real_size / _data_size;
156  _length = length;
157  end = true;
158  position[server_node] = actual_pos + real_size;
159  if (_data_rst[server_node] == 0)
160  {
161  _data_rst[server_node] = _data_size * _data_elt_nb;
162  position[server_node] = 0;
163  }
164  return &_user_data[actual_pos];
165  }
166  else
167  {
168  length = 0;
169  _length = length;
170  end = true;
171  return NULL;
172  }
173  return NULL;
174 }
virtual void clientFree()
CORBA::Short _length
Here is the call graph for this function:

◆ getClientData() [2/2]

virtual void* DistributionLibrary::getClientData ( void *  pid,
int  server_node,
long &  size,
long &  length,
bool &  end 
)
pure virtualinherited

Implemented in BasicBC, Controlled, Identity, and GaBro.

◆ getDescr()

void * ParisBasicExample::getDescr ( )
virtual

Implements DistributionLibrary.

Definition at line 210 of file ParisBasicExample.cc.

References _length.

211 {
212  return &_length;
213 }
CORBA::Short _length

◆ getDestTopology()

PaCO::PacoTopology_t ParisBasicExample::getDestTopology ( )
virtual

Implements DistributionLibrary.

Definition at line 80 of file ParisBasicExample.cc.

References _destTopo.

81 {
82  return _destTopo;
83 }
PaCO::PacoTopology_t _destTopo

◆ getNodeRank()

long ParisBasicExample::getNodeRank ( )
virtual

Implements DistributionLibrary.

Definition at line 92 of file ParisBasicExample.cc.

References _my_rank.

93 {
94  return _my_rank;
95 }

◆ getServerData()

void * ParisBasicExample::getServerData ( long &  length)
virtual

Implements DistributionLibrary.

Definition at line 196 of file ParisBasicExample.cc.

References _length, and _user_data.

197 {
198  length = _length;
199  return _user_data;
200 }
CORBA::Short _length

◆ getSourceTopology()

PaCO::PacoTopology_t ParisBasicExample::getSourceTopology ( )
virtual

Implements DistributionLibrary.

Definition at line 53 of file ParisBasicExample.cc.

References _srcTopo.

54 {
55  return _srcTopo;
56 }
PaCO::PacoTopology_t _srcTopo

◆ insertData() [1/2]

bool ParisBasicExample::insertData ( void *  rcptBuf)
virtual

Definition at line 189 of file ParisBasicExample.cc.

References _user_data.

190 {
191  _user_data = (char *) rcptBuf;
192  return true;
193 }

◆ insertData() [2/2]

virtual bool DistributionLibrary::insertData ( void *  rcptBuf,
unsigned long  element_nb 
)
pure virtualinherited

Implemented in BasicBC, Controlled, Identity, and GaBro.

◆ serverFree()

virtual void ParisBasicExample::serverFree ( )
inlinevirtual

Implements DistributionLibrary.

Definition at line 36 of file ParisBasicExample.h.

36 {}

◆ setComId()

virtual bool DistributionLibrary::setComId ( long  id)
inlinevirtualinherited

Reimplemented in BasicBC, and GaBro.

Definition at line 40 of file DistributionLibrairie.h.

Referenced by PaCO_operation::useCommunicationMemoryId().

40 { return false;}

◆ setCommunicator()

virtual void ParisBasicExample::setCommunicator ( void *  group)
inlinevirtual

Implements DistributionLibrary.

Definition at line 21 of file ParisBasicExample.h.

21 {}

◆ setDataPtr()

void ParisBasicExample::setDataPtr ( void *  dataPtr)
virtual

Implements DistributionLibrary.

Definition at line 122 of file ParisBasicExample.cc.

References _data_elt_nb, _data_rst, _data_size, _my_rank, _server_nb_nodes, _user_data, and position.

123 {
124  _user_data = (char*) dataPtr;
125  cerr << "_data_size " <<_data_size << endl;
126  cerr << "_data_elt_nb " <<_data_elt_nb << endl;
127  cerr << "_my_rank " <<_my_rank << endl;
128  cerr << "_server_nb_nodes " <<_server_nb_nodes << endl;
129  cerr << "_data_rst " <<_data_rst << endl;
130  cerr << " position" << position << endl;
131 }

◆ setDescr()

void ParisBasicExample::setDescr ( void *  descr)
virtual

Implements DistributionLibrary.

Definition at line 203 of file ParisBasicExample.cc.

References _length.

204 {
205  _length = *((CORBA::Short*) descr);
206  cerr << " Set Descr : "<< _length << endl;
207 }
CORBA::Short _length

◆ setDestTopology()

void ParisBasicExample::setDestTopology ( PaCO::PacoTopology_t  topo)
virtual

Implements DistributionLibrary.

Definition at line 59 of file ParisBasicExample.cc.

References _data_elt_nb, _data_rst, _data_size, _destTopo, _server_nb_nodes, position, and PaCO::PacoTopology_s::total.

60 {
61  _destTopo = topo;
63  position = new long[_server_nb_nodes];
64  _data_rst = new long[_server_nb_nodes];
65  for (int i = 0; i < _server_nb_nodes; i++)
66  {
67  position[i] = 0;
68  _data_rst[i] = 0;
69  }
70  if (_data_size && _data_elt_nb)
71  {
72  for (int i = 0; i < _server_nb_nodes; i++)
73  {
75  }
76  }
77 }
unsigned long total
Definition: PaCO++.idl:35
PaCO::PacoTopology_t _destTopo

◆ setEltSize()

void ParisBasicExample::setEltSize ( long  size)

Definition at line 21 of file ParisBasicExample.cc.

References _data_elt_nb, _data_rst, _data_size, and _server_nb_nodes.

22 {
23  _data_size = size;
25  {
26  for (int i = 0; i < _server_nb_nodes; i++)
27  {
29  }
30  }
31 }

◆ setNbElt()

void ParisBasicExample::setNbElt ( long  elt_nb)

Definition at line 34 of file ParisBasicExample.cc.

References _data_elt_nb, _data_rst, _data_size, and _server_nb_nodes.

35 {
36  _data_elt_nb = elt_nb;
38  {
39  for (int i = 0; i < _server_nb_nodes; i++)
40  {
42  }
43  }
44 }

◆ setNodeRank()

void ParisBasicExample::setNodeRank ( long  Rank)
virtual

Implements DistributionLibrary.

Definition at line 86 of file ParisBasicExample.cc.

References _my_rank.

87 {
88  _my_rank = Rank;
89 }

◆ setSourceTopology()

void ParisBasicExample::setSourceTopology ( PaCO::PacoTopology_t  topo)
virtual

Implements DistributionLibrary.

Definition at line 47 of file ParisBasicExample.cc.

References _srcTopo.

48 {
49  _srcTopo = topo;
50 }
PaCO::PacoTopology_t _srcTopo

Member Data Documentation

◆ _data_elt_nb

long ParisBasicExample::_data_elt_nb
private

◆ _data_rst

long* ParisBasicExample::_data_rst
private

◆ _data_size

long ParisBasicExample::_data_size
private

◆ _destTopo

PaCO::PacoTopology_t ParisBasicExample::_destTopo
private

Definition at line 44 of file ParisBasicExample.h.

Referenced by getDestTopology(), and setDestTopology().

◆ _length

CORBA::Short ParisBasicExample::_length
private

◆ _my_rank

long ParisBasicExample::_my_rank
private

Definition at line 49 of file ParisBasicExample.h.

Referenced by computePiecesToSend(), getNodeRank(), setDataPtr(), and setNodeRank().

◆ _server_nb_nodes

long ParisBasicExample::_server_nb_nodes
private

◆ _srcTopo

PaCO::PacoTopology_t ParisBasicExample::_srcTopo
private

Definition at line 43 of file ParisBasicExample.h.

Referenced by getSourceTopology(), and setSourceTopology().

◆ _user_data

char* ParisBasicExample::_user_data
private

◆ position

long* ParisBasicExample::position
private

Definition at line 53 of file ParisBasicExample.h.

Referenced by getClientData(), setDataPtr(), setDestTopology(), and ~ParisBasicExample().

◆ temp_buffer

char* ParisBasicExample::temp_buffer
private

Definition at line 55 of file ParisBasicExample.h.

Referenced by clientFree(), getClientData(), and ParisBasicExample().


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