Module 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

val find_model_or_generic : string -> (string * 'model) list -> 'model option

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.