From d4b5eb2be612c8eef5d88dca7a183828cb6d7521 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 7 Feb 2025 21:58:22 +0100 Subject: [PATCH] Improve heuristic.lp --- lib/spack/spack/solver/asp.py | 2 +- lib/spack/spack/solver/heuristic.lp | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index c6d8a515111..6bddd2d6b79 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -118,7 +118,7 @@ def default_clingo_control(): control = clingo().Control() control.configuration.configuration = "tweety" control.configuration.solver.heuristic = "Domain" - control.configuration.solver.opt_strategy = "usc,one" + control.configuration.solver.opt_strategy = "usc,one,1" return control diff --git a/lib/spack/spack/solver/heuristic.lp b/lib/spack/spack/solver/heuristic.lp index 76ba0b1fcd4..38b116a30b6 100644 --- a/lib/spack/spack/solver/heuristic.lp +++ b/lib/spack/spack/solver/heuristic.lp @@ -6,18 +6,28 @@ % Heuristic to speed-up solves %============================================================================= -#heuristic attr("node", PackageNode). [300, init] -#heuristic attr("node", PackageNode). [ 2, factor] -#heuristic attr("node", PackageNode). [ -1, sign] -#heuristic attr("node", node(0, Dependency)) : attr("dependency_holds", ParentNode, Dependency, Type), not virtual(Dependency). [1@2, sign] +#heuristic node_compiler(ParentNode, CompilerNode). [1200, init] +#heuristic node_compiler(ParentNode, CompilerNode). [ 6, factor] +#heuristic node_compiler(ParentNode, CompilerNode). [ -1, sign] +#heuristic node_compiler(ParentNode, CompilerNode) : attr("depends_on", ParentNode, CompilerNode, "build"), provider_weight(CompilerNode, Language, 0), language(Language). [1@2, sign] -#heuristic attr("virtual_node", node(X, Virtual)). [60, init] +#heuristic attr("virtual_node", node(X, Virtual)). [600, init] #heuristic attr("virtual_node", node(X, Virtual)). [-1, sign] #heuristic attr("virtual_node", node(0, Virtual)) : node_depends_on_virtual(PackageNode, Virtual). [1@2, sign] #heuristic attr("virtual_node", node(0, "c")). [1@3, sign] #heuristic attr("virtual_node", node(0, "cxx")). [1@3, sign] -#heuristic attr("depends_on", ParentNode, ChildNode, Type). [150, init] +#heuristic unification_set(SetID, Node). [400, init] +#heuristic unification_set(SetID, Node). [ 4, factor] +#heuristic unification_set(SetID, Node). [ -1, sign] +#heuristic unification_set("root", node(0, "libc")). [ 1@2, sign] + +#heuristic attr("node", PackageNode). [300, init] +#heuristic attr("node", PackageNode). [ 4, factor] +#heuristic attr("node", PackageNode). [ -1, sign] +#heuristic attr("node", node(0, Dependency)) : attr("dependency_holds", ParentNode, Dependency, Type), not virtual(Dependency). [1@2, sign] + +#heuristic attr("depends_on", ParentNode, ChildNode, Type). [100, init] #heuristic attr("depends_on", ParentNode, ChildNode, Type). [4, factor] #heuristic attr("depends_on", ParentNode, ChildNode, Type). [-1, sign] #heuristic attr("depends_on", ParentNode, node(0, Dependency), Type) : attr("dependency_holds", ParentNode, Dependency, Type), not virtual(Dependency). [1@2, sign]