PaCO++  0.05
ParisBlockMPC Class Referenceabstract

#include <ParisBlockMPC.h>

Inheritance diagram for ParisBlockMPC:
Inheritance graph
Collaboration diagram for ParisBlockMPC:
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
 
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
 
 ParisBlockMPC (Fabrique *f)
 
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 ~ParisBlockMPC ()
 

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 ParisBlockMPC.h.

Constructor & Destructor Documentation

◆ ParisBlockMPC()

ParisBlockMPC::ParisBlockMPC ( Fabrique *  f)

Definition at line 5 of file ParisBlockMPC.cc.

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

Referenced by ParisBlockMPC_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 }
PaCO::PacoTopology_t _clttopo
Definition: ParisBlockMPC.h:11
vAbstrait * _vdarray
Definition: ParisBlockMPC.h:22
void setFabric(Fabrique *f)
unsigned long total
Definition: PaCO++.idl:35
PaCO::PacoTopology_t _srvtopo
Definition: ParisBlockMPC.h:12
Abstrait * _darray
Definition: ParisBlockMPC.h:21
Here is the call graph for this function:

◆ ~ParisBlockMPC()

ParisBlockMPC::~ParisBlockMPC ( )
virtual

Definition at line 15 of file ParisBlockMPC.cc.

References _darray, _fab, and _vdarray.

15  {
16  delete _fab; delete _darray; delete _vdarray;
17 }
vAbstrait * _vdarray
Definition: ParisBlockMPC.h:22
Fabrique * _fab
Definition: ParisBlockMPC.h:20
Abstrait * _darray
Definition: ParisBlockMPC.h:21

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

Compute communication schedule on the server side.

Definition at line 44 of file ParisBlockMPC.cc.

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

Referenced by setCommunicator().

44  {
45 
46  this->setClientConfiguration(darray->topo());
47 
48  // Get the mode of the client
49  this->setMode(darray->mode());
50 
51  unsigned nb = nbofPart(_mode, _clttopo.total, _srvtopo.total, _ld.rank);
52 
53  unsigned pos;
54 
55  // In server side redistribution, empty dist for server nodes whose id > max client node
56  if (darray->dist().length() != 0 ) {
57  pos = posofPart(_mode, _srvtopo.total, darray->dist()[0].rank);
58  } else {
59  pos = 0;
60  }
61 
62  // Initialize _vdarray & remaining (assumed clean)
63  if (_vdarray->size() == 0) {
64  // _vdarray is empty: so let's define its size
65  _vdarray->size(nb);
66  _remaining = nb;
67  }
68 
69 
70  fprintf(stderr, "computeReceive: Node %d : set entry %d/%d to %p\n", _ld.rank, pos, nb, darray);
71  _vdarray->setAbstrait(pos, darray);
72  _remaining--;
73 
74  fprintf(stderr, "computeReceive: Node %d : got %d of %d data\n", _ld.rank, _vdarray->size() - _remaining, _vdarray->size());
75 
76  if (_remaining == 0) {
78  return true;
79  } else {
80  return false;
81  }
82 }
LocalData_t _ld
Definition: ParisBlockMPC.h:16
PaCO::distLoc_t _mode
Definition: ParisBlockMPC.h:10
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
PaCO::PacoTopology_t _clttopo
Definition: ParisBlockMPC.h:11
unsigned nbofPart(const PaCO::distLoc_t &mode, const unsigned stotal, const unsigned dtotal, const unsigned drank)
Definition: ServerSide.cc:120
vAbstrait * _vdarray
Definition: ParisBlockMPC.h:22
unsigned long total
Definition: PaCO++.idl:35
PaCO::PacoTopology_t _srvtopo
Definition: ParisBlockMPC.h:12
unsigned posofPart(const PaCO::distLoc_t &mode, const unsigned dtotal, const unsigned srank)
Definition: ServerSide.cc:138
bool setClientConfiguration(const PaCO::PacoTopology_t &ctopo)
bool setMode(const PaCO::distLoc_t mode)
Abstrait * _darray
Definition: ParisBlockMPC.h:21
Here is the call graph for this function:

◆ computeSend()

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

Compute communication schedule on the client side.

Definition at line 38 of file ParisBlockMPC.cc.

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

Referenced by setCommunicator().

38  {
39  _ld.base = (char*) data;
40 
41  computeSendDataBlock1D(_gd, _ld, _clttopo, _srvtopo, vdarray, destid, _mode, _comm);
42 }
LocalData_t _ld
Definition: ParisBlockMPC.h:16
PaCO::distLoc_t _mode
Definition: ParisBlockMPC.h:10
PaCO::PacoTopology_t _clttopo
Definition: ParisBlockMPC.h:11
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::PacoGlobalData_t _gd
Definition: ParisBlockMPC.h:13
PaCO::PacoTopology_t _srvtopo
Definition: ParisBlockMPC.h:12
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 & ParisBlockMPC::getMode ( ) const

Definition at line 23 of file ParisBlockMPC.cc.

References _mode.

Referenced by setCommunicator().

23 { return _mode; }
PaCO::distLoc_t _mode
Definition: ParisBlockMPC.h:10

◆ getNodeRank()

virtual long DistributionLibrary::getNodeRank ( )
pure virtualinherited

◆ getResult()

Abstrait * ParisBlockMPC::getResult ( ) const

If computeReceive returns ok, get the data.

Definition at line 84 of file ParisBlockMPC.cc.

References _darray.

Referenced by setCommunicator().

84 { return _darray; }
Abstrait * _darray
Definition: ParisBlockMPC.h:21

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

Definition at line 21 of file ParisBlockMPC.cc.

References _vdarray.

Referenced by setCommunicator().

21 { _vdarray->clear(); }
vAbstrait * _vdarray
Definition: ParisBlockMPC.h:22

◆ serverFree()

virtual void DistributionLibrary::serverFree ( )
pure virtualinherited

◆ setClientConfiguration()

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

Definition at line 27 of file ParisBlockMPC.cc.

References _clttopo.

Referenced by computeReceive(), and setCommunicator().

27 { _clttopo = ctopo; return true; }
PaCO::PacoTopology_t _clttopo
Definition: ParisBlockMPC.h:11

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

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

Definition at line 19 of file ParisBlockMPC.cc.

References _fab.

Referenced by ParisBlockMPC(), and setCommunicator().

19 { _fab = f; }
Fabrique * _fab
Definition: ParisBlockMPC.h:20

◆ setGlobalDataConfiguration()

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

Definition at line 30 of file ParisBlockMPC.cc.

References _gd.

Referenced by setCommunicator().

30 { _gd = gd; return true; }
PaCO::PacoGlobalData_t _gd
Definition: ParisBlockMPC.h:13

◆ setLocalDataConfiguration()

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

Definition at line 31 of file ParisBlockMPC.cc.

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

Referenced by setCommunicator().

31  {
32  _ld.rank = ld.rank;
33  _ld.start = ld.start;
34  _ld.len = ld.len;
35  return true;
36 }
LocalData_t _ld
Definition: ParisBlockMPC.h:16
unsigned long start
Definition: PaCO++.idl:27
unsigned long rank
Definition: PaCO++.idl:26
unsigned long len
Definition: PaCO++.idl:28

◆ setMode()

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

Definition at line 25 of file ParisBlockMPC.cc.

References _mode.

Referenced by computeReceive(), and setCommunicator().

25 { _mode = mode; return true; } // true if ok
PaCO::distLoc_t _mode
Definition: ParisBlockMPC.h:10

◆ setNodeRank()

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

◆ setServerConfiguration()

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

Definition at line 28 of file ParisBlockMPC.cc.

References _srvtopo.

Referenced by setCommunicator().

28 { _srvtopo = stopo; return true; }
PaCO::PacoTopology_t _srvtopo
Definition: ParisBlockMPC.h:12

◆ setSourceTopology()

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

Member Data Documentation

◆ _clttopo

PaCO::PacoTopology_t ParisBlockMPC::_clttopo
private

Definition at line 11 of file ParisBlockMPC.h.

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

◆ _comm

void* ParisBlockMPC::_comm
private

Definition at line 18 of file ParisBlockMPC.h.

Referenced by computeReceive(), and computeSend().

◆ _darray

Abstrait* ParisBlockMPC::_darray
private

Definition at line 21 of file ParisBlockMPC.h.

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

◆ _fab

Fabrique* ParisBlockMPC::_fab
private

Definition at line 20 of file ParisBlockMPC.h.

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

◆ _gd

PaCO::PacoGlobalData_t ParisBlockMPC::_gd
private

Definition at line 13 of file ParisBlockMPC.h.

Referenced by computeSend(), and setGlobalDataConfiguration().

◆ _ld

LocalData_t ParisBlockMPC::_ld
private

Definition at line 16 of file ParisBlockMPC.h.

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

◆ _mode

PaCO::distLoc_t ParisBlockMPC::_mode
private

Definition at line 10 of file ParisBlockMPC.h.

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

◆ _remaining

int ParisBlockMPC::_remaining
private

Definition at line 23 of file ParisBlockMPC.h.

Referenced by computeReceive().

◆ _srvtopo

PaCO::PacoTopology_t ParisBlockMPC::_srvtopo
private

Definition at line 12 of file ParisBlockMPC.h.

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

◆ _vdarray

vAbstrait* ParisBlockMPC::_vdarray
private

Definition at line 22 of file ParisBlockMPC.h.

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


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