LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
api_dispatch_misc.cpp File Reference
#include "api_dispatch_detail.h"
#include <cctype>
#include <cstdint>
#include <cstdlib>
#include <string>
#include <vector>
#include "line/api/mam/map_moment.h"
#include "line/api/polling/polling_qsys_1limited.h"
#include "line/api/polling/polling_qsys_exhaustive.h"
#include "line/api/polling/polling_qsys_klimited.h"
#include "line/api/polling/polling_qsys_table.h"
#include "line/lang/lang_types.h"
#include "line/api/fes/ljd_linearize.h"
#include "line/api/fes/fes_compute_throughputs.h"
#include "line/api/fes/fes_compute_metrics.h"
#include "line/api/fes/fes_build_isolated.h"
#include "line/api/fes/fes_map_interdeparture.h"
#include "line/api/fes/fes_map_interp.h"
#include "line/api/fes/fes_map_levels.h"
#include "line/api/fes/fes_map_moments.h"
#include "line/api/fes/fes_map_solve.h"
#include "line/api/fes/fes_map_aggregate.h"
#include "line/api/cache/cache_erec.h"
#include "line/api/cache/cache_cost.h"
#include "line/api/cache/cache_spm_size.h"
#include "line/api/cache/cache_gamma.h"
#include "line/api/cache/cache_gamma_lp.h"
#include "line/api/cache/cache_miss_asy.h"
#include "line/api/cache/cache_miss.h"
#include "line/api/cache/cache_miss_rmf.h"
#include "line/api/cache/cache_rrm_meanfield.h"
#include "line/api/cache/cache_rrm_meanfield_ode.h"
#include "line/api/cache/cache_miss_fpi.h"
#include "line/api/cache/cache_miss_spm.h"
#include "line/api/cache/cache_mva.h"
#include "line/api/cache/cache_mva_miss.h"
#include "line/api/cache/cache_prob_erec.h"
#include "line/api/cache/cache_prob_fpi.h"
#include "line/api/cache/cache_prob_spm.h"
#include "line/api/cache/cache_spm.h"
#include "line/api/cache/cache_t_hlru.h"
#include "line/api/cache/cache_ttl_hlru.h"
#include "line/api/cache/cache_xi_fp.h"
#include "line/api/cache/cache_xi_iter.h"
#include "line/api/cache/cache_is.h"
#include "line/api/cache/cache_miss_is.h"
#include "line/api/cache/cache_prob_is.h"
#include "line/api/cache/cache_lrum_map_levelstats.h"
#include "line/api/cache/cache_t_lrum_map.h"
#include "line/api/cache/cache_ttl_lrua.h"
#include "line/api/cache/cache_ttl_lrum_map.h"
#include "line/api/cache/cache_sojourn.h"
#include "line/api/da/da_cache_isolate.h"
#include "line/api/da/da_traffic_superpos.h"
#include "line/api/lossn/lossn_erlangfp.h"
#include "line/api/lossn/lossn_manjunath.h"
#include "line/api/lossn/lossn_mci.h"
#include "line/api/lossn/lossn_rec.h"
#include "line/api/lossn/lossn_asy.h"
#include "line/api/lossn/lossn_kr.h"
#include "line/api/lossn/lossn_links.h"
#include "line/api/lossn/lossn_revsens.h"
#include "line/api/dqsys/dqsys_bernoulli1.h"
#include "line/api/mam/map_transform.h"
#include "line/api/mam/map2mmpp.h"
#include "line/api/trace/autocov.h"
#include "line/api/mam/aph_fit.h"
#include "line/api/mam/m3pp22_fitc_cov.h"
#include "line/api/mam/ldqbd_mphc.h"
#include "line/api/mam/mmdp_isfeasible.h"
#include "line/api/pfqn/infradius_h.h"
#include "line/api/pfqn/pas_placement.h"
#include "line/api/mapqn/mapqn_amva.h"
#include "line/api/mapqn/mapqn_bnd_lr.h"
#include "line/api/mapqn/mapqn_bnd_lr_mva.h"
#include "line/api/mapqn/mapqn_bnd_qr.h"
#include "line/api/mapqn/mapqn_bnd_qr_ld.h"
#include "line/api/mapqn/mapqn_bnd_qr_delay.h"
#include "line/api/mapqn/mapqn_qr_bounds_bas.h"
#include "line/api/mapqn/mapqn_qr_bounds_rsrd.h"
#include "line/api/retrieval/retrieval_metrics.h"
#include "line/api/retrieval/retrieval_mva.h"
#include "line/api/retrieval/retrieval_fpi.h"
#include "line/api/retrieval/retrieval_fpi_latency.h"
#include "line/api/retrieval/retrieval_nc.h"
#include "line/api/retrieval/retrieval_rayint.h"
#include "line/api/sum/sum_closed.h"
#include "line/api/sum/sum_closing.h"
#include "line/api/wf/wf_branch_detector.h"
#include "line/api/wf/wf_loop_detector.h"
#include "line/api/wf/wf_parallel_detector.h"
#include "line/api/wf/wf_sequence_detector.h"
#include "line/api/mdd/mdd.h"
#include "line/api/mdd/mdd_rec.h"
#include "line/api/mdd/mdd_closedqn.h"
#include "line/api/spn/spn_conv.h"
#include "line/api/spn/spn_ispn.h"
#include "line/api/spn/spn_mdd.h"
#include "line/api/spn/spn_rec_enabled.h"
#include "line/api/spn/spn_sinvariants.h"

Go to the source code of this file.

Namespaces

namespace  line
 Conservation laws of a layered queueing network, enumerated from its structure.
namespace  line::reg

Macros

#define LINE_POLLING_OP(Name, fn)
#define LINE_CACHE_GM_MATRIX_OP(Name, fn, out, ...)
 The (gamma, m) -> prob family.
#define LINE_MAPQN_UIQ_OP(OPNAME, FN, RESULT)
 mapqn_bnd_lr and mapqn_bnd_qr share the signature (params, objective_queue, objective_phase[, sense]) and the result {objective, U, IT, Q}; queues and phases are 0-based.
#define LINE_RETRIEVAL_EXACT_OP(OPNAME, FN)
 retrieval_metrics and retrieval_mva share (m, lambda, eta, gamma) and the [pmiss, phit, pdh] return list.

Functions

void line::reg::register_api_misc (DispatchTable &t)
void line::reg::register_library_only_misc (LibraryOnlyTable &t)

Macro Definition Documentation

◆ LINE_CACHE_GM_MATRIX_OP

#define LINE_CACHE_GM_MATRIX_OP ( Name,
fn,
out,
... )
Value:
struct Name { \
template <class T> \
static Json run(Args& a) { \
const Matrix<T> gamma = a.matrix<T>("gamma"); \
const std::vector<int> m = a.ints("m"); \
__VA_ARGS__; \
a.done(); \
Json r; \
r[out] = encode_matrix(cache::fn(gamma, m)); \
return r; \
} \
};

The (gamma, m) -> prob family.

Definition at line 1169 of file api_dispatch_misc.cpp.

◆ LINE_MAPQN_UIQ_OP

#define LINE_MAPQN_UIQ_OP ( OPNAME,
FN,
RESULT )
Value:
struct OPNAME { \
template <class T> \
static Json run(Args& a) { \
Args p(params_object(a, #FN), #FN " params"); \
mapqn::MapqnParams<T> prm; \
read_mapqn_core<T>(p, prm, #FN); \
p.done(); \
const int q = a.required_integer("objective_queue"); \
const int ph = a.required_integer("objective_phase"); \
const bool hs = a.has("sense"); \
const std::string sense = a.text("sense", ""); \
a.done(); \
const mapqn::RESULT<T> s = hs ? mapqn::FN(prm, q, ph, mapqn_sense(sense, #FN))\
: mapqn::FN(prm, q, ph); \
Json res = mapqn_lp_status(s); \
res["U"] = encode_matrix(s.U); \
res["IT"] = encode_matrix(s.IT); \
res["Q"] = encode_matrix(s.Q); \
Json r; \
r["result"] = res; \
r["x"] = encode_vector(s.x); \
r["fval"] = encode_scalar(s.objective); \
return r; \
} \
};

mapqn_bnd_lr and mapqn_bnd_qr share the signature (params, objective_queue, objective_phase[, sense]) and the result {objective, U, IT, Q}; queues and phases are 0-based.

The port has no default for objective_queue and objective_phase, so both are required.

Definition at line 2040 of file api_dispatch_misc.cpp.

◆ LINE_POLLING_OP

#define LINE_POLLING_OP ( Name,
fn )
Value:
struct Name { \
template <class T> \
static Json run(Args& a) { \
const polling::PollingMoments<T> m = polling_moments_from_args<T>(a, #fn); \
Json r; \
r["W"] = encode_vector(polling::fn(m)); \
return r; \
} \
};

Definition at line 352 of file api_dispatch_misc.cpp.

◆ LINE_RETRIEVAL_EXACT_OP

#define LINE_RETRIEVAL_EXACT_OP ( OPNAME,
FN )
Value:
struct OPNAME { \
template <class T> \
static Json run(Args& a) { \
const std::vector<int> m = a.ints("m"); \
const std::vector<T> lambda = a.vector<T>("lambda"); \
const Matrix<T> eta = a.matrix<T>("eta"); \
const Matrix<T> gamma = a.matrix<T>("gamma"); \
a.done(); \
const auto s = retrieval::FN(m, lambda, eta, gamma); \
Json r; \
r["pmiss"] = encode_vector(s.pmiss); \
r["phit"] = encode_matrix(s.phit); \
r["pdh"] = encode_matrix(s.pdh); \
return r; \
} \
};

retrieval_metrics and retrieval_mva share (m, lambda, eta, gamma) and the [pmiss, phit, pdh] return list.

Definition at line 2258 of file api_dispatch_misc.cpp.