souffle
2.0.2-371-g6315b36
|
Go to the documentation of this file.
24 class ProfileUseAnalysis;
25 class RelationDetailCacheAnalysis;
32 class TranslationUnit;
60 const std::vector<Atom*> atoms,
const BindingStore& bindingStore)
const = 0;
70 const std::vector<Atom*> atoms,
const BindingStore& bindingStore)
const override;
80 const std::vector<Atom*> atoms,
const BindingStore& bindingStore)
const override;
90 const std::vector<Atom*> atoms,
const BindingStore& bindingStore)
const override;
100 const std::vector<Atom*> atoms,
const BindingStore& bindingStore)
const override;
110 const std::vector<Atom*> atoms,
const BindingStore& bindingStore)
const override;
120 const std::vector<Atom*> atoms,
const BindingStore& bindingStore)
const override;
130 const std::vector<Atom*> atoms,
const BindingStore& bindingStore)
const override;
144 const std::vector<Atom*> atoms,
const BindingStore& bindingStore)
const override;
157 const std::vector<Atom*> atoms,
const BindingStore& bindingStore)
const override;
168 const std::vector<Atom*> atoms,
const BindingStore& bindingStore)
const override;
184 const std::vector<Atom*> atoms,
const BindingStore& bindingStore)
const override;
Goal: Prioritise (1) all bound, then (2) atoms with at least one bound argument, then (3) left-most.
Goal: prioritise (1) all-bound, then (2) deltas, and then (3) left-most.
Goal: Always choose the left-most atom.
std::vector< double > evaluateCosts(const std::vector< Atom * > atoms, const BindingStore &bindingStore) const override
Evaluates the cost of choosing each atom next in the current schedule.
std::vector< double > evaluateCosts(const std::vector< Atom * > atoms, const BindingStore &bindingStore) const override
Evaluates the cost of choosing each atom next in the current schedule.
std::vector< double > evaluateCosts(const std::vector< Atom * > atoms, const BindingStore &bindingStore) const override
Evaluates the cost of choosing each atom next in the current schedule.
Intermediate representation of a horn clause.
Goal: Prioritise atoms with all arguments bound.
std::vector< double > evaluateCosts(const std::vector< Atom * > atoms, const BindingStore &bindingStore) const override
Evaluates the cost of choosing each atom next in the current schedule.
Analysis that loads profile data and has a profile query interface.
Analysis pass mapping identifiers with relations and clauses.
Goal: reorder based on the given profiling information Metric: cost(atom_R) = log(|atom_R|) * #free/#...
virtual ~SipsMetric()=default
static std::unique_ptr< SipsMetric > create(const std::string &heuristic, const TranslationUnit &tu)
Create a SIPS metric based on a given heuristic.
Goal: prioritise (1) all-bound, then (2) max number of bound vars, then (3) left-most.
LeastFreeVarsSips()=default
Translation unit class for the translation pipeline.
Goal: prioritise max ratio of bound args.
std::vector< double > evaluateCosts(const std::vector< Atom * > atoms, const BindingStore &bindingStore) const override
Evaluates the cost of choosing each atom next in the current schedule.
Goal: choose the atom with the least number of unbound arguments.
virtual std::vector< double > evaluateCosts(const std::vector< Atom * > atoms, const BindingStore &bindingStore) const =0
Evaluates the cost of choosing each atom next in the current schedule.
std::vector< double > evaluateCosts(const std::vector< Atom * > atoms, const BindingStore &bindingStore) const override
Evaluates the cost of choosing each atom next in the current schedule.
std::vector< unsigned int > getReordering(const Clause *clause) const
Determines the new ordering of a clause after the SIPS is applied.
Goal: choose the atom with the least amount of unbound variables.
std::vector< double > evaluateCosts(const std::vector< Atom * > atoms, const BindingStore &bindingStore) const override
Evaluates the cost of choosing each atom next in the current schedule.
Class for SIPS cost-metric functions Each subclass represents a different heuristic used for evaluati...
std::vector< double > evaluateCosts(const std::vector< Atom * > atoms, const BindingStore &bindingStore) const override
Evaluates the cost of choosing each atom next in the current schedule.
ProfileUseSips(const analysis::ProfileUseAnalysis &profileUse)
const analysis::ProfileUseAnalysis & profileUse
std::vector< double > evaluateCosts(const std::vector< Atom * > atoms, const BindingStore &bindingStore) const override
Evaluates the cost of choosing each atom next in the current schedule.