PaCO++  0.05
BasicDistributionLibrary Class Referenceabstract

#include <BasicDistributionLibrary.h>

Inheritance diagram for BasicDistributionLibrary:
Inheritance graph
Collaboration diagram for BasicDistributionLibrary:
Collaboration graph

Public Member Functions

 BasicDistributionLibrary (Fabrique *f)
 
 BasicDistributionLibrary (Fabrique *f, void *comm)
 
virtual void clientFree ()=0
 
virtual PieceToSendcomputePiecesToSend (unsigned &size)=0
 
bool computeReceive (Abstrait *darray)
 Compute communication schedule on the server side. More...
 
void computeSend (const void *data, vAbstrait &vdarray, vector< unsigned > &destid)
 Compute communication schedule on the client side. More...
 
virtual bool freeComId (long id)
 
virtual void * getClientData (void *pid, int server_node, long &size, long &length, bool &end)=0
 
virtual void * getDescr ()=0
 
virtual PaCO::PacoTopology_t getDestTopology ()=0
 
const PaCO::distLoc_tgetMode () const
 
virtual long getNodeRank ()=0
 
Abstrait * getResult () const
 If computeReceive returns ok, get the data. More...
 
virtual void * getServerData (long &length)=0
 
virtual PaCO::PacoTopology_t getSourceTopology ()=0
 
virtual bool insertData (void *rcptBuf, unsigned long element_nb)=0
 
void reset ()
 
virtual void serverFree ()=0
 
bool setClientConfiguration (const PaCO::PacoTopology_t &ctopo)
 
virtual bool setComId (long id)
 
void setCommunicator (void *comm)
 
virtual void setDataPtr (void *dataPtr)=0
 
virtual void setDescr (void *descr)=0
 
virtual void setDestTopology (PaCO::PacoTopology_t topo)=0
 
void setFabric (Fabrique *f)
 
bool setGlobalDataConfiguration (const PaCO::PacoGlobalData_t &gd)
 
bool setLocalDataConfiguration (const PaCO::PacoLocalData_t &ld)
 
bool setMode (const PaCO::distLoc_t mode)
 
virtual void setNodeRank (long Rank)=0
 
bool setServerConfiguration (const PaCO::PacoTopology_t &stopo)
 
virtual void setSourceTopology (PaCO::PacoTopology_t topo)=0
 
virtual ~BasicDistributionLibrary ()
 

Private Attributes

PaCO::PacoTopology_t _clttopo
 
void * _comm
 
Abstrait * _darray
 
Fabrique * _fab
 
PaCO::PacoGlobalData_t _gd
 
LocalData_t _ld
 
PaCO::distLoc_t _mode
 
int _remaining
 
PaCO::PacoTopology_t _srvtopo
 
vAbstrait * _vdarray
 

Detailed Description

Definition at line 7 of file BasicDistributionLibrary.h.

Constructor & Destructor Documentation

◆ BasicDistributionLibrary() [1/2]

BasicDistributionLibrary::BasicDistributionLibrary ( Fabrique *  f)

Definition at line 5 of file BasicDistributionLibrary.cc.

References _clttopo, _darray, _srvtopo, _vdarray, setFabric(), and PaCO::PacoTopology_s::total.

5  {
6  setFabric(f);
7  _darray = f->creer();
8  _vdarray = f->vcreer();
9  _vdarray->clear();
10 
11  _clttopo.total = 123; // debug
12  _srvtopo.total = 123; // debug
13 }
unsigned long total
Definition: PaCO++.idl:35
Here is the call graph for this function:

◆ BasicDistributionLibrary() [2/2]

BasicDistributionLibrary::BasicDistributionLibrary ( Fabrique *  f,
void *  comm 
)

Definition at line 15 of file BasicDistributionLibrary.cc.

References _clttopo, _darray, _srvtopo, _vdarray, setFabric(), and PaCO::PacoTopology_s::total.

15  : _comm(comm) {
16  setFabric(f);
17  _darray = f->creer();
18  _vdarray = f->vcreer();
19  _vdarray->clear();
20 
21  _clttopo.total = 123; // debug
22  _srvtopo.total = 123; // debug
23 }
unsigned long total
Definition: PaCO++.idl:35
Here is the call graph for this function:

◆ ~BasicDistributionLibrary()

BasicDistributionLibrary::~BasicDistributionLibrary ( )
virtual

Definition at line 25 of file BasicDistributionLibrary.cc.

References _darray, _fab, and _vdarray.

25  {
26  delete _fab; delete _darray; delete _vdarray;
27 }

Member Function Documentation

◆ clientFree()

virtual void DistributionLibrary::clientFree ( )
pure virtualinherited

◆ computePiecesToSend()

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

Implemented in BasicBC, Controlled, Identity, and GaBro.

◆ computeReceive()

bool BasicDistributionLibrary::computeReceive ( Abstrait *  darray)

Compute communication schedule on the server side.

Definition at line 56 of file BasicDistributionLibrary.cc.

References _clttopo, _comm, _darray, _ld, _mode, _remaining, _srvtopo, _vdarray, computeReceiveDataBlock1D(), nbofPart(), posofPart(), setClientConfiguration(), setMode(), and PaCO::PacoTopology_s::total.

56  {
57 
58  this->setClientConfiguration(darray->topo());
59 
60  // Get the mode of the client
61  this->setMode(darray->mode());
62 
63  unsigned nb = nbofPart(_mode, _clttopo.total, _srvtopo.total, _ld.rank);
64 
65  unsigned pos;
66 
67  // In server side redistribution, empty dist for server nodes whose id > max client node
68  if (darray->dist().length() != 0 ) {
69  pos = posofPart(_mode, _srvtopo.total, darray->dist()[0].rank);
70  } else {
71  pos = 0;
72  }
73 
74  // Initialize _vdarray & remaining (assumed clean)
75  if (_vdarray->size() == 0) {
76  // _vdarray is empty: so let's define its size
77  _vdarray->size(nb);
78  _remaining = nb;
79  }
80 
81 
82  fprintf(stderr, "computeReceive: Node %d : set entry %d/%d to %p\n", _ld.rank, pos, nb, darray);
83  _vdarray->setAbstrait(pos, darray);
84  _remaining--;
85 
86  fprintf(stderr, "computeReceive: Node %d : got %d of %d data\n", _ld.rank, _vdarray->size() - _remaining, _vdarray->size());
87 
88  if (_remaining == 0) {
90  return true;
91  } else {
92  return false;
93  }
94 }
bool computeReceiveDataBlock1D(vAbstrait *sdata, const PaCO::distLoc_t &mode, const unsigned total, const unsigned rank, const ParisBlock_param_t *param, Abstrait *varray, void *comm)
Definition: ServerSide.cc:151
bool setClientConfiguration(const PaCO::PacoTopology_t &ctopo)
unsigned nbofPart(const PaCO::distLoc_t &mode, const unsigned stotal, const unsigned dtotal, const unsigned drank)
Definition: ServerSide.cc:120
bool setMode(const PaCO::distLoc_t mode)
unsigned long total
Definition: PaCO++.idl:35
unsigned posofPart(const PaCO::distLoc_t &mode, const unsigned dtotal, const unsigned srank)
Definition: ServerSide.cc:138
Here is the call graph for this function:

◆ computeSend()

void BasicDistributionLibrary::computeSend ( const void *  data,
vAbstrait &  vdarray,
vector< unsigned > &  destid 
)

Compute communication schedule on the client side.

Definition at line 50 of file BasicDistributionLibrary.cc.

References _clttopo, _comm, _gd, _ld, _mode, _srvtopo, and computeSendDataBlock1D().

50  {
51  _ld.base = (char*) data;
52 
53  computeSendDataBlock1D(_gd, _ld, _clttopo, _srvtopo, vdarray, destid, _mode, _comm);
54 }
void computeSendDataBlock1D(const GlobalData_t &gd, const LocalData_t &sd, const Topology_t &stopo, const Topology_t &dtopo, const ParisBlock_param_t *param, vAbstrait &vdarray, vector< unsigned > &destid, const PaCO::distLoc_t &mode, void *comm)
Definition: ClientSide.cc:215
Here is the call graph for this function:

◆ 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()

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()

virtual void* DistributionLibrary::getDescr ( )
pure virtualinherited

◆ getDestTopology()

virtual PaCO::PacoTopology_t DistributionLibrary::getDestTopology ( )
pure virtualinherited

◆ getMode()

const PaCO::distLoc_t & BasicDistributionLibrary::getMode ( ) const

Definition at line 35 of file BasicDistributionLibrary.cc.

References _mode.

35 { return _mode; }

◆ getNodeRank()

virtual long DistributionLibrary::getNodeRank ( )
pure virtualinherited

◆ getResult()

Abstrait * BasicDistributionLibrary::getResult ( ) const

If computeReceive returns ok, get the data.

Definition at line 96 of file BasicDistributionLibrary.cc.

References _darray.

96 { return _darray; }

◆ getServerData()

virtual void* DistributionLibrary::getServerData ( long &  length)
pure virtualinherited

◆ getSourceTopology()

virtual PaCO::PacoTopology_t DistributionLibrary::getSourceTopology ( )
pure virtualinherited

◆ insertData()

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

Implemented in BasicBC, Controlled, Identity, and GaBro.

◆ reset()

void BasicDistributionLibrary::reset ( )

Definition at line 33 of file BasicDistributionLibrary.cc.

References _vdarray.

33 { _vdarray->clear(); }

◆ serverFree()

virtual void DistributionLibrary::serverFree ( )
pure virtualinherited

◆ setClientConfiguration()

bool BasicDistributionLibrary::setClientConfiguration ( const PaCO::PacoTopology_t ctopo)

Definition at line 39 of file BasicDistributionLibrary.cc.

References _clttopo.

Referenced by computeReceive().

39 { _clttopo = ctopo; return true; }

◆ 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()

void BasicDistributionLibrary::setCommunicator ( void *  comm)
virtual

Implements DistributionLibrary.

Definition at line 29 of file BasicDistributionLibrary.cc.

References _comm.

◆ setDataPtr()

virtual void DistributionLibrary::setDataPtr ( void *  dataPtr)
pure virtualinherited

◆ setDescr()

virtual void DistributionLibrary::setDescr ( void *  descr)
pure virtualinherited

◆ setDestTopology()

virtual void DistributionLibrary::setDestTopology ( PaCO::PacoTopology_t  topo)
pure virtualinherited

◆ setFabric()

void BasicDistributionLibrary::setFabric ( Fabrique *  f)

Definition at line 31 of file BasicDistributionLibrary.cc.

References _fab.

Referenced by BasicDistributionLibrary().

31 { _fab = f; }

◆ setGlobalDataConfiguration()

bool BasicDistributionLibrary::setGlobalDataConfiguration ( const PaCO::PacoGlobalData_t gd)

Definition at line 42 of file BasicDistributionLibrary.cc.

References _gd.

42 { _gd = gd; return true; }

◆ setLocalDataConfiguration()

bool BasicDistributionLibrary::setLocalDataConfiguration ( const PaCO::PacoLocalData_t ld)

Definition at line 43 of file BasicDistributionLibrary.cc.

References _ld, PaCO::PacoLocalData_s::len, PaCO::PacoLocalData_s::rank, and PaCO::PacoLocalData_s::start.

43  {
44  _ld.rank = ld.rank;
45  _ld.start = ld.start;
46  _ld.len = ld.len;
47  return true;
48 }
unsigned long start
Definition: PaCO++.idl:27
unsigned long rank
Definition: PaCO++.idl:26
unsigned long len
Definition: PaCO++.idl:28

◆ setMode()

bool BasicDistributionLibrary::setMode ( const PaCO::distLoc_t  mode)

Definition at line 37 of file BasicDistributionLibrary.cc.

References _mode.

Referenced by computeReceive().

37 { _mode = mode; return true; } // true if ok

◆ setNodeRank()

virtual void DistributionLibrary::setNodeRank ( long  Rank)
pure virtualinherited

◆ setServerConfiguration()

bool BasicDistributionLibrary::setServerConfiguration ( const PaCO::PacoTopology_t stopo)

Definition at line 40 of file BasicDistributionLibrary.cc.

References _srvtopo.

40 { _srvtopo = stopo; return true; }

◆ setSourceTopology()

virtual void DistributionLibrary::setSourceTopology ( PaCO::PacoTopology_t  topo)
pure virtualinherited

Member Data Documentation

◆ _clttopo

PaCO::PacoTopology_t BasicDistributionLibrary::_clttopo
private

◆ _comm

void* BasicDistributionLibrary::_comm
private

Definition at line 18 of file BasicDistributionLibrary.h.

Referenced by computeReceive(), computeSend(), and setCommunicator().

◆ _darray

Abstrait* BasicDistributionLibrary::_darray
private

◆ _fab

Fabrique* BasicDistributionLibrary::_fab
private

Definition at line 20 of file BasicDistributionLibrary.h.

Referenced by setFabric(), and ~BasicDistributionLibrary().

◆ _gd

PaCO::PacoGlobalData_t BasicDistributionLibrary::_gd
private

Definition at line 13 of file BasicDistributionLibrary.h.

Referenced by computeSend(), and setGlobalDataConfiguration().

◆ _ld

LocalData_t BasicDistributionLibrary::_ld
private

◆ _mode

PaCO::distLoc_t BasicDistributionLibrary::_mode
private

Definition at line 10 of file BasicDistributionLibrary.h.

Referenced by computeReceive(), computeSend(), getMode(), and setMode().

◆ _remaining

int BasicDistributionLibrary::_remaining
private

Definition at line 23 of file BasicDistributionLibrary.h.

Referenced by computeReceive().

◆ _srvtopo

PaCO::PacoTopology_t BasicDistributionLibrary::_srvtopo
private

◆ _vdarray

vAbstrait* BasicDistributionLibrary::_vdarray
private

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