PaCO++  0.05
BasicDistributionLibrary Class Reference

#include <BasicDistributionLibrary.h>

Inheritance diagram for BasicDistributionLibrary:
Collaboration diagram for BasicDistributionLibrary:

List of all members.

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.
void computeSend (const void *data, vAbstrait &vdarray, vector< unsigned > &destid)
 Compute communication schedule on the client side.
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.
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

Definition at line 5 of file BasicDistributionLibrary.cc.

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

                                                              { 
  setFabric(f);
  _darray = f->creer();
  _vdarray = f->vcreer(); 
  _vdarray->clear(); 
  
  _clttopo.total = 123; // debug
  _srvtopo.total = 123; // debug
}

Here is the call graph for this function:

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.

                                                                           : _comm(comm) { 
  setFabric(f);
  _darray = f->creer();
  _vdarray = f->vcreer(); 
  _vdarray->clear(); 
  
  _clttopo.total = 123; // debug
  _srvtopo.total = 123; // debug
}

Here is the call graph for this function:

Definition at line 25 of file BasicDistributionLibrary.cc.

References _darray, _fab, and _vdarray.

                                                    { 
  delete _fab; delete _darray; delete _vdarray;
} 

Member Function Documentation

virtual void DistributionLibrary::clientFree ( ) [pure virtual, inherited]
virtual PieceToSend* DistributionLibrary::computePiecesToSend ( unsigned &  size) [pure virtual, inherited]

Implemented in BasicBC, Controlled, Identity, and GaBro.

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.

                                                              {

  this->setClientConfiguration(darray->topo());  

  // Get the mode of the client
  this->setMode(darray->mode());

  unsigned nb  = nbofPart(_mode, _clttopo.total, _srvtopo.total, _ld.rank);

  unsigned pos;

  // In server side redistribution, empty dist for server nodes whose id > max client node
  if (darray->dist().length() != 0 ) {
    pos = posofPart(_mode, _srvtopo.total, darray->dist()[0].rank);
  } else {
    pos = 0;
  }

  // Initialize _vdarray & remaining (assumed clean)
  if (_vdarray->size() == 0) {
    // _vdarray is empty: so let's define its size
    _vdarray->size(nb);
    _remaining = nb;
  }


  fprintf(stderr, "computeReceive: Node %d : set entry %d/%d to %p\n", _ld.rank, pos, nb, darray);
  _vdarray->setAbstrait(pos, darray);
  _remaining--;

  fprintf(stderr, "computeReceive: Node %d : got %d of %d data\n", _ld.rank, _vdarray->size() - _remaining, _vdarray->size());

  if (_remaining == 0) {
    computeReceiveDataBlock1D(_vdarray, _mode, _srvtopo.total, _ld.rank, _darray, _comm);
    return true;
  } else {
    return false;
  }
}

Here is the call graph for this function:

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

                                                                                                         {
  _ld.base = (char*) data;

  computeSendDataBlock1D(_gd, _ld, _clttopo, _srvtopo, vdarray, destid, _mode, _comm);
}

Here is the call graph for this function:

virtual bool DistributionLibrary::freeComId ( long  id) [inline, virtual, inherited]

Reimplemented in BasicBC, and GaBro.

Definition at line 41 of file DistributionLibrairie.h.

{ return false;}
virtual void* DistributionLibrary::getClientData ( void *  pid,
int  server_node,
long &  size,
long &  length,
bool &  end 
) [pure virtual, inherited]

Implemented in BasicBC, Controlled, Identity, and GaBro.

virtual void* DistributionLibrary::getDescr ( ) [pure virtual, inherited]
virtual PaCO::PacoTopology_t DistributionLibrary::getDestTopology ( ) [pure virtual, inherited]

Definition at line 35 of file BasicDistributionLibrary.cc.

References _mode.

{ return _mode; }
virtual long DistributionLibrary::getNodeRank ( ) [pure virtual, inherited]

If computeReceive returns ok, get the data.

Definition at line 96 of file BasicDistributionLibrary.cc.

References _darray.

{ return _darray; }
virtual void* DistributionLibrary::getServerData ( long &  length) [pure virtual, inherited]
virtual PaCO::PacoTopology_t DistributionLibrary::getSourceTopology ( ) [pure virtual, inherited]
virtual bool DistributionLibrary::insertData ( void *  rcptBuf,
unsigned long  element_nb 
) [pure virtual, inherited]

Implemented in BasicBC, Controlled, Identity, and GaBro.

Definition at line 33 of file BasicDistributionLibrary.cc.

References _vdarray.

{ _vdarray->clear(); }
virtual void DistributionLibrary::serverFree ( ) [pure virtual, inherited]

Definition at line 39 of file BasicDistributionLibrary.cc.

References _clttopo.

Referenced by computeReceive().

{ _clttopo = ctopo; return true; }
virtual bool DistributionLibrary::setComId ( long  id) [inline, virtual, inherited]

Reimplemented in BasicBC, and GaBro.

Definition at line 40 of file DistributionLibrairie.h.

{ return false;}
void BasicDistributionLibrary::setCommunicator ( void *  comm) [virtual]

Implements DistributionLibrary.

Definition at line 29 of file BasicDistributionLibrary.cc.

References _comm.

{ _comm = comm; }
virtual void DistributionLibrary::setDataPtr ( void *  dataPtr) [pure virtual, inherited]
virtual void DistributionLibrary::setDescr ( void *  descr) [pure virtual, inherited]
virtual void DistributionLibrary::setDestTopology ( PaCO::PacoTopology_t  topo) [pure virtual, inherited]
void BasicDistributionLibrary::setFabric ( Fabrique *  f)

Definition at line 31 of file BasicDistributionLibrary.cc.

References _fab.

Referenced by BasicDistributionLibrary().

{ _fab = f; }

Definition at line 42 of file BasicDistributionLibrary.cc.

References _gd.

{ _gd = gd; return true; }

Definition at line 37 of file BasicDistributionLibrary.cc.

References _mode.

Referenced by computeReceive().

{ _mode = mode; return true; } // true if ok
virtual void DistributionLibrary::setNodeRank ( long  Rank) [pure virtual, inherited]

Definition at line 40 of file BasicDistributionLibrary.cc.

References _srvtopo.

{ _srvtopo = stopo; return true; }
virtual void DistributionLibrary::setSourceTopology ( PaCO::PacoTopology_t  topo) [pure virtual, inherited]

Member Data Documentation

Definition at line 18 of file BasicDistributionLibrary.h.

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

Fabrique* BasicDistributionLibrary::_fab [private]

Definition at line 20 of file BasicDistributionLibrary.h.

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

LocalData_t BasicDistributionLibrary::_ld [private]

Definition at line 23 of file BasicDistributionLibrary.h.

Referenced by computeReceive().


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