Lumiera 0.pre.04
»edit your freedom«
Loading...
Searching...
No Matches
TestChainLoad< maxFan > Class Template Reference

#include "/Werk/devel/lumi/tests/vault/gear/test-chain-load.hpp"

Description

template<size_t maxFan = DEFAULT_FAN>
class vault::gear::test::TestChainLoad< maxFan >

A Generator for synthetic Render Jobs for Scheduler load testing.

Allocates a fixed set of #numNodes and generates connecting topology.

Template Parameters
maxFanmaximal fan-in/out from a node, also limits maximal parallel strands.
See also
TestChainLoad_test

Definition at line 249 of file test-chain-load.hpp.

Classes

struct  Node
 Graph Data structure. More...
 
class  NodeControlBinding
 Policy/Binding for generation of random parameters by »drawing« based on the node-hash. More...
 
class  ScheduleCtx
 Setup and wiring for a test run to schedule a computation structure as defined by this TestChainLoad instance. More...
 

Public Types

using Param = lib::Limited< size_t, maxFan >
 Parameter values limited [0 .
 
using Rule = lib::RandomDraw< NodeControlBinding >
 Topology is governed by rules for random params.
 

Static Public Member Functions

static Rule rule ()
 Abbreviation for starting rules.
 
static Rule value (size_t v)
 
static Rule rule_atStart (uint v)
 
static Rule rule_atJoin (uint v)
 
static Rule rule_atLink (uint v)
 
static Rule rule_atJoin_else (double p1, double p2, uint v=1)
 

Public Member Functions

 TestChainLoad (size_t nodeCnt=DEFAULT_SIZ)
 
size_t size () const
 
size_t topLevel () const
 
size_t getSeed () const
 
auto allNodes ()
 
auto allNodePtr ()
 
auto allExitNodes ()
 
auto allExitHashes () const
 
size_t getHash () const
 global hash is the combination of all exit node hashes != 0
 
size_t nodeID (Node const *n)
 
size_t nodeID (Node const &n)
 
TestChainLoad && seedingRule (Rule r)
 
TestChainLoad && expansionRule (Rule r)
 
TestChainLoad && reductionRule (Rule r)
 
TestChainLoad && pruningRule (Rule r)
 
TestChainLoad && weightRule (Rule r)
 
TestChainLoad && configure_isolated_nodes ()
 preconfigured topology: only unconnected seed/exit nodes
 
TestChainLoad && configureShape_short_chains2 ()
 preconfigured topology: isolated simple 2-step chains
 
TestChainLoad && configureShape_short_chains3_interleaved ()
 preconfigured topology: simple 3-step chains, starting interleaved
 
TestChainLoad && configureShape_short_segments3_interleaved ()
 preconfigured topology: simple interwoven 3-step graph segments
 
TestChainLoad && configureShape_chain_loadBursts ()
 preconfigured topology: single graph with massive »load bursts«
 
TestChainLoad && buildTopology ()
 Use current configuration and seed to (re)build Node connectivity.
 
TestChainLoad && setSeed (size_t seed=rani())
 Set the overall seed value.
 
TestChainLoad && setWeight (size_t fixedNodeWeight=1)
 Set a fixed weight for all nodes.
 
TestChainLoad && recalculate ()
 Recalculate all node hashes and propagate seed value.
 
TestChainLoad && clearNodeHashes ()
 Clear node hashes and propagate seed value.
 
std::string generateTopologyDOT ()
 
TestChainLoad && printTopologyDOT ()
 
double calcRuntimeReference (microseconds timeBase=LOAD_DEFAULT_TIME, size_t sizeBase=0, size_t repeatCnt=GRAPH_BENCHMARK_RUNS)
 Conduct a number of benchmark runs over processing the Graph synchronously.
 
TestChainLoad && performGraphSynchronously (microseconds timeBase=LOAD_DEFAULT_TIME, size_t sizeBase=0)
 Emulate complete graph processing in a single threaded loop.
 
TestChainLoad && printRuntimeReference (microseconds timeBase=LOAD_DEFAULT_TIME, size_t sizeBase=0, size_t repeatCnt=GRAPH_BENCHMARK_RUNS)
 
size_t calcWeightSum ()
 overall sum of configured node weights
 
auto allLevelWeights ()
 calculate node weights aggregated per level
 
auto levelScheduleSequence (uint concurrency=1)
 sequence of the summed compounded weight factors after each level
 
double calcExpectedCompoundedWeight (uint concurrency=1)
 calculate the simplified/theoretic reduction of compounded weight through concurrency
 
Statistic computeGraphStatistics ()
 Operator on TestChainLoad to evaluate current graph connectivity.
 
TestChainLoad && printTopologyStatistics ()
 Print a tabular summary of graph characteristics.
 
ScheduleCtx setupSchedule (Scheduler &scheduler)
 establish and configure the context used for scheduling computations.
 

Friends

class ScheduleCtx
 

Private Types

using NodeTab = Node::Tab
 
using NodeIT = lib::RangeIter< Node * >
 

Private Member Functions

NodefrontNode ()
 
NodeafterNode ()
 
NodebackNode ()
 
- Private Member Functions inherited from MoveOnly
 ~MoveOnly ()=default
 
 MoveOnly ()=default
 
 MoveOnly (MoveOnly &&)=default
 
 MoveOnly (MoveOnly const &)=delete
 
MoveOnlyoperator= (MoveOnly &&)=delete
 
MoveOnlyoperator= (MoveOnly const &)=delete
 

Private Attributes

std::unique_ptr< Node[]> nodes_
 
size_t numNodes_
 
Rule seedingRule_ {}
 
Rule expansionRule_ {}
 
Rule reductionRule_ {}
 
Rule pruningRule_ {}
 
Rule weightRule_ {}
 

Constructor & Destructor Documentation

◆ TestChainLoad()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad ( size_t  nodeCnt = DEFAULT_SIZ)
inlineexplicit

Definition at line 385 of file test-chain-load.hpp.

Member Typedef Documentation

◆ Param

template<size_t maxFan = DEFAULT_FAN>
using Param = lib::Limited<size_t, maxFan>

Parameter values limited [0 .

. maxFan]

Definition at line 361 of file test-chain-load.hpp.

◆ Rule

template<size_t maxFan = DEFAULT_FAN>
using Rule = lib::RandomDraw<NodeControlBinding>

Topology is governed by rules for random params.

Definition at line 364 of file test-chain-load.hpp.

◆ NodeTab

template<size_t maxFan = DEFAULT_FAN>
using NodeTab = Node::Tab
private

Definition at line 367 of file test-chain-load.hpp.

◆ NodeIT

template<size_t maxFan = DEFAULT_FAN>
using NodeIT = lib::RangeIter<Node*>
private

Definition at line 368 of file test-chain-load.hpp.

Member Function Documentation

◆ frontNode()

template<size_t maxFan = DEFAULT_FAN>
Node * frontNode ( )
inlineprivate

Definition at line 379 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::nodes_.

Referenced by TestChainLoad< maxFan >::allNodes(), TestChainLoad< maxFan >::buildTopology(), TestChainLoad< maxFan >::nodeID(), and TestChainLoad< maxFan >::setSeed().

+ Here is the caller graph for this function:

◆ afterNode()

template<size_t maxFan = DEFAULT_FAN>
Node * afterNode ( )
inlineprivate

Definition at line 380 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::nodes_, and TestChainLoad< maxFan >::numNodes_.

Referenced by TestChainLoad< maxFan >::allNodes().

+ Here is the caller graph for this function:

◆ backNode()

template<size_t maxFan = DEFAULT_FAN>
Node * backNode ( )
inlineprivate

Definition at line 381 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::nodes_, and TestChainLoad< maxFan >::numNodes_.

Referenced by TestChainLoad< maxFan >::buildTopology().

+ Here is the caller graph for this function:

◆ size()

◆ topLevel()

template<size_t maxFan = DEFAULT_FAN>
size_t topLevel ( ) const
inline

Definition at line 394 of file test-chain-load.hpp.

Referenced by TestChainLoad< maxFan >::ScheduleCtx::anchorSchedule(), TestChainLoad< maxFan >::ScheduleCtx::fillAdaptedSchedule(), and TestChainLoad< maxFan >::ScheduleCtx::fillDefaultSchedule().

+ Here is the caller graph for this function:

◆ getSeed()

template<size_t maxFan = DEFAULT_FAN>
size_t getSeed ( ) const
inline

Definition at line 395 of file test-chain-load.hpp.

Referenced by TestChainLoad< maxFan >::buildTopology(), TestChainLoad< maxFan >::clearNodeHashes(), and TestChainLoad< maxFan >::recalculate().

+ Here is the caller graph for this function:

◆ allNodes()

template<size_t maxFan = DEFAULT_FAN>
auto allNodes ( )
inline

Definition at line 399 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::afterNode(), lib::explore(), and TestChainLoad< maxFan >::frontNode().

Referenced by TestChainLoad< maxFan >::allExitNodes(), TestChainLoad< maxFan >::allLevelWeights(), TestChainLoad< maxFan >::allNodePtr(), TestChainLoad< maxFan >::calcWeightSum(), TestChainLoad< maxFan >::clearNodeHashes(), TestChainLoad< maxFan >::generateTopologyDOT(), TestChainLoad< maxFan >::recalculate(), and TestChainLoad< maxFan >::setWeight().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ allNodePtr()

template<size_t maxFan = DEFAULT_FAN>
auto allNodePtr ( )
inline

Definition at line 404 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::allNodes().

+ Here is the call graph for this function:

◆ allExitNodes()

template<size_t maxFan = DEFAULT_FAN>
auto allExitNodes ( )
inline

Definition at line 410 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::allNodes().

Referenced by TestChainLoad< maxFan >::ScheduleCtx::lastExitNodes().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ allExitHashes()

template<size_t maxFan = DEFAULT_FAN>
auto allExitHashes ( ) const
inline

Definition at line 415 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::Node::hash.

Referenced by TestChainLoad< maxFan >::getHash().

+ Here is the caller graph for this function:

◆ getHash()

template<size_t maxFan = DEFAULT_FAN>
size_t getHash ( ) const
inline

global hash is the combination of all exit node hashes != 0

Definition at line 422 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::allExitHashes(), lib::hash::combine(), and lib::iter_explorer::IDENTITY.

Referenced by SchedulerStress_test::investigateWorkProcessing().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ nodeID() [1/2]

template<size_t maxFan = DEFAULT_FAN>
size_t nodeID ( Node const *  n)
inline
Returns
the node's index number, based on its storage location

Definition at line 434 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::frontNode().

Referenced by TestChainLoad< maxFan >::allLevelWeights(), TestChainLoad< maxFan >::generateTopologyDOT(), TestChainLoad< maxFan >::ScheduleCtx::lastExitNodes(), and TestChainLoad< maxFan >::ScheduleCtx::setDependency().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ nodeID() [2/2]

template<size_t maxFan = DEFAULT_FAN>
size_t nodeID ( Node const &  n)
inline

Definition at line 435 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::nodeID().

Referenced by TestChainLoad< maxFan >::nodeID().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ seedingRule()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && seedingRule ( Rule  r)
inline

Definition at line 442 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::seedingRule_.

Referenced by TestChainLoad< maxFan >::configureShape_short_chains3_interleaved(), TestChainLoad< maxFan >::configureShape_short_segments3_interleaved(), and SchedulerStress_test::investigateWorkProcessing().

+ Here is the caller graph for this function:

◆ expansionRule()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && expansionRule ( Rule  r)
inline

Definition at line 449 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::expansionRule_.

Referenced by TestChainLoad< maxFan >::configureShape_chain_loadBursts(), and TestChainLoad_test::showcase_Expansion().

+ Here is the caller graph for this function:

◆ reductionRule()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && reductionRule ( Rule  r)
inline

Definition at line 456 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::reductionRule_.

Referenced by TestChainLoad< maxFan >::configureShape_chain_loadBursts(), and TestChainLoad< maxFan >::configureShape_short_segments3_interleaved().

+ Here is the caller graph for this function:

◆ pruningRule()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && pruningRule ( Rule  r)
inline

Definition at line 463 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::pruningRule_.

Referenced by TestChainLoad< maxFan >::configure_isolated_nodes(), TestChainLoad< maxFan >::configureShape_short_chains2(), TestChainLoad< maxFan >::configureShape_short_chains3_interleaved(), and TestChainLoad< maxFan >::configureShape_short_segments3_interleaved().

+ Here is the caller graph for this function:

◆ weightRule()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && weightRule ( Rule  r)
inline

◆ rule()

template<size_t maxFan = DEFAULT_FAN>
static Rule rule ( )
inlinestatic

Abbreviation for starting rules.

Definition at line 478 of file test-chain-load.hpp.

Referenced by TestChainLoad< maxFan >::buildTopology(), TestChainLoad< maxFan >::configureShape_chain_loadBursts(), TestChainLoad< maxFan >::configureShape_short_chains2(), TestChainLoad< maxFan >::configureShape_short_chains3_interleaved(), and TestChainLoad< maxFan >::configureShape_short_segments3_interleaved().

+ Here is the caller graph for this function:

◆ value()

template<size_t maxFan = DEFAULT_FAN>
static Rule value ( size_t  v)
inlinestatic

Definition at line 479 of file test-chain-load.hpp.

References RandomDraw< POL >::fixedVal().

Referenced by TestChainLoad< maxFan >::configure_isolated_nodes(), TestChainLoad< maxFan >::configureShape_short_chains2(), TestChainLoad< maxFan >::configureShape_short_chains3_interleaved(), and TestChainLoad< maxFan >::configureShape_short_segments3_interleaved().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rule_atStart()

template<size_t maxFan = DEFAULT_FAN>
static Rule rule_atStart ( uint  v)
inlinestatic

Definition at line 482 of file test-chain-load.hpp.

References RandomDraw< POL >::fixedVal(), and RandomDraw< POL >::mapping().

Referenced by TestChainLoad< maxFan >::configureShape_short_chains3_interleaved().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rule_atJoin()

template<size_t maxFan = DEFAULT_FAN>
static Rule rule_atJoin ( uint  v)
inlinestatic

Definition at line 492 of file test-chain-load.hpp.

References RandomDraw< POL >::fixedVal(), and RandomDraw< POL >::mapping().

Referenced by TestChainLoad< maxFan >::configureShape_short_segments3_interleaved().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rule_atLink()

template<size_t maxFan = DEFAULT_FAN>
static Rule rule_atLink ( uint  v)
inlinestatic

Definition at line 502 of file test-chain-load.hpp.

References RandomDraw< POL >::fixedVal(), and RandomDraw< POL >::mapping().

+ Here is the call graph for this function:

◆ rule_atJoin_else()

template<size_t maxFan = DEFAULT_FAN>
static Rule rule_atJoin_else ( double  p1,
double  p2,
uint  v = 1 
)
inlinestatic

Definition at line 514 of file test-chain-load.hpp.

References RandomDraw< POL >::mapping(), RandomDraw< POL >::maxVal(), and RandomDraw< POL >::probability().

+ Here is the call graph for this function:

◆ configure_isolated_nodes()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && configure_isolated_nodes ( )
inline

preconfigured topology: only unconnected seed/exit nodes

Definition at line 526 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::pruningRule(), TestChainLoad< maxFan >::value(), and TestChainLoad< maxFan >::weightRule().

+ Here is the call graph for this function:

◆ configureShape_short_chains2()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && configureShape_short_chains2 ( )
inline

preconfigured topology: isolated simple 2-step chains

Definition at line 535 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::pruningRule(), TestChainLoad< maxFan >::rule(), TestChainLoad< maxFan >::value(), and TestChainLoad< maxFan >::weightRule().

+ Here is the call graph for this function:

◆ configureShape_short_chains3_interleaved()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && configureShape_short_chains3_interleaved ( )
inline

preconfigured topology: simple 3-step chains, starting interleaved

Definition at line 544 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::pruningRule(), TestChainLoad< maxFan >::rule(), TestChainLoad< maxFan >::rule_atStart(), TestChainLoad< maxFan >::seedingRule(), TestChainLoad< maxFan >::value(), and TestChainLoad< maxFan >::weightRule().

+ Here is the call graph for this function:

◆ configureShape_short_segments3_interleaved()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && configureShape_short_segments3_interleaved ( )
inline

preconfigured topology: simple interwoven 3-step graph segments

Definition at line 554 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::pruningRule(), TestChainLoad< maxFan >::reductionRule(), TestChainLoad< maxFan >::rule(), TestChainLoad< maxFan >::rule_atJoin(), TestChainLoad< maxFan >::seedingRule(), TestChainLoad< maxFan >::value(), and TestChainLoad< maxFan >::weightRule().

Referenced by TestChainLoad_test::usageExample(), and TestChainLoad_test::verify_runtime_reference().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ configureShape_chain_loadBursts()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && configureShape_chain_loadBursts ( )
inline

preconfigured topology: single graph with massive »load bursts«

See also
TestChainLoad_test::showcase_StablePattern()

Definition at line 566 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::expansionRule(), TestChainLoad< maxFan >::reductionRule(), TestChainLoad< maxFan >::rule(), TestChainLoad< maxFan >::setSeed(), and TestChainLoad< maxFan >::weightRule().

Referenced by SchedulerService_test::processSchedule(), SchedulerStress_test::setup_systematicSchedule(), SchedulerStress_test::smokeTest(), and TestChainLoad_test::verify_adjusted_schedule().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildTopology()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && buildTopology ( )
inline

Use current configuration and seed to (re)build Node connectivity.

While working in-place, the wiring and thus the resulting hash values are completely rewritten, progressing from start and controlled by evaluating the drawing rules on the current node, computing its hash.

Definition at line 584 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::Node::addPred(), TestChainLoad< maxFan >::backNode(), TestChainLoad< maxFan >::Node::clear(), TestChainLoad< maxFan >::expansionRule_, TestChainLoad< maxFan >::frontNode(), TestChainLoad< maxFan >::getSeed(), TestChainLoad< maxFan >::Node::hash, TestChainLoad< maxFan >::Node::level, TestChainLoad< maxFan >::pruningRule_, TestChainLoad< maxFan >::reductionRule_, TestChainLoad< maxFan >::rule(), TestChainLoad< maxFan >::seedingRule_, and TestChainLoad< maxFan >::weightRule_.

Referenced by SchedulerStress_test::investigateWorkProcessing(), SchedulerService_test::processSchedule(), SchedulerStress_test::setup_systematicSchedule(), TestChainLoad_test::showcase_Expansion(), SchedulerStress_test::smokeTest(), TestChainLoad_test::usageExample(), TestChainLoad_test::verify_adjusted_schedule(), and TestChainLoad_test::verify_runtime_reference().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setSeed()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && setSeed ( size_t  seed = rani())
inline

Set the overall seed value.

Note
does not propagate seed to consecutive start nodes

Definition at line 683 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::frontNode(), and TestChainLoad< maxFan >::Node::hash.

Referenced by TestChainLoad< maxFan >::configureShape_chain_loadBursts().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setWeight()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && setWeight ( size_t  fixedNodeWeight = 1)
inline

Set a fixed weight for all nodes.

Note
no change to topology (works even without any topology)

Definition at line 695 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::allNodes().

+ Here is the call graph for this function:

◆ recalculate()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && recalculate ( )
inline

Recalculate all node hashes and propagate seed value.

Definition at line 707 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::allNodes(), and TestChainLoad< maxFan >::getSeed().

+ Here is the call graph for this function:

◆ clearNodeHashes()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && clearNodeHashes ( )
inline

Clear node hashes and propagate seed value.

Definition at line 723 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::allNodes(), and TestChainLoad< maxFan >::getSeed().

+ Here is the call graph for this function:

◆ generateTopologyDOT()

template<size_t maxFan = DEFAULT_FAN>
std::string generateTopologyDOT ( )
inline

Definition at line 736 of file test-chain-load.hpp.

References Scope::add(), TestChainLoad< maxFan >::allNodes(), TestChainLoad< maxFan >::nodeID(), and Scope::rank().

Referenced by TestChainLoad< maxFan >::printTopologyDOT().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ printTopologyDOT()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && printTopologyDOT ( )
inline

Definition at line 783 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::generateTopologyDOT().

+ Here is the call graph for this function:

◆ calcRuntimeReference()

template<size_t maxFan = DEFAULT_FAN>
double calcRuntimeReference ( microseconds  timeBase = LOAD_DEFAULT_TIME,
size_t  sizeBase = 0,
size_t  repeatCnt = GRAPH_BENCHMARK_RUNS 
)
inline

Conduct a number of benchmark runs over processing the Graph synchronously.

Returns
runtime time in microseconds
Remarks
can be used as reference point to judge Scheduler performance;
  • additional parallelisation could be exploited: ∅w / floor(∅w/concurrency)
  • but the Scheduler also adds overhead and dispatch leeway

Definition at line 801 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::performGraphSynchronously().

Referenced by TestChainLoad< maxFan >::ScheduleCtx::calcRuntimeReference(), TestChainLoad< maxFan >::printRuntimeReference(), and TestChainLoad_test::verify_runtime_reference().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ performGraphSynchronously()

template<size_t maxFan>
TestChainLoad< maxFan > && performGraphSynchronously ( microseconds  timeBase = LOAD_DEFAULT_TIME,
size_t  sizeBase = 0 
)

Emulate complete graph processing in a single threaded loop.

Parameters
timeBasetime delay produced by ComputationalLoad at Node.weight==1; can be set to zero to disable the synthetic processing load on nodes
sizeBaseallocation base size used; also causes switch to memory-access based load
See also
TestChainLoad::calcRuntimeReference() for a benchmark based on this processing

Definition at line 1464 of file test-chain-load.hpp.

References ComputationalLoad::invoke(), ComputationalLoad::maybeCalibrate(), ComputationalLoad::sizeBase, ComputationalLoad::timeBase, and ComputationalLoad::useAllocation.

Referenced by TestChainLoad< maxFan >::calcRuntimeReference().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ printRuntimeReference()

template<size_t maxFan = DEFAULT_FAN>
TestChainLoad && printRuntimeReference ( microseconds  timeBase = LOAD_DEFAULT_TIME,
size_t  sizeBase = 0,
size_t  repeatCnt = GRAPH_BENCHMARK_RUNS 
)
inline

Definition at line 816 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::calcRuntimeReference().

+ Here is the call graph for this function:

◆ calcWeightSum()

template<size_t maxFan = DEFAULT_FAN>
size_t calcWeightSum ( )
inline

overall sum of configured node weights

Definition at line 832 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::allNodes(), and TestChainLoad< maxFan >::Node::weight.

Referenced by TestChainLoad< maxFan >::ScheduleCtx::determineEmpiricFormFactor().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ allLevelWeights()

template<size_t maxFan = DEFAULT_FAN>
auto allLevelWeights ( )
inline

calculate node weights aggregated per level

Definition at line 841 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::allNodes(), LevelWeight::endidx, LevelWeight::level, TestChainLoad< maxFan >::Node::level, TestChainLoad< maxFan >::nodeID(), LevelWeight::nodes, LevelWeight::weight, and TestChainLoad< maxFan >::Node::weight.

Referenced by TestChainLoad< maxFan >::calcExpectedCompoundedWeight(), TestChainLoad< maxFan >::levelScheduleSequence(), and TestChainLoad_test::verify_adjusted_schedule().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ levelScheduleSequence()

template<size_t maxFan = DEFAULT_FAN>
auto levelScheduleSequence ( uint  concurrency = 1)
inline

sequence of the summed compounded weight factors after each level

Definition at line 857 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::allLevelWeights(), and vault::gear::test::computeWeightFactor().

Referenced by TestChainLoad< maxFan >::ScheduleCtx::fillAdaptedSchedule().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ calcExpectedCompoundedWeight()

template<size_t maxFan = DEFAULT_FAN>
double calcExpectedCompoundedWeight ( uint  concurrency = 1)
inline

calculate the simplified/theoretic reduction of compounded weight through concurrency

Definition at line 870 of file test-chain-load.hpp.

References TestChainLoad< maxFan >::allLevelWeights(), and vault::gear::test::computeWeightFactor().

Referenced by TestChainLoad< maxFan >::ScheduleCtx::determineEmpiricFormFactor().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ computeGraphStatistics()

template<size_t maxFan>
Statistic computeGraphStatistics ( )
inline

Operator on TestChainLoad to evaluate current graph connectivity.

In a pass over the internal storage, all nodes are classified and accounted into a set of categories, thereby evaluating

  • the overall number of nodes and levels generated
  • the number of nodes in each level (termed level width)
  • the fraction of overall nodes falling into each category
  • the average number of category members over the levels
  • the density of members, normalised over level width
  • the weight centre of this category members
  • the weight centre of according to density

Definition at line 1171 of file test-chain-load.hpp.

References Statistic::addPoint(), vault::gear::test::CAT, Statistic::closeAverages(), and vault::gear::test::IDX_SEED.

Referenced by SchedulerService_test::processSchedule(), and SchedulerStress_test::smokeTest().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ printTopologyStatistics()

template<size_t maxFan>
TestChainLoad< maxFan > && printTopologyStatistics ( )
inline

Print a tabular summary of graph characteristics.

Remarks
explanation of indicators
  • »node« : accounting for all nodes
  • »seed« : seed nodes start a new subgraph or side chain
  • »exit« : exit nodes produce output and have no successor
  • »innr« : inner nodes have both predecessors and successors
  • »fork« : a node linked to more than one successor
  • »join« : a node consuming data from more than one predecessor
  • »link« : a node in a linear processing chain; one input, one output
  • »LEVL« : the overall number of distinct time levels in the graph
  • »SEGS« : the number of completely disjoint partial subgraphs
  • »knot« : a node which both joins data and forks out to multiple successors
  • frac : the percentage of overall nodes falling into this category
  • ∅pS : averaged per Segment (warning: see below)
  • ∅pL : averaged per Level
  • ∅pLW : count normalised to the width at that level and then averaged per Level
  • γL◆ : weight centre of this kind of node, relative to the overall graph
  • γLW◆ : the same, but using the level-width-normalised value
  • γL⬙ : weight centre, but relative to the current subgraph or segment
  • γLW⬙ : same but using level-width-normalised value Together, these values indicates how the simulated processing load is structured over time, assuming that the »Levels« are processed consecutively in temporal order. The graph can unfold or contract over time, and thus nodes can be clustered irregularly, which can be seen from the weight centres; for that reason, the width-normalised variants of the indicators are also accounted for, since a wider graph also implies that there are more nodes of each kind per level, even while the actual density of this kind did not increase.
Warning
no comprehensive connectivity analysis is performed, and thus there is no reliable indication of subgraphs. The SEGS statistics may be misleading, since these count only completely severed and restarted graphs.

Definition at line 1254 of file test-chain-load.hpp.

References Statistic::avgheight, vault::gear::test::CAT, Indicator::cL, Indicator::cLW, Indicator::cnt, Indicator::frac, Statistic::indicators, vault::gear::test::KEYS, Statistic::levels, Statistic::maxheight, Indicator::pL, Indicator::pLW, Indicator::pS, Statistic::segments, Indicator::sL, and Indicator::sLW.

◆ setupSchedule()

template<size_t maxFan>
TestChainLoad< maxFan >::ScheduleCtx setupSchedule ( Scheduler scheduler)

establish and configure the context used for scheduling computations.

Note
clears hashes and re-propagates seed in the node graph beforehand.

Definition at line 2183 of file test-chain-load.hpp.

Member Data Documentation

◆ nodes_

◆ numNodes_

template<size_t maxFan = DEFAULT_FAN>
size_t numNodes_
private

◆ seedingRule_

template<size_t maxFan = DEFAULT_FAN>
Rule seedingRule_ {}
private

◆ expansionRule_

template<size_t maxFan = DEFAULT_FAN>
Rule expansionRule_ {}
private

◆ reductionRule_

template<size_t maxFan = DEFAULT_FAN>
Rule reductionRule_ {}
private

◆ pruningRule_

template<size_t maxFan = DEFAULT_FAN>
Rule pruningRule_ {}
private

◆ weightRule_

template<size_t maxFan = DEFAULT_FAN>
Rule weightRule_ {}
private

Friends And Related Symbol Documentation

◆ ScheduleCtx

template<size_t maxFan = DEFAULT_FAN>
friend class ScheduleCtx
friend

Definition at line 883 of file test-chain-load.hpp.

+ Inheritance diagram for TestChainLoad< maxFan >:
+ Collaboration diagram for TestChainLoad< maxFan >:

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