LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
da_cacheqn.h File Reference

Decomposition-aggregation driver for integrated cache-queueing models, a port of matlab/src/api/da/da_cacheqn.m. More...

#include <cstddef>
#include <limits>
#include <functional>
#include <vector>
#include "line/api/cache/cache_mva.h"
#include "line/api/cache/cache_prob_erec.h"
#include "line/api/cache/cache_ttl_lrua.h"
#include "line/api/cache/cache_miss_fpi.h"
#include "line/api/da/da_cache_isolate.h"
#include "line/api/da/da_fpi.h"
#include "line/lang/qn/network_struct.h"
#include "line/solvers/mva/mva_types.h"
#include "line/util/matrix.h"
Include dependency graph for da_cacheqn.h:

Go to the source code of this file.

Classes

struct  line::da::CacheqnInfo< T >
 The converged isolated-cache inputs, kept for per-item occupancy reporting. More...
struct  line::da::CacheqnResult< T >

Namespaces

namespace  line
namespace  line::da

Functions

template<class T>
std::vector< Matrix< T > > line::da::da_cacheqn_itemprob (const CacheqnInfo< T > &info)
 Per-item occupancy of every cache from the CONVERGED access factors.
template<class T>
CacheqnResult< T > line::da::da_cacheqn (qn::NetworkStruct< T > sn, bool exact, const mva::MvaOptions &opt, const std::function< mva::MvaSolution< T >(const qn::NetworkStruct< T > &)> &netfun, const std::function< std::vector< T >(const Matrix< T > &, const std::vector< int > &, const std::vector< Matrix< T > > &, const qn::CacheParam< T > &)> &missfun=nullptr)
 Decomposition-aggregation driver for integrated cache-queueing models, a port of matlab/src/api/da/da_cacheqn.m.

Detailed Description

Decomposition-aggregation driver for integrated cache-queueing models, a port of matlab/src/api/da/da_cacheqn.m.

Alternates between (i) solving each cache in isolation given the current per-class arrival rates and (ii) solving the surrounding queueing network with every cache replaced by a class switch that routes according to the current hit/miss probabilities, until the cache arrival rates reach a fixed point (da_fpi under the 1-norm). The cache node is RELABELLED to a ClassSwitch but stays stateful, so it remains a retained node of the stochastic complement – exactly as the reference does. The per-sweep routing rewrite goes straight into rtnodes, after which da_recompute_visits_from_rtnodes rebuilds rt and the visits with the chains held fixed.

ARITHMETIC: the miss solve (cache_mva / cache_miss_fpi) and the network solve decide the achievable T; the driver itself is field arithmetic. The tolerance loop is inexact by construction whatever the backend.

Definition in file da_cacheqn.h.