LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
line::mva::FjMmt< T > Struct Template Reference

The transformed layer and the bookkeeping the fixed point needs to drive it and to merge its results back. More...

#include <line/solvers/mva/fj_mmt.h>

Collaboration diagram for line::mva::FjMmt< T >:

Classes

struct  ForkRec
 One record per Fork of the base layer, ascending in node index. More...

Public Member Functions

bool active () const
bool is_join_station (std::size_t st) const

Public Attributes

qn::NetworkStruct< T > V
 the transformed ("nonfj") layer
std::vector< ForkRecforks
std::size_t sourceStation = 0
std::size_t sourceNode = 0
std::size_t sinkNode = 0
std::size_t norig = 0
 class count of the base layer
std::vector< std::size_t > fjclassmap
 (nclasses+1) auxiliary -> original, 0 if not auxiliary
std::vector< std::size_t > fjforkmap
 (nclasses+1) auxiliary -> index into forks
std::vector< double > fanout
 (nclasses+1)
std::vector< bool > auxdisabled
 (nclasses+1)
std::vector< std::size_t > auxclasses
 auxiliary class indices, ascending
std::vector< std::size_t > joinStations
 Every station that was a Join and is now a zero-service Delay, whether or not a fork claims it.
bool heidelberger_trivedi = false
 The transform is Heidelberger-Trivedi (options.config.fork_join='ht') rather than MMT.
std::map< std::size_t, std::size_t > auxDelayNode
 H-T only: the join node -> the auxiliary Delay NODE that carries the time the ORIGINAL class spends outside the fork-join span.
std::map< std::size_t, std::size_t > auxDelayStation
 H-T only: the same delay as a STATION index.
std::vector< std::size_t > auxbranch
 H-T only: the 1-based branch a given auxiliary class walks; 0 elsewhere.

Detailed Description

template<class T>
struct line::mva::FjMmt< T >

The transformed layer and the bookkeeping the fixed point needs to drive it and to merge its results back.

fjclassmap[s] is the ORIGINAL class an auxiliary class s stands for and 0 when s is not auxiliary; fjforkmap[s] is the index into forks of the fork it stands in for; fanout[s] is that fork's fan-out for that original class, which is what scales the auxiliary arrival rate.

Definition at line 113 of file fj_mmt.h.

Member Function Documentation

◆ active()

template<class T>
bool line::mva::FjMmt< T >::active ( ) const
inline

Definition at line 184 of file fj_mmt.h.

References auxclasses.

◆ is_join_station()

template<class T>
bool line::mva::FjMmt< T >::is_join_station ( std::size_t st) const
inline

Definition at line 186 of file fj_mmt.h.

References joinStations.

Member Data Documentation

◆ auxbranch

template<class T>
std::vector<std::size_t> line::mva::FjMmt< T >::auxbranch

H-T only: the 1-based branch a given auxiliary class walks; 0 elsewhere.

Definition at line 182 of file fj_mmt.h.

◆ auxclasses

template<class T>
std::vector<std::size_t> line::mva::FjMmt< T >::auxclasses

auxiliary class indices, ascending

Definition at line 153 of file fj_mmt.h.

Referenced by active().

◆ auxDelayNode

template<class T>
std::map<std::size_t, std::size_t> line::mva::FjMmt< T >::auxDelayNode

H-T only: the join node -> the auxiliary Delay NODE that carries the time the ORIGINAL class spends outside the fork-join span.

ht.m adds one such delay per Join, routes the Join into it and it back to the fork, so that an auxiliary token cycles over its own branch alone.

Definition at line 178 of file fj_mmt.h.

◆ auxDelayStation

template<class T>
std::map<std::size_t, std::size_t> line::mva::FjMmt< T >::auxDelayStation

H-T only: the same delay as a STATION index.

Definition at line 180 of file fj_mmt.h.

◆ auxdisabled

template<class T>
std::vector<bool> line::mva::FjMmt< T >::auxdisabled

(nclasses+1)

Definition at line 152 of file fj_mmt.h.

◆ fanout

template<class T>
std::vector<double> line::mva::FjMmt< T >::fanout

(nclasses+1)

Definition at line 151 of file fj_mmt.h.

◆ fjclassmap

template<class T>
std::vector<std::size_t> line::mva::FjMmt< T >::fjclassmap

(nclasses+1) auxiliary -> original, 0 if not auxiliary

Definition at line 149 of file fj_mmt.h.

◆ fjforkmap

template<class T>
std::vector<std::size_t> line::mva::FjMmt< T >::fjforkmap

(nclasses+1) auxiliary -> index into forks

Definition at line 150 of file fj_mmt.h.

◆ forks

template<class T>
std::vector<ForkRec> line::mva::FjMmt< T >::forks

Definition at line 144 of file fj_mmt.h.

◆ heidelberger_trivedi

template<class T>
bool line::mva::FjMmt< T >::heidelberger_trivedi = false

The transform is Heidelberger-Trivedi (options.config.fork_join='ht') rather than MMT.

The two share this record because the fixed point that drives them is one function in the reference too (fjFixedPoint.m); what differs is the transform (fj_ht.h against fj_mmt.h), the per-pass update – H-T has no auxiliary open stream whose arrival rate to re-set – and the synchronisation delays and merge-back the driver applies afterwards.

Definition at line 171 of file fj_mmt.h.

◆ joinStations

template<class T>
std::vector<std::size_t> line::mva::FjMmt< T >::joinStations

Every station that was a Join and is now a zero-service Delay, whether or not a fork claims it.

The passes that must hold Immediate at a join, and the merge-back that must keep a join's original-class throughput, iterate this rather than the fork records.

Definition at line 161 of file fj_mmt.h.

Referenced by is_join_station().

◆ norig

template<class T>
std::size_t line::mva::FjMmt< T >::norig = 0

class count of the base layer

Definition at line 148 of file fj_mmt.h.

◆ sinkNode

template<class T>
std::size_t line::mva::FjMmt< T >::sinkNode = 0

Definition at line 147 of file fj_mmt.h.

◆ sourceNode

template<class T>
std::size_t line::mva::FjMmt< T >::sourceNode = 0

Definition at line 146 of file fj_mmt.h.

◆ sourceStation

template<class T>
std::size_t line::mva::FjMmt< T >::sourceStation = 0

Definition at line 145 of file fj_mmt.h.

◆ V

template<class T>
qn::NetworkStruct<T> line::mva::FjMmt< T >::V

the transformed ("nonfj") layer

Definition at line 143 of file fj_mmt.h.


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