$treeview $search $mathjax
Palabos  Version 1.1
$projectbrief
$projectbrief
$searchbox

plb::ExplicitThreadAttribution Class Reference

#include <threadAttribution.h>

Inheritance diagram for plb::ExplicitThreadAttribution:
Collaboration diagram for plb::ExplicitThreadAttribution:

List of all members.

Public Member Functions

 ExplicitThreadAttribution ()
 ExplicitThreadAttribution (std::map< plint, plint > const &mpiProcessAttribution_)
 ExplicitThreadAttribution (std::map< plint, plint > const &mpiProcessAttribution_, std::map< plint, plint > const &localThreadAttribution_)
void addBlock (plint blockId, plint mpiProcess, plint localThread=0)
virtual bool isLocal (plint blockId) const
 Specifies if the block "blockId" is located on the current MPI thread.
virtual bool allBlocksAreLocal () const
virtual int getMpiProcess (plint blockId) const
 Specifies on which MPI process a given block is located.
virtual int getLocalThreadId (plint blockId) const
virtual ThreadAttributionmerge (ThreadAttribution const &rhs, std::map< plint, std::vector< plint > > const &remappedIds) const
virtual ThreadAttributionextend (std::vector< plint > const &ids, std::vector< plint > const &mpiProcesses, std::vector< plint > const &localThreads) const
virtual bool hasCoProcessors () const
virtual void setCoProcessors (std::map< plint, int > processorHandles)
virtual int getCoProcessorHandle (plint id) const
virtual ThreadAttributionclone () const

Constructor & Destructor Documentation

plb::ExplicitThreadAttribution::ExplicitThreadAttribution (  ) 

Referenced by clone(), extend(), and merge().

plb::ExplicitThreadAttribution::ExplicitThreadAttribution ( std::map< plint, plint > const &  mpiProcessAttribution_  ) 
plb::ExplicitThreadAttribution::ExplicitThreadAttribution ( std::map< plint, plint > const &  mpiProcessAttribution_,
std::map< plint, plint > const &  localThreadAttribution_ 
)

Member Function Documentation

void plb::ExplicitThreadAttribution::addBlock ( plint  blockId,
plint  mpiProcess,
plint  localThread = 0 
)
bool plb::ExplicitThreadAttribution::allBlocksAreLocal (  )  const [virtual]

True means that all blocks are local, false means we don't know if all of them are local or not.

Implements plb::ThreadAttribution.

ThreadAttribution * plb::ExplicitThreadAttribution::clone (  )  const [virtual]
ThreadAttribution * plb::ExplicitThreadAttribution::extend ( std::vector< plint > const &  ids,
std::vector< plint > const &  mpiProcesses,
std::vector< plint > const &  localThreads 
) const [virtual]

Extend the current attribution by a selection of new identifiers, with explicitly specified mpiProcess and thread attribution.

Implements plb::ThreadAttribution.

References ExplicitThreadAttribution(), and PLB_PRECONDITION.

virtual int plb::ExplicitThreadAttribution::getCoProcessorHandle ( plint  id  )  const [inline, virtual]

Reimplemented from plb::ThreadAttribution.

int plb::ExplicitThreadAttribution::getLocalThreadId ( plint  blockId  )  const [virtual]

Specifies to which of the local shared-memory threads the blockId belongs.

Implements plb::ThreadAttribution.

int plb::ExplicitThreadAttribution::getMpiProcess ( plint  blockId  )  const [virtual]

Specifies on which MPI process a given block is located.

Implements plb::ThreadAttribution.

virtual bool plb::ExplicitThreadAttribution::hasCoProcessors (  )  const [inline, virtual]

Reimplemented from plb::ThreadAttribution.

bool plb::ExplicitThreadAttribution::isLocal ( plint  blockId  )  const [virtual]

Specifies if the block "blockId" is located on the current MPI thread.

Implements plb::ThreadAttribution.

References plb::global::mpi().

ThreadAttribution * plb::ExplicitThreadAttribution::merge ( ThreadAttribution const &  rhs,
std::map< plint, std::vector< plint > > const &  remappedIds 
) const [virtual]

Merge current attribution with rhs. From rhs, select explicitly the specified blocks, and remap them to fit into the new attribution, as specified by the parameter remappedIds.

Implements plb::ThreadAttribution.

References addBlock(), ExplicitThreadAttribution(), plb::ThreadAttribution::getLocalThreadId(), and plb::ThreadAttribution::getMpiProcess().

virtual void plb::ExplicitThreadAttribution::setCoProcessors ( std::map< plint, int >  processorHandles  )  [inline, virtual]

Reimplemented from plb::ThreadAttribution.


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