DynamicLayout Class Reference

DynamicLayout is a Layout class that breaks an N-dimensional Interval into sub-domains arranged in an N-dimensional grid, where the sub-domain sizes are specified by a Grid domain object. More...

#include <DynamicLayout.h>

Inheritance diagram for DynamicLayout:

Inheritance graph
[legend]
Collaboration diagram for DynamicLayout:

Collaboration graph
[legend]

List of all members.

Public Types

enum  { dimensions = 1 }
enum  { repartitionEvent = 1 }
enum  { dynamic = true }
enum  { supportsGuards = false }
typedef DynamicLayout This_t
typedef Observable< This_tObservable_t
typedef DynamicLayoutData LayoutData_t
typedef LayoutData_t::Domain_t Domain_t
typedef LayoutData_t::BaseDomain_t BaseDomain_t
typedef LayoutData_t::Context_t Context_t
typedef LayoutData_t::ID_t ID_t
typedef LayoutData_t::Value_t Value_t
typedef LayoutData_t::List_t List_t
typedef DynamicEvents::PatchID_t PatchID_t
typedef DynamicEvents::CreateSize_t CreateSize_t
typedef DerefIterator< Value_titerator
typedef ConstDerefIterator
< Value_t
const_iterator

Public Member Functions

 DynamicLayout ()
 DynamicLayout (const Domain_t &)
 DynamicLayout (const Domain_t &, int)
 DynamicLayout (const Grid< 1 > &)
template<class Partitioner >
 DynamicLayout (const Domain_t &gdom, const Partitioner &gpar)
template<class Partitioner >
 DynamicLayout (const Domain_t &gdom, const Partitioner &gpar, const ContextMapper< 1 > &cmap)
 DynamicLayout (const This_t &)
This_toperator= (const This_t &)
 ~DynamicLayout ()
void initialize (const Domain_t &)
void initialize (const Domain_t &, int)
void initialize (const Domain_t &, const Grid< 1 > &)
void initialize (const Grid< 1 > &)
template<class Partitioner >
void initialize (const Domain_t &gdom, const Partitioner &gpar)
template<class Partitioner >
void initialize (const Domain_t &gdom, const Partitioner &gpar, const ContextMapper< 1 > &cmap)
void initialize (const Domain_t &gdom, const List_t &nodes)
ID_t ID () const
ID_t baseID () const
bool initialized () const
int first (int) const
const Domain_tdomain () const
const Domain_townedDomain () const
const Domain_tdomain (int i) const
const Domain_townedDomain (int i) const
const Domain_tallocatedDomain (int i) const
const Domain_tbaseDomain () const
const Domain_tpatchDomain (int i) const
const List_tnodeListGlobal () const
const List_tnodeListLocal () const
const List_tnodeListRemote () const
template<class Layout >
bool operator== (const Layout &layout) const
template<class Layout >
bool operator!= (const Layout &layout) const
int blocks () const
int globalID (const Loc< 1 > &loc) const
int globalID (int a1) const
iterator beginGlobal ()
iterator endGlobal ()
const_iterator beginGlobal () const
const_iterator endGlobal () const
int sizeGlobal () const
iterator beginLocal ()
iterator endLocal ()
const_iterator beginLocal () const
const_iterator endLocal () const
int sizeLocal () const
iterator beginRemote ()
iterator endRemote ()
const_iterator beginRemote () const
const_iterator endRemote () const
int sizeRemote () const
template<class Partitioner >
bool repartition (const Partitioner &gp)
void create (CreateSize_t num, PatchID_t patch=(-1))
template<class Dom , class DeleteMethod >
void destroy (const Dom &killlist, const DeleteMethod &method)
template<class Dom , class DeleteMethod >
void destroy (const Dom &killlist, PatchID_t patch, const DeleteMethod &method)
template<class Dom >
void copy (const Dom &copylist, PatchID_t toPatch=(-1))
template<class Dom >
void copy (const Dom &copylist, PatchID_t fromPatch, PatchID_t toPatch)
void copy (const IndirectionList< IndirectionList< int > > &domlists, const IndirectionList< int > &fromlist, PatchID_t toPatch, bool docreate)
void sync ()
template<class OtherDomain , class OutIter , class ConstructTag >
int touches (const OtherDomain &d, OutIter o, const ConstructTag &ctag) const
template<class OtherDomain , class OutIter , class ConstructTag >
int touchesAlloc (const OtherDomain &d, OutIter o, const ConstructTag &ctag) const
template<class OtherDomain , class OutIter , class ConstructTag >
int touchesLocal (const OtherDomain &d, OutIter o, const ConstructTag &ctag) const
template<class OtherDomain , class OutIter , class ConstructTag >
int touchesAllocLocal (const OtherDomain &d, OutIter o, const ConstructTag &ctag) const
template<class OtherDomain , class OutIter , class ConstructTag >
int touchesRemote (const OtherDomain &, OutIter, const ConstructTag &) const
template<class OtherDomain , class OutIter , class ConstructTag >
int touchesAllocRemote (const OtherDomain &, OutIter, const ConstructTag &) const
template<class OtherDomain , class OutIter >
int touches (const OtherDomain &d, OutIter o) const
template<class OtherDomain , class OutIter >
int touchesAlloc (const OtherDomain &d, OutIter o) const
template<class OtherDomain , class OutIter >
int touchesLocal (const OtherDomain &d, OutIter o) const
template<class OtherDomain , class OutIter >
int touchesAllocLocal (const OtherDomain &d, OutIter o) const
template<class OtherDomain , class OutIter >
int touchesRemote (const OtherDomain &d, OutIter o) const
template<class OtherDomain , class OutIter >
int touchesAllocRemote (const OtherDomain &d, OutIter o) const
virtual void notify (LayoutData_t &d, const ObserverEvent &event)
 The one virtual public interface method for Observer.
template<class Ostream >
void print (Ostream &ostr) const


Detailed Description

DynamicLayout is a Layout class that breaks an N-dimensional Interval into sub-domains arranged in an N-dimensional grid, where the sub-domain sizes are specified by a Grid domain object.

This is an alternative to the more general tile Layout class that should perform faster since subdomains can be found using a set of 1-dimensional domainMap's, rather than by a more general search.

To construct a DynamicLayout, you can do any of the following:

  1. provide a global domain, and let the DynamicLayout perform its default partitioning by just using one single block;
  2. provide a global domain, a Loc with the number of blocks to use along each dimension, and an optional context number;
  3. provide a global domain and a GridPartition or UniformGridPartition object.
  4. provide a Grid domain object

Member Typedef Documentation


Member Enumeration Documentation

anonymous enum

Enumerator:
dimensions 

anonymous enum

Enumerator:
repartitionEvent 

anonymous enum

Enumerator:
dynamic 

anonymous enum

Enumerator:
supportsGuards 


Constructor & Destructor Documentation

DynamicLayout::DynamicLayout (  ) 

DynamicLayout::DynamicLayout ( const Domain_t  ) 

DynamicLayout::DynamicLayout ( const Domain_t ,
int   
)

DynamicLayout::DynamicLayout ( const Grid< 1 > &   ) 

template<class Partitioner >
DynamicLayout::DynamicLayout ( const Domain_t gdom,
const Partitioner &  gpar 
) [inline]

template<class Partitioner >
DynamicLayout::DynamicLayout ( const Domain_t gdom,
const Partitioner &  gpar,
const ContextMapper< 1 > &  cmap 
) [inline]

DynamicLayout::DynamicLayout ( const This_t  ) 

DynamicLayout::~DynamicLayout (  )  [inline]


Member Function Documentation

This_t& DynamicLayout::operator= ( const This_t  ) 

void DynamicLayout::initialize ( const Domain_t  ) 

void DynamicLayout::initialize ( const Domain_t ,
int   
)

void DynamicLayout::initialize ( const Domain_t ,
const Grid< 1 > &   
)

void DynamicLayout::initialize ( const Grid< 1 > &   ) 

template<class Partitioner >
void DynamicLayout::initialize ( const Domain_t gdom,
const Partitioner &  gpar 
) [inline]

template<class Partitioner >
void DynamicLayout::initialize ( const Domain_t gdom,
const Partitioner &  gpar,
const ContextMapper< 1 > &  cmap 
) [inline]

void DynamicLayout::initialize ( const Domain_t gdom,
const List_t nodes 
) [inline]

ID_t DynamicLayout::ID (  )  const [inline]

Referenced by print().

ID_t DynamicLayout::baseID (  )  const [inline]

Referenced by operator==().

bool DynamicLayout::initialized (  )  const [inline]

int DynamicLayout::first ( int   )  const [inline]

const Domain_t& DynamicLayout::domain (  )  const [inline]

const Domain_t& DynamicLayout::ownedDomain (  )  const [inline]

const Domain_t& DynamicLayout::domain ( int  i  )  const [inline]

const Domain_t& DynamicLayout::ownedDomain ( int  i  )  const [inline]

const Domain_t& DynamicLayout::allocatedDomain ( int  i  )  const [inline]

const Domain_t& DynamicLayout::baseDomain (  )  const [inline]

Referenced by operator==().

const Domain_t& DynamicLayout::patchDomain ( int  i  )  const [inline]

const List_t& DynamicLayout::nodeListGlobal (  )  const [inline]

const List_t& DynamicLayout::nodeListLocal (  )  const [inline]

const List_t& DynamicLayout::nodeListRemote (  )  const [inline]

template<class Layout >
bool DynamicLayout::operator== ( const Layout &  layout  )  const [inline]

References baseDomain(), and baseID().

template<class Layout >
bool DynamicLayout::operator!= ( const Layout &  layout  )  const [inline]

int DynamicLayout::blocks (  )  const [inline]

Referenced by print().

int DynamicLayout::globalID ( const Loc< 1 > &  loc  )  const [inline]

int DynamicLayout::globalID ( int  a1  )  const [inline]

iterator DynamicLayout::beginGlobal (  )  [inline]

Referenced by print().

iterator DynamicLayout::endGlobal (  )  [inline]

Referenced by print().

const_iterator DynamicLayout::beginGlobal (  )  const [inline]

const_iterator DynamicLayout::endGlobal (  )  const [inline]

int DynamicLayout::sizeGlobal (  )  const [inline]

Referenced by initialized(), and print().

iterator DynamicLayout::beginLocal (  )  [inline]

Referenced by print().

iterator DynamicLayout::endLocal (  )  [inline]

Referenced by print().

const_iterator DynamicLayout::beginLocal (  )  const [inline]

const_iterator DynamicLayout::endLocal (  )  const [inline]

int DynamicLayout::sizeLocal (  )  const [inline]

Referenced by print().

iterator DynamicLayout::beginRemote (  )  [inline]

Referenced by print().

iterator DynamicLayout::endRemote (  )  [inline]

Referenced by print().

const_iterator DynamicLayout::beginRemote (  )  const [inline]

const_iterator DynamicLayout::endRemote (  )  const [inline]

int DynamicLayout::sizeRemote (  )  const [inline]

Referenced by print().

template<class Partitioner >
bool DynamicLayout::repartition ( const Partitioner &  gp  )  [inline]

References domain(), and repartitionEvent.

void DynamicLayout::create ( CreateSize_t  num,
PatchID_t  patch = (-1) 
) [inline]

template<class Dom , class DeleteMethod >
void DynamicLayout::destroy ( const Dom &  killlist,
const DeleteMethod &  method 
) [inline]

template<class Dom , class DeleteMethod >
void DynamicLayout::destroy ( const Dom &  killlist,
PatchID_t  patch,
const DeleteMethod &  method 
) [inline]

template<class Dom >
void DynamicLayout::copy ( const Dom &  copylist,
PatchID_t  toPatch = (-1) 
) [inline]

template<class Dom >
void DynamicLayout::copy ( const Dom &  copylist,
PatchID_t  fromPatch,
PatchID_t  toPatch 
) [inline]

void DynamicLayout::copy ( const IndirectionList< IndirectionList< int > > &  domlists,
const IndirectionList< int > &  fromlist,
PatchID_t  toPatch,
bool  docreate 
) [inline]

void DynamicLayout::sync (  )  [inline]

template<class OtherDomain , class OutIter , class ConstructTag >
int DynamicLayout::touches ( const OtherDomain &  d,
OutIter  o,
const ConstructTag &  ctag 
) const [inline]

template<class OtherDomain , class OutIter , class ConstructTag >
int DynamicLayout::touchesAlloc ( const OtherDomain &  d,
OutIter  o,
const ConstructTag &  ctag 
) const [inline]

Referenced by touchesAlloc().

template<class OtherDomain , class OutIter , class ConstructTag >
int DynamicLayout::touchesLocal ( const OtherDomain &  d,
OutIter  o,
const ConstructTag &  ctag 
) const [inline]

Referenced by touchesLocal().

template<class OtherDomain , class OutIter , class ConstructTag >
int DynamicLayout::touchesAllocLocal ( const OtherDomain &  d,
OutIter  o,
const ConstructTag &  ctag 
) const [inline]

Referenced by touchesAllocLocal().

template<class OtherDomain , class OutIter , class ConstructTag >
int DynamicLayout::touchesRemote ( const OtherDomain &  ,
OutIter  ,
const ConstructTag &   
) const [inline]

template<class OtherDomain , class OutIter , class ConstructTag >
int DynamicLayout::touchesAllocRemote ( const OtherDomain &  ,
OutIter  ,
const ConstructTag &   
) const [inline]

template<class OtherDomain , class OutIter >
int DynamicLayout::touches ( const OtherDomain &  d,
OutIter  o 
) const [inline]

References touches().

template<class OtherDomain , class OutIter >
int DynamicLayout::touchesAlloc ( const OtherDomain &  d,
OutIter  o 
) const [inline]

References touchesAlloc().

template<class OtherDomain , class OutIter >
int DynamicLayout::touchesLocal ( const OtherDomain &  d,
OutIter  o 
) const [inline]

References touchesLocal().

template<class OtherDomain , class OutIter >
int DynamicLayout::touchesAllocLocal ( const OtherDomain &  d,
OutIter  o 
) const [inline]

References touchesAllocLocal().

template<class OtherDomain , class OutIter >
int DynamicLayout::touchesRemote ( const OtherDomain &  d,
OutIter  o 
) const [inline]

References touchesRemote().

template<class OtherDomain , class OutIter >
int DynamicLayout::touchesAllocRemote ( const OtherDomain &  d,
OutIter  o 
) const [inline]

References touchesRemote().

virtual void DynamicLayout::notify ( LayoutData_t observed,
const ObserverEvent event 
) [inline, virtual]

The one virtual public interface method for Observer.

notify is called by an Observable when it needs to tell attached Observers that some event has occurred. It is up to the derived class, for the type T, to be able to interpret the meaning of the integer event code in the provided ObserverEvent object (or to ignore it, if it needs to). notify is called with a reference to the object being observed and the event which occurred. Note that event code '0' is special; it means that the given Observable is being destroyed, so this Observer should just note that it is no longer attached to that Observable.

Implements Observer< DynamicLayoutData >.

References Observable< T >::notify(), PAssert, and RefCountedPtr< T >::rawPointer().

template<class Ostream >
void DynamicLayout::print ( Ostream &  ostr  )  const [inline]


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

Generated on Wed Mar 16 06:19:59 2011 for FreePOOMA by  doxygen 1.5.9