This class aims at providing a very simple, but working parallel simulation facility. More...
#include <stripingsimulator.h>
Inherits LibGeoDecomp::DistributedSimulator< CELL_TYPE >.
Public Types | |
enum | WaitTags { GENERAL, BALANCELOADS, GHOSTREGION_ALPHA, GHOSTREGION_BETA } |
typedef DistributedSimulator < CELL_TYPE >::Topology | Topology |
typedef LoadBalancer::WeightVec | WeightVec |
typedef LoadBalancer::LoadVec | LoadVec |
typedef DisplacedGrid < CELL_TYPE, Topology > | GridType |
typedef Steerer< CELL_TYPE > ::SteererFeedback | SteererFeedback |
Public Member Functions | |
StripingSimulator (Initializer< CELL_TYPE > *initializer, LoadBalancer *balancer=0, const unsigned &loadBalancingPeriod=1) | |
virtual | ~StripingSimulator () |
virtual void | step () |
performs a single simulation step. | |
virtual void | run () |
performs step() until the maximum number of steps is reached. | |
const unsigned & | getLoadBalancingPeriod () const |
std::vector< Chronometer > | gatherStatistics () |
Returns histograms which detail how much execution time was spent on which part of the algorithm. | |
Static Public Attributes | |
static const int | DIM = Topology::DIM |
static const bool | WRAP_EDGES = Topology::template WrapsAxis<DIM - 1>::VALUE |
Private Member Functions | |
void | swapGrids () |
WeightVec | partition (unsigned gridHeight, unsigned size) const |
"partition()[i]" is the first row for which node i is responsible, "partition()[i + 1] - 1" is the last one. | |
void | balanceLoad () |
the methods below are just used to structurize the step() method. | |
void | nanoStep (const unsigned &nanoStep) |
void | waitForGhostRegions () |
void | setIORegions () |
void | handleInput (SteererEvent event) |
void | handleOutput (WriterEvent event) |
CoordBox< DIM > | boundingBox (const unsigned &start, const unsigned &end) |
returns a bounding box with the same dimensions as the whole grid, but the most significant dimension (z in the 3d case or y in the 2d case) runs from start to end. | |
void | updateRegion (const Region< DIM > ®ion, const unsigned &nanoStep) |
void | updateInnerGhostRegion (const unsigned &nanoStep) |
the methods below are just used to structurize the nanoStep() method. | |
void | recvOuterGhostRegion (GridType *stripe) |
void | sendInnerGhostRegion (GridType *stripe) |
void | updateInside (const unsigned &nanoStep) |
Region< DIM > | fillRegion (const int &startRow, const int &endRow) |
void | initRegions (const int &startRow, const int &endRow) |
void | initSimulation () |
reset initial simulation state, useful after creation and at run() | |
CoordBox< DIM > | adaptDimensions (const WeightVec &newPartitions) |
resets various sizes, heights etc. | |
int | lowerNeighbor () const |
int | upperNeighbor () const |
WeightVec | partitionsToWorkloads (const WeightVec &partitions) const |
WeightVec | workloadsToPartitions (const WeightVec &workloads) const |
void | redistributeGrid (const WeightVec &oldPartitions, const WeightVec &newPartitions) |
void | validateLoads (const WeightVec &newLoads, const WeightVec &oldLoads) const |
ensures that newLoads and oldLoads have the same size and that the sums of their elements match. | |
Coord< DIM > | gridDimensions () const |
Private Attributes | |
MPILayer | mpilayer |
boost::shared_ptr< LoadBalancer > | balancer |
unsigned | ghostHeightLower |
we need to distinguish four types of rims:
| |
unsigned | ghostHeightUpper |
GridType * | curStripe |
GridType * | newStripe |
Region< DIM > | region |
Region< DIM > | innerRegion |
Region< DIM > | innerUpperGhostRegion |
Region< DIM > | innerLowerGhostRegion |
Region< DIM > | outerUpperGhostRegion |
Region< DIM > | outerLowerGhostRegion |
Region< DIM > | regionWithOuterGhosts |
WeightVec | partitions |
unsigned | loadBalancingPeriod |
Friends | |
class | StripingSimulatorTest |
class | ParallelStripingSimulatorTest |
This class aims at providing a very simple, but working parallel simulation facility.
It's not very modular, it's not fast, but it's simple and it actually works.
typedef DisplacedGrid<CELL_TYPE, Topology> LibGeoDecomp::StripingSimulator< CELL_TYPE >::GridType |
Reimplemented from LibGeoDecomp::DistributedSimulator< CELL_TYPE >.
typedef LoadBalancer::LoadVec LibGeoDecomp::StripingSimulator< CELL_TYPE >::LoadVec |
typedef Steerer<CELL_TYPE>::SteererFeedback LibGeoDecomp::StripingSimulator< CELL_TYPE >::SteererFeedback |
typedef DistributedSimulator<CELL_TYPE>::Topology LibGeoDecomp::StripingSimulator< CELL_TYPE >::Topology |
Reimplemented from LibGeoDecomp::DistributedSimulator< CELL_TYPE >.
typedef LoadBalancer::WeightVec LibGeoDecomp::StripingSimulator< CELL_TYPE >::WeightVec |
enum LibGeoDecomp::StripingSimulator::WaitTags |
LibGeoDecomp::StripingSimulator< CELL_TYPE >::StripingSimulator | ( | Initializer< CELL_TYPE > * | initializer, | |
LoadBalancer * | balancer = 0 , |
|||
const unsigned & | loadBalancingPeriod = 1 | |||
) | [inline, explicit] |
References LibGeoDecomp::StripingSimulator< CELL_TYPE >::adaptDimensions(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::balancer, LibGeoDecomp::StripingSimulator< CELL_TYPE >::curStripe, LibGeoDecomp::StripingSimulator< CELL_TYPE >::DIM, LibGeoDecomp::StripingSimulator< CELL_TYPE >::gridDimensions(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::initSimulation(), LibGeoDecomp::StringOps::itoa(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::loadBalancingPeriod, LibGeoDecomp::StripingSimulator< CELL_TYPE >::mpilayer, LibGeoDecomp::StripingSimulator< CELL_TYPE >::newStripe, LibGeoDecomp::StripingSimulator< CELL_TYPE >::partition(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::partitions, LibGeoDecomp::MPILayer::rank(), and LibGeoDecomp::MPILayer::size().
virtual LibGeoDecomp::StripingSimulator< CELL_TYPE >::~StripingSimulator | ( | ) | [inline, virtual] |
CoordBox<DIM> LibGeoDecomp::StripingSimulator< CELL_TYPE >::adaptDimensions | ( | const WeightVec & | newPartitions | ) | [inline, private] |
resets various sizes, heights etc.
according to newPartitions, returns the new bounding box of the stripes. It doesn't actually resize the stripes since different actions are required during load balancing and initialization.
References LibGeoDecomp::StripingSimulator< CELL_TYPE >::boundingBox(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::ghostHeightLower, LibGeoDecomp::StripingSimulator< CELL_TYPE >::ghostHeightUpper, LibGeoDecomp::StripingSimulator< CELL_TYPE >::initRegions(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::mpilayer, LibGeoDecomp::StripingSimulator< CELL_TYPE >::partitions, LibGeoDecomp::MPILayer::rank(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::WRAP_EDGES.
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::redistributeGrid(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::StripingSimulator().
void LibGeoDecomp::StripingSimulator< CELL_TYPE >::balanceLoad | ( | ) | [inline, private] |
the methods below are just used to structurize the step() method.
References LibGeoDecomp::StripingSimulator< CELL_TYPE >::BALANCELOADS, LibGeoDecomp::StripingSimulator< CELL_TYPE >::balancer, LibGeoDecomp::Simulator< CELL_TYPE >::chronometer, LibGeoDecomp::MPILayer::gather(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::loadBalancingPeriod, LibGeoDecomp::StripingSimulator< CELL_TYPE >::mpilayer, LibGeoDecomp::StripingSimulator< CELL_TYPE >::partitions, LibGeoDecomp::StripingSimulator< CELL_TYPE >::partitionsToWorkloads(), LibGeoDecomp::MPILayer::rank(), LibGeoDecomp::MPILayer::recvVec(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::redistributeGrid(), LibGeoDecomp::Chronometer::reset(), LibGeoDecomp::MPILayer::sendVec(), LibGeoDecomp::MPILayer::size(), LibGeoDecomp::Simulator< CELL_TYPE >::stepNum, LibGeoDecomp::StripingSimulator< CELL_TYPE >::validateLoads(), LibGeoDecomp::MPILayer::wait(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::workloadsToPartitions().
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::step().
CoordBox<DIM> LibGeoDecomp::StripingSimulator< CELL_TYPE >::boundingBox | ( | const unsigned & | start, | |
const unsigned & | end | |||
) | [inline, private] |
returns a bounding box with the same dimensions as the whole grid, but the most significant dimension (z in the 3d case or y in the 2d case) runs from start to end.
References LibGeoDecomp::StripingSimulator< CELL_TYPE >::DIM, LibGeoDecomp::StripingSimulator< CELL_TYPE >::gridDimensions(), and LibGeoDecomp::max().
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::adaptDimensions(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::fillRegion().
Region<DIM> LibGeoDecomp::StripingSimulator< CELL_TYPE >::fillRegion | ( | const int & | startRow, | |
const int & | endRow | |||
) | [inline, private] |
std::vector<Chronometer> LibGeoDecomp::StripingSimulator< CELL_TYPE >::gatherStatistics | ( | ) | [inline, virtual] |
Returns histograms which detail how much execution time was spent on which part of the algorithm.
Will return one element per rank.
Implements LibGeoDecomp::Simulator< CELL_TYPE >.
References LibGeoDecomp::Simulator< CELL_TYPE >::chronometer, LibGeoDecomp::MPILayer::gather(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::mpilayer.
const unsigned& LibGeoDecomp::StripingSimulator< CELL_TYPE >::getLoadBalancingPeriod | ( | ) | const [inline] |
Coord<DIM> LibGeoDecomp::StripingSimulator< CELL_TYPE >::gridDimensions | ( | ) | const [inline, private] |
void LibGeoDecomp::StripingSimulator< CELL_TYPE >::handleInput | ( | SteererEvent | event | ) | [inline, private] |
References LibGeoDecomp::StripingSimulator< CELL_TYPE >::curStripe, LibGeoDecomp::Simulator< CELL_TYPE >::getStep(), LibGeoDecomp::Simulator< CELL_TYPE >::gridDim, LibGeoDecomp::StripingSimulator< CELL_TYPE >::mpilayer, LibGeoDecomp::MPILayer::rank(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::regionWithOuterGhosts, LibGeoDecomp::Simulator< CELL_TYPE >::steerers, LibGeoDecomp::Simulator< CELL_TYPE >::stepNum, and LibGeoDecomp::StripingSimulator< CELL_TYPE >::waitForGhostRegions().
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::step().
void LibGeoDecomp::StripingSimulator< CELL_TYPE >::handleOutput | ( | WriterEvent | event | ) | [inline, private] |
References LibGeoDecomp::StripingSimulator< CELL_TYPE >::curStripe, LibGeoDecomp::Simulator< CELL_TYPE >::getStep(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::gridDimensions(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::mpilayer, LibGeoDecomp::MPILayer::rank(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::region, LibGeoDecomp::WRITER_STEP_FINISHED, and LibGeoDecomp::DistributedSimulator< CELL_TYPE >::writers.
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::run(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::step().
void LibGeoDecomp::StripingSimulator< CELL_TYPE >::initRegions | ( | const int & | startRow, | |
const int & | endRow | |||
) | [inline, private] |
References LibGeoDecomp::StripingSimulator< CELL_TYPE >::fillRegion(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::ghostHeightLower, LibGeoDecomp::StripingSimulator< CELL_TYPE >::ghostHeightUpper, LibGeoDecomp::StripingSimulator< CELL_TYPE >::innerLowerGhostRegion, LibGeoDecomp::StripingSimulator< CELL_TYPE >::innerRegion, LibGeoDecomp::StripingSimulator< CELL_TYPE >::innerUpperGhostRegion, LibGeoDecomp::StripingSimulator< CELL_TYPE >::outerLowerGhostRegion, LibGeoDecomp::StripingSimulator< CELL_TYPE >::outerUpperGhostRegion, LibGeoDecomp::StripingSimulator< CELL_TYPE >::region, and LibGeoDecomp::StripingSimulator< CELL_TYPE >::regionWithOuterGhosts.
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::adaptDimensions().
void LibGeoDecomp::StripingSimulator< CELL_TYPE >::initSimulation | ( | ) | [inline, private] |
reset initial simulation state, useful after creation and at run()
References LibGeoDecomp::DisplacedGrid< CELL_TYPE, TOPOLOGY, TOPOLOGICALLY_CORRECT >::boundingBox(), LibGeoDecomp::Simulator< CELL_TYPE >::chronometer, LibGeoDecomp::StripingSimulator< CELL_TYPE >::curStripe, LibGeoDecomp::DisplacedGrid< CELL_TYPE, TOPOLOGY, TOPOLOGICALLY_CORRECT >::getEdgeCell(), LibGeoDecomp::Simulator< CELL_TYPE >::initializer, LibGeoDecomp::StripingSimulator< CELL_TYPE >::newStripe, LibGeoDecomp::Chronometer::reset(), LibGeoDecomp::DisplacedGrid< CELL_TYPE, TOPOLOGY, TOPOLOGICALLY_CORRECT >::resize(), and LibGeoDecomp::Simulator< CELL_TYPE >::stepNum.
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::run(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::StripingSimulator().
int LibGeoDecomp::StripingSimulator< CELL_TYPE >::lowerNeighbor | ( | ) | const [inline, private] |
References LibGeoDecomp::StripingSimulator< CELL_TYPE >::mpilayer, LibGeoDecomp::StripingSimulator< CELL_TYPE >::partitions, LibGeoDecomp::MPILayer::rank(), LibGeoDecomp::MPILayer::size(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::WRAP_EDGES.
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::recvOuterGhostRegion(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::sendInnerGhostRegion().
void LibGeoDecomp::StripingSimulator< CELL_TYPE >::nanoStep | ( | const unsigned & | nanoStep | ) | [inline, private] |
References LibGeoDecomp::Simulator< CELL_TYPE >::chronometer, LibGeoDecomp::StripingSimulator< CELL_TYPE >::newStripe, LibGeoDecomp::StripingSimulator< CELL_TYPE >::recvOuterGhostRegion(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::sendInnerGhostRegion(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::swapGrids(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::updateInnerGhostRegion(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::updateInside(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::waitForGhostRegions().
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::step().
WeightVec LibGeoDecomp::StripingSimulator< CELL_TYPE >::partition | ( | unsigned | gridHeight, | |
unsigned | size | |||
) | const [inline, private] |
"partition()[i]" is the first row for which node i is responsible, "partition()[i + 1] - 1" is the last one.
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::StripingSimulator().
WeightVec LibGeoDecomp::StripingSimulator< CELL_TYPE >::partitionsToWorkloads | ( | const WeightVec & | partitions | ) | const [inline, private] |
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::balanceLoad().
void LibGeoDecomp::StripingSimulator< CELL_TYPE >::recvOuterGhostRegion | ( | GridType * | stripe | ) | [inline, private] |
References LibGeoDecomp::Simulator< CELL_TYPE >::chronometer, LibGeoDecomp::StripingSimulator< CELL_TYPE >::GHOSTREGION_ALPHA, LibGeoDecomp::StripingSimulator< CELL_TYPE >::GHOSTREGION_BETA, LibGeoDecomp::StripingSimulator< CELL_TYPE >::lowerNeighbor(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::mpilayer, LibGeoDecomp::StripingSimulator< CELL_TYPE >::outerLowerGhostRegion, LibGeoDecomp::StripingSimulator< CELL_TYPE >::outerUpperGhostRegion, LibGeoDecomp::MPILayer::recvUnregisteredRegion(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::upperNeighbor().
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::nanoStep(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::redistributeGrid().
void LibGeoDecomp::StripingSimulator< CELL_TYPE >::redistributeGrid | ( | const WeightVec & | oldPartitions, | |
const WeightVec & | newPartitions | |||
) | [inline, private] |
References LibGeoDecomp::StripingSimulator< CELL_TYPE >::adaptDimensions(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::BALANCELOADS, LibGeoDecomp::StripingSimulator< CELL_TYPE >::curStripe, LibGeoDecomp::StripingSimulator< CELL_TYPE >::fillRegion(), LibGeoDecomp::max(), LibGeoDecomp::min(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::mpilayer, LibGeoDecomp::StripingSimulator< CELL_TYPE >::newStripe, LibGeoDecomp::MPILayer::rank(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::recvOuterGhostRegion(), LibGeoDecomp::MPILayer::recvUnregisteredRegion(), LibGeoDecomp::DisplacedGrid< CELL_TYPE, TOPOLOGY, TOPOLOGICALLY_CORRECT >::resize(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::sendInnerGhostRegion(), LibGeoDecomp::MPILayer::sendUnregisteredRegion(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::swapGrids(), LibGeoDecomp::MPILayer::wait(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::waitForGhostRegions().
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::balanceLoad().
virtual void LibGeoDecomp::StripingSimulator< CELL_TYPE >::run | ( | ) | [inline, virtual] |
performs step() until the maximum number of steps is reached.
Implements LibGeoDecomp::Simulator< CELL_TYPE >.
References LibGeoDecomp::StripingSimulator< CELL_TYPE >::handleOutput(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::initSimulation(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::setIORegions(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::step(), LibGeoDecomp::WRITER_ALL_DONE, and LibGeoDecomp::WRITER_INITIALIZED.
void LibGeoDecomp::StripingSimulator< CELL_TYPE >::sendInnerGhostRegion | ( | GridType * | stripe | ) | [inline, private] |
References LibGeoDecomp::Simulator< CELL_TYPE >::chronometer, LibGeoDecomp::StripingSimulator< CELL_TYPE >::GHOSTREGION_ALPHA, LibGeoDecomp::StripingSimulator< CELL_TYPE >::GHOSTREGION_BETA, LibGeoDecomp::StripingSimulator< CELL_TYPE >::innerLowerGhostRegion, LibGeoDecomp::StripingSimulator< CELL_TYPE >::innerUpperGhostRegion, LibGeoDecomp::StripingSimulator< CELL_TYPE >::lowerNeighbor(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::mpilayer, LibGeoDecomp::MPILayer::sendUnregisteredRegion(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::upperNeighbor().
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::nanoStep(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::redistributeGrid().
void LibGeoDecomp::StripingSimulator< CELL_TYPE >::setIORegions | ( | ) | [inline, private] |
virtual void LibGeoDecomp::StripingSimulator< CELL_TYPE >::step | ( | ) | [inline, virtual] |
performs a single simulation step.
Implements LibGeoDecomp::Simulator< CELL_TYPE >.
References LibGeoDecomp::StripingSimulator< CELL_TYPE >::balanceLoad(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::handleInput(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::handleOutput(), LibGeoDecomp::Simulator< CELL_TYPE >::NANO_STEPS, LibGeoDecomp::StripingSimulator< CELL_TYPE >::nanoStep(), LibGeoDecomp::STEERER_NEXT_STEP, LibGeoDecomp::Simulator< CELL_TYPE >::stepNum, and LibGeoDecomp::WRITER_STEP_FINISHED.
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::run().
void LibGeoDecomp::StripingSimulator< CELL_TYPE >::swapGrids | ( | ) | [inline, private] |
void LibGeoDecomp::StripingSimulator< CELL_TYPE >::updateInnerGhostRegion | ( | const unsigned & | nanoStep | ) | [inline, private] |
the methods below are just used to structurize the nanoStep() method.
References LibGeoDecomp::Simulator< CELL_TYPE >::chronometer, LibGeoDecomp::StripingSimulator< CELL_TYPE >::innerLowerGhostRegion, LibGeoDecomp::StripingSimulator< CELL_TYPE >::innerUpperGhostRegion, and LibGeoDecomp::StripingSimulator< CELL_TYPE >::updateRegion().
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::nanoStep().
void LibGeoDecomp::StripingSimulator< CELL_TYPE >::updateInside | ( | const unsigned & | nanoStep | ) | [inline, private] |
void LibGeoDecomp::StripingSimulator< CELL_TYPE >::updateRegion | ( | const Region< DIM > & | region, | |
const unsigned & | nanoStep | |||
) | [inline, private] |
int LibGeoDecomp::StripingSimulator< CELL_TYPE >::upperNeighbor | ( | ) | const [inline, private] |
References LibGeoDecomp::StripingSimulator< CELL_TYPE >::mpilayer, LibGeoDecomp::StripingSimulator< CELL_TYPE >::partitions, LibGeoDecomp::MPILayer::rank(), LibGeoDecomp::MPILayer::size(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::WRAP_EDGES.
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::recvOuterGhostRegion(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::sendInnerGhostRegion().
void LibGeoDecomp::StripingSimulator< CELL_TYPE >::validateLoads | ( | const WeightVec & | newLoads, | |
const WeightVec & | oldLoads | |||
) | const [inline, private] |
ensures that newLoads and oldLoads have the same size and that the sums of their elements match.
References LibGeoDecomp::sum().
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::balanceLoad().
void LibGeoDecomp::StripingSimulator< CELL_TYPE >::waitForGhostRegions | ( | ) | [inline, private] |
References LibGeoDecomp::Simulator< CELL_TYPE >::chronometer, LibGeoDecomp::StripingSimulator< CELL_TYPE >::GHOSTREGION_ALPHA, LibGeoDecomp::StripingSimulator< CELL_TYPE >::GHOSTREGION_BETA, LibGeoDecomp::StripingSimulator< CELL_TYPE >::mpilayer, and LibGeoDecomp::MPILayer::wait().
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::handleInput(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::nanoStep(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::redistributeGrid().
WeightVec LibGeoDecomp::StripingSimulator< CELL_TYPE >::workloadsToPartitions | ( | const WeightVec & | workloads | ) | const [inline, private] |
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::balanceLoad().
friend class ParallelStripingSimulatorTest [friend] |
friend class StripingSimulatorTest [friend] |
boost::shared_ptr<LoadBalancer> LibGeoDecomp::StripingSimulator< CELL_TYPE >::balancer [private] |
GridType* LibGeoDecomp::StripingSimulator< CELL_TYPE >::curStripe [private] |
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::handleInput(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::handleOutput(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::initSimulation(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::redistributeGrid(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::StripingSimulator(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::swapGrids(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::updateRegion(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::~StripingSimulator().
const int LibGeoDecomp::StripingSimulator< CELL_TYPE >::DIM = Topology::DIM [static] |
Reimplemented from LibGeoDecomp::Simulator< CELL_TYPE >.
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::boundingBox(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::StripingSimulator().
unsigned LibGeoDecomp::StripingSimulator< CELL_TYPE >::ghostHeightLower [private] |
we need to distinguish four types of rims:
we assume the inner and outer rims to be of the same size. "rim" is the same as "ghost" and "ghost region".
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::adaptDimensions(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::initRegions().
unsigned LibGeoDecomp::StripingSimulator< CELL_TYPE >::ghostHeightUpper [private] |
Region<DIM> LibGeoDecomp::StripingSimulator< CELL_TYPE >::innerLowerGhostRegion [private] |
Region<DIM> LibGeoDecomp::StripingSimulator< CELL_TYPE >::innerRegion [private] |
Region<DIM> LibGeoDecomp::StripingSimulator< CELL_TYPE >::innerUpperGhostRegion [private] |
unsigned LibGeoDecomp::StripingSimulator< CELL_TYPE >::loadBalancingPeriod [private] |
MPILayer LibGeoDecomp::StripingSimulator< CELL_TYPE >::mpilayer [private] |
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::adaptDimensions(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::balanceLoad(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::gatherStatistics(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::handleInput(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::handleOutput(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::lowerNeighbor(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::recvOuterGhostRegion(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::redistributeGrid(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::sendInnerGhostRegion(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::StripingSimulator(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::upperNeighbor(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::waitForGhostRegions(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::~StripingSimulator().
GridType* LibGeoDecomp::StripingSimulator< CELL_TYPE >::newStripe [private] |
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::initSimulation(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::nanoStep(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::redistributeGrid(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::StripingSimulator(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::swapGrids(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::updateRegion(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::~StripingSimulator().
Region<DIM> LibGeoDecomp::StripingSimulator< CELL_TYPE >::outerLowerGhostRegion [private] |
Region<DIM> LibGeoDecomp::StripingSimulator< CELL_TYPE >::outerUpperGhostRegion [private] |
WeightVec LibGeoDecomp::StripingSimulator< CELL_TYPE >::partitions [private] |
Referenced by LibGeoDecomp::StripingSimulator< CELL_TYPE >::adaptDimensions(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::balanceLoad(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::lowerNeighbor(), LibGeoDecomp::StripingSimulator< CELL_TYPE >::StripingSimulator(), and LibGeoDecomp::StripingSimulator< CELL_TYPE >::upperNeighbor().
Region<DIM> LibGeoDecomp::StripingSimulator< CELL_TYPE >::region [private] |
Region<DIM> LibGeoDecomp::StripingSimulator< CELL_TYPE >::regionWithOuterGhosts [private] |
const bool LibGeoDecomp::StripingSimulator< CELL_TYPE >::WRAP_EDGES = Topology::template WrapsAxis<DIM - 1>::VALUE [static] |