![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
The Heidelberger-Trivedi fork-join transform, options.config.fork_join='ht'. More...
#include <algorithm>#include <cmath>#include <limits>#include <map>#include <string>#include <utility>#include <vector>#include "line/lang/qn/network_struct.h"#include "line/solvers/mva/fj_mmt.h"#include "line/util/error.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::mva |
Functions | |
| template<class T> | |
| FjMmt< T > | line::mva::fj_ht (const qn::NetworkStruct< T > &L) |
| Build the H-T transform of L. | |
| template<class T> | |
| FjMmt< T > | line::mva::fj_fork_join_transform (const qn::NetworkStruct< T > &L, const std::string &method) |
| options.config.fork_join -> the transform it names. | |
The Heidelberger-Trivedi fork-join transform, options.config.fork_join='ht'.
Port of matlab/src/io/@ModelAdapter/ht.m (Heidelberger and Trivedi, "Queueing network models for parallel processing with asynchronous tasks", IEEE TC C-31(11), 1982). It is the second arm of the fork-join fixed point that fj_driver.h drives, beside the MMT transform of fj_mmt.h, and it answers a different question: where MMT keeps the circulating job on ONE branch and carries the remaining branches by auxiliary OPEN classes, H-T sends the circulating job STRAIGHT PAST the branches and gives every branch its own auxiliary CLOSED class, one per (forked class, branch), whose population matches the original's. The four moves are:
WHAT IT REFUSES, by name and for the same reasons the reference does:
The synchronisation delays themselves, and the merge-back of the auxiliary columns, live in fj_driver.h: the reference keeps both arms in one fjFixedPoint, and so does this port.
Definition in file fj_ht.h.