Mavryk_benchmark.Dep_graph
Models associated to benchmarks have free variables. Some of these variables are to be inferred from the empirical data, but some others must be provided by other models and correspond to _dependencies_ of a model upon the result of another one.
The goal of this module is to take as input a set of models seen as sets of free variables and infer back a partial dependency ordering among them. In particular, a topological sort of this partial ordering yields a scheduling for the inference process that respects cross-model dependencies.
Such a problem does not always have a solution, or can have several solutions (ie it is in general ill-posed). When there's more than one possible solution, we use a simple heuristic to pick one.
module Solver : sig ... end
Decide dependencies/provides of free variables
module Graphviz : sig ... end
Visualization of solutions using Graphviz
module Graph : sig ... end
Dependency graph of benchmarks using dependencies/provides
find_model_or_generic local_model_name local_model_list
returns the model matching local_model_name
from a local_model_list
of a benchmark. If none match, then searches for models named "*"
.
val load_workload_files :
local_model_name:string ->
string list ->
Graph.t * Measure.packed_measurement Namespace.Hashtbl.t
load_workload_files ~local_model_name files
loads .workload
files given in files
, looks for the model local_model_name
, and if found, adds it to a dependency graph. Returns (G, H)
where G
is the final graph obtained this way, and H
is a table that maps the name of a benchmark with its contents.