PaCO++  0.05
ParisBlock Class Referenceabstract

#include <ParisBlock.h>

Inheritance diagram for ParisBlock:
Inheritance graph
Collaboration diagram for ParisBlock:
Collaboration graph

Public Member Functions

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
 
void * getConfig ()
 
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
 
 ParisBlock (Fabrique *f)
 
 ParisBlock (Fabrique *f, unsigned int blocksize)
 
void reset ()
 
virtual void serverFree ()=0
 
bool setClientConfiguration (const PaCO::PacoTopology_t &ctopo)
 
virtual bool setComId (long id)
 
void setCommunicator (void *comm)
 
int setConfig (void *config)
 
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 ~ParisBlock ()
 

Private Attributes

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

Detailed Description

Definition at line 9 of file ParisBlock.h.

Constructor & Destructor Documentation

◆ ParisBlock() [1/2]

ParisBlock::ParisBlock ( Fabrique *  f)

Definition at line 5 of file ParisBlock.cc.

References _clttopo, _darray, _param, _srvtopo, _vdarray, ParisBlock_param_t::blocksize, PARISBLOCK_BLOCK, setFabric(), PaCO::PacoTopology_s::total, ParisBlock_param_t::type, and ParisBlock_param_t::unitblocksize.

Referenced by ParisBlock_fab::paco_create().

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 
14  // param
15  _param.type = PARISBLOCK_BLOCK; // default is bloc
16  _param.blocksize = 1; // default is cyclic(1)
17  _param.unitblocksize = 1; // by default
18 
19 }
Abstrait * _darray
Definition: ParisBlock.h:23
void setFabric(Fabrique *f)
Definition: ParisBlock.cc:25
vAbstrait * _vdarray
Definition: ParisBlock.h:24
PaCO::PacoTopology_t _clttopo
Definition: ParisBlock.h:13
unsigned long total
Definition: PaCO++.idl:35
PaCO::PacoTopology_t _srvtopo
Definition: ParisBlock.h:14
ParisBlock_param_t _param
Definition: ParisBlock.h:28
unsigned int blocksize
Definition: Type.h:13
unsigned int unitblocksize
Definition: Type.h:15
ParisBlock_distri_type_t type
Definition: Type.h:12
Here is the call graph for this function:

◆ ParisBlock() [2/2]

ParisBlock::ParisBlock ( Fabrique *  f,
unsigned int  blocksize 
)

◆ ~ParisBlock()

ParisBlock::~ParisBlock ( )
virtual

Definition at line 21 of file ParisBlock.cc.

References _darray, _fab, and _vdarray.

21  {
22  delete _fab; delete _darray; delete _vdarray;
23 }
Abstrait * _darray
Definition: ParisBlock.h:23
vAbstrait * _vdarray
Definition: ParisBlock.h:24
Fabrique * _fab
Definition: ParisBlock.h:22

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 ParisBlock::computeReceive ( Abstrait *  darray)

Compute communication schedule on the server side.

Definition at line 59 of file ParisBlock.cc.

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

Referenced by setCommunicator().

59  {
60 
61  this->setClientConfiguration(darray->topo());
62 
63  // Get the mode of the client
64  this->setMode(darray->mode());
65 
66  unsigned nb = nbofPart(_mode, _clttopo.total, _srvtopo.total, _ld.rank);
67 
68  unsigned pos;
69 
70  // In server side redistribution, empty dist for server nodes whose id > max client node
71  if (darray->dist().length() != 0 ) {
72  pos = posofPart(_mode, _srvtopo.total, darray->dist()[0].rank);
73  } else {
74  pos = 0;
75  }
76 
77  // Initialize _vdarray & remaining (assumed clean)
78  if (_vdarray->size() == 0) {
79  // _vdarray is empty: so let's define its size
80  _vdarray->size(nb);
81  _remaining = nb;
82  }
83 
84 
85  // fprintf(stderr, "computeReceive: Node %d : set entry %d/%d to %p\n", _ld.rank, pos, nb, darray);
86  _vdarray->setAbstrait(pos, darray);
87  _remaining--;
88 
89  // fprintf(stderr, "computeReceive: Node %d : got %d of %d data\n", _ld.rank, _vdarray->size() - _remaining, _vdarray->size());
90 
91  if (_remaining == 0) {
93  return true;
94  } else {
95  return false;
96  }
97 }
Abstrait * _darray
Definition: ParisBlock.h:23
vAbstrait * _vdarray
Definition: ParisBlock.h:24
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
void * _comm
Definition: ParisBlock.h:20
LocalData_t _ld
Definition: ParisBlock.h:18
unsigned nbofPart(const PaCO::distLoc_t &mode, const unsigned stotal, const unsigned dtotal, const unsigned drank)
Definition: ServerSide.cc:120
PaCO::PacoTopology_t _clttopo
Definition: ParisBlock.h:13
unsigned long total
Definition: PaCO++.idl:35
int _remaining
Definition: ParisBlock.h:25
PaCO::PacoTopology_t _srvtopo
Definition: ParisBlock.h:14
PaCO::distLoc_t _mode
Definition: ParisBlock.h:12
unsigned posofPart(const PaCO::distLoc_t &mode, const unsigned dtotal, const unsigned srank)
Definition: ServerSide.cc:138
ParisBlock_param_t _param
Definition: ParisBlock.h:28
bool setClientConfiguration(const PaCO::PacoTopology_t &ctopo)
Definition: ParisBlock.cc:33
bool setMode(const PaCO::distLoc_t mode)
Definition: ParisBlock.cc:31
Here is the call graph for this function:

◆ computeSend()

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

Compute communication schedule on the client side.

Definition at line 53 of file ParisBlock.cc.

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

Referenced by setCommunicator().

53  {
54  _ld.base = (char*) data;
55 
57 }
PaCO::PacoGlobalData_t _gd
Definition: ParisBlock.h:15
void * _comm
Definition: ParisBlock.h:20
LocalData_t _ld
Definition: ParisBlock.h:18
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
PaCO::PacoTopology_t _clttopo
Definition: ParisBlock.h:13
PaCO::PacoTopology_t _srvtopo
Definition: ParisBlock.h:14
PaCO::distLoc_t _mode
Definition: ParisBlock.h:12
ParisBlock_param_t _param
Definition: ParisBlock.h:28
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.

◆ getConfig()

void * ParisBlock::getConfig ( )

Definition at line 49 of file ParisBlock.cc.

References _param.

Referenced by setCommunicator().

49  {
50  return (void*) &_param;
51 }
ParisBlock_param_t _param
Definition: ParisBlock.h:28

◆ getDescr()

virtual void* DistributionLibrary::getDescr ( )
pure virtualinherited

◆ getDestTopology()

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

◆ getMode()

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

Definition at line 29 of file ParisBlock.cc.

References _mode.

Referenced by setCommunicator().

29 { return _mode; }
PaCO::distLoc_t _mode
Definition: ParisBlock.h:12

◆ getNodeRank()

virtual long DistributionLibrary::getNodeRank ( )
pure virtualinherited

◆ getResult()

Abstrait * ParisBlock::getResult ( ) const

If computeReceive returns ok, get the data.

Definition at line 99 of file ParisBlock.cc.

References _darray.

Referenced by setCommunicator().

99 { return _darray; }
Abstrait * _darray
Definition: ParisBlock.h:23

◆ 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 ParisBlock::reset ( )

Definition at line 27 of file ParisBlock.cc.

References _vdarray.

Referenced by setCommunicator().

27 { _vdarray->clear(); }
vAbstrait * _vdarray
Definition: ParisBlock.h:24

◆ serverFree()

virtual void DistributionLibrary::serverFree ( )
pure virtualinherited

◆ setClientConfiguration()

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

Definition at line 33 of file ParisBlock.cc.

References _clttopo.

Referenced by computeReceive(), and setCommunicator().

33 { _clttopo = ctopo; return true; }
PaCO::PacoTopology_t _clttopo
Definition: ParisBlock.h:13

◆ 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 ParisBlock::setCommunicator ( void *  comm)
inlinevirtual

◆ setConfig()

int ParisBlock::setConfig ( void *  config)

Definition at line 44 of file ParisBlock.cc.

References _param.

Referenced by setCommunicator().

44  {
45  _param = * ( ParisBlock_param_t*) config;
46  return 0;
47 }
ParisBlock_param_t _param
Definition: ParisBlock.h:28

◆ 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 ParisBlock::setFabric ( Fabrique *  f)

Definition at line 25 of file ParisBlock.cc.

References _fab.

Referenced by ParisBlock(), and setCommunicator().

25 { _fab = f; }
Fabrique * _fab
Definition: ParisBlock.h:22

◆ setGlobalDataConfiguration()

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

Definition at line 36 of file ParisBlock.cc.

References _gd.

Referenced by setCommunicator().

36 { _gd = gd; return true; }
PaCO::PacoGlobalData_t _gd
Definition: ParisBlock.h:15

◆ setLocalDataConfiguration()

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

Definition at line 37 of file ParisBlock.cc.

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

Referenced by setCommunicator().

37  {
38  _ld.rank = ld.rank;
39  _ld.start = ld.start;
40  _ld.len = ld.len;
41  return true;
42 }
LocalData_t _ld
Definition: ParisBlock.h:18
unsigned long start
Definition: PaCO++.idl:27
unsigned long rank
Definition: PaCO++.idl:26
unsigned long len
Definition: PaCO++.idl:28

◆ setMode()

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

Definition at line 31 of file ParisBlock.cc.

References _mode.

Referenced by computeReceive(), and setCommunicator().

31 { _mode = mode; return true; } // true if ok
PaCO::distLoc_t _mode
Definition: ParisBlock.h:12

◆ setNodeRank()

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

◆ setServerConfiguration()

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

Definition at line 34 of file ParisBlock.cc.

References _srvtopo.

Referenced by setCommunicator().

34 { _srvtopo = stopo; return true; }
PaCO::PacoTopology_t _srvtopo
Definition: ParisBlock.h:14

◆ setSourceTopology()

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

Member Data Documentation

◆ _clttopo

PaCO::PacoTopology_t ParisBlock::_clttopo
private

Definition at line 13 of file ParisBlock.h.

Referenced by computeReceive(), computeSend(), ParisBlock(), and setClientConfiguration().

◆ _comm

void* ParisBlock::_comm
private

Definition at line 20 of file ParisBlock.h.

Referenced by computeReceive(), and computeSend().

◆ _darray

Abstrait* ParisBlock::_darray
private

Definition at line 23 of file ParisBlock.h.

Referenced by computeReceive(), getResult(), ParisBlock(), and ~ParisBlock().

◆ _fab

Fabrique* ParisBlock::_fab
private

Definition at line 22 of file ParisBlock.h.

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

◆ _gd

PaCO::PacoGlobalData_t ParisBlock::_gd
private

Definition at line 15 of file ParisBlock.h.

Referenced by computeSend(), and setGlobalDataConfiguration().

◆ _ld

LocalData_t ParisBlock::_ld
private

Definition at line 18 of file ParisBlock.h.

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

◆ _mode

PaCO::distLoc_t ParisBlock::_mode
private

Definition at line 12 of file ParisBlock.h.

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

◆ _param

ParisBlock_param_t ParisBlock::_param
private

Definition at line 28 of file ParisBlock.h.

Referenced by computeReceive(), computeSend(), getConfig(), ParisBlock(), and setConfig().

◆ _remaining

int ParisBlock::_remaining
private

Definition at line 25 of file ParisBlock.h.

Referenced by computeReceive().

◆ _srvtopo

PaCO::PacoTopology_t ParisBlock::_srvtopo
private

Definition at line 14 of file ParisBlock.h.

Referenced by computeReceive(), computeSend(), ParisBlock(), and setServerConfiguration().

◆ _vdarray

vAbstrait* ParisBlock::_vdarray
private

Definition at line 24 of file ParisBlock.h.

Referenced by computeReceive(), ParisBlock(), reset(), and ~ParisBlock().


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