Public Types | Public Member Functions | Static Public Attributes | Private Member Functions | Friends

LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE > Class Template Reference

As its name implies, the VanillaStepper is the simplest implementation of the Stepper concept: single threaded and no accelerator offloading. More...

#include <vanillastepper.h>

Inherits LibGeoDecomp::HiParSimulator::CommonStepper< CELL_TYPE >.

Collaboration diagram for LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >:
Collaboration graph
[legend]

List of all members.

Public Types

typedef Stepper< CELL_TYPE >
::Topology 
Topology
typedef class CommonStepper
< CELL_TYPE > 
ParentType
typedef ParentType::GridType GridType
typedef PartitionManager
< Topology
PartitionManagerType
typedef PatchBufferFixed
< GridType, GridType, 1 > 
PatchBufferType1
typedef PatchBufferFixed
< GridType, GridType, 2 > 
PatchBufferType2
typedef
ParentType::PatchAccepterVec 
PatchAccepterVec

Public Member Functions

 VanillaStepper (boost::shared_ptr< PartitionManagerType > partitionManager, boost::shared_ptr< Initializer< CELL_TYPE > > initializer, const PatchAccepterVec &ghostZonePatchAccepters=PatchAccepterVec(), const PatchAccepterVec &innerSetPatchAccepters=PatchAccepterVec())

Static Public Attributes

static const int DIM = Topology::DIM
static const unsigned NANO_STEPS = APITraits::SelectNanoSteps<CELL_TYPE>::VALUE

Private Member Functions

void update1 ()
 Proceed the simulation exactly one nano step.
void initGrids ()
void updateGhost ()
 computes the next ghost zone at time "t_1 = globalNanoStep() + ghostZoneWidth()".

Friends

class VanillaStepperRegionTest
class VanillaStepperBasicTest
class VanillaStepperTest

Detailed Description

template<typename CELL_TYPE>
class LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >

As its name implies, the VanillaStepper is the simplest implementation of the Stepper concept: single threaded and no accelerator offloading.

It does however overlap communication and calculation and support wide halos (halos = ghostzones). Ghost zones of width k mean that synchronization only needs to be done every k'th (nano) step.


Member Typedef Documentation

template<typename CELL_TYPE >
typedef ParentType::GridType LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >::GridType
template<typename CELL_TYPE >
typedef class CommonStepper< CELL_TYPE > LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >::ParentType
template<typename CELL_TYPE >
typedef ParentType::PatchAccepterVec LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >::PatchAccepterVec
template<typename CELL_TYPE >
typedef PatchBufferFixed<GridType, GridType, 1> LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >::PatchBufferType1
template<typename CELL_TYPE >
typedef PatchBufferFixed<GridType, GridType, 2> LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >::PatchBufferType2
template<typename CELL_TYPE >
typedef Stepper<CELL_TYPE>::Topology LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >::Topology

Constructor & Destructor Documentation

template<typename CELL_TYPE >
LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >::VanillaStepper ( boost::shared_ptr< PartitionManagerType partitionManager,
boost::shared_ptr< Initializer< CELL_TYPE > >  initializer,
const PatchAccepterVec ghostZonePatchAccepters = PatchAccepterVec(),
const PatchAccepterVec innerSetPatchAccepters = PatchAccepterVec() 
) [inline]

Member Function Documentation

template<typename CELL_TYPE >
void LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >::initGrids (  )  [inline, private]
template<typename CELL_TYPE >
void LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >::update1 (  )  [inline, private, virtual]
template<typename CELL_TYPE >
void LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >::updateGhost (  )  [inline, private]

computes the next ghost zone at time "t_1 = globalNanoStep() + ghostZoneWidth()".

Expects that oldGrid has its kernel and its outer ghostzone updated to time "globalNanoStep()" and that the inner ghostzones (rim) at time t_1 can be retrieved from the internal patch buffer. Will leave oldgrid in a state so that its whole ownRegion() will be at time t_1 and the rim will be saved to the patchBuffer at "t2 = t1 + ghostZoneWidth()".

References LibGeoDecomp::HiParSimulator::Stepper< CELL_TYPE >::chronometer, LibGeoDecomp::HiParSimulator::CommonStepper< CELL_TYPE >::curNanoStep, LibGeoDecomp::HiParSimulator::CommonStepper< CELL_TYPE >::curStep, LibGeoDecomp::HiParSimulator::CommonStepper< CELL_TYPE >::ghostZoneWidth(), LibGeoDecomp::HiParSimulator::CommonStepper< CELL_TYPE >::globalNanoStep(), LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >::NANO_STEPS, LibGeoDecomp::HiParSimulator::CommonStepper< CELL_TYPE >::newGrid, LibGeoDecomp::HiParSimulator::CommonStepper< CELL_TYPE >::notifyPatchAccepters(), LibGeoDecomp::HiParSimulator::CommonStepper< CELL_TYPE >::notifyPatchProviders(), LibGeoDecomp::HiParSimulator::CommonStepper< CELL_TYPE >::oldGrid, LibGeoDecomp::HiParSimulator::CommonStepper< CELL_TYPE >::restoreKernel(), LibGeoDecomp::HiParSimulator::CommonStepper< CELL_TYPE >::restoreRim(), LibGeoDecomp::HiParSimulator::CommonStepper< CELL_TYPE >::rim(), LibGeoDecomp::HiParSimulator::CommonStepper< CELL_TYPE >::saveKernel(), and LibGeoDecomp::HiParSimulator::CommonStepper< CELL_TYPE >::saveRim().

Referenced by LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >::initGrids(), and LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >::update1().


Friends And Related Function Documentation

template<typename CELL_TYPE >
friend class VanillaStepperBasicTest [friend]
template<typename CELL_TYPE >
friend class VanillaStepperRegionTest [friend]
template<typename CELL_TYPE >
friend class VanillaStepperTest [friend]

Member Data Documentation

template<typename CELL_TYPE >
const int LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >::DIM = Topology::DIM [static]
template<typename CELL_TYPE >
const unsigned LibGeoDecomp::HiParSimulator::VanillaStepper< CELL_TYPE >::NANO_STEPS = APITraits::SelectNanoSteps<CELL_TYPE>::VALUE [static]

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