From 635c6c29fa6e50373daba646db7cd81560329bf9 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 21 Dec 2020 22:16:37 +0100 Subject: concretizer: optimized loop on node platforms We can speed-up the computation by avoiding a double loop in a cardinality constraint and enforcing the rule instead as an integrity constraint. --- lib/spack/spack/solver/concretize.lp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index 6bbd5c03e7..cda05347ea 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -362,7 +362,7 @@ variant_default_value(Package, Variant, Value) % when assigned a value. auto_variant("dev_path"). auto_variant("patches"). -variant(Package, "dev_path") +variant(Package, Variant) :- variant_set(Package, Variant, _), auto_variant(Variant). variant_single_value(Package, "dev_path") :- variant_set(Package, "dev_path", _). @@ -381,9 +381,9 @@ variant_single_value(Package, "dev_path") %----------------------------------------------------------------------------- % Platform semantics %----------------------------------------------------------------------------- + % one platform per node -1 { node_platform(Package, Platform) : node_platform(Packagee, Platform) } 1 - :- node(Package). +:- M = #count { Platform : node_platform(Package, Platform) }, M !=1, node(Package). % if no platform is set, fall back to the default node_platform(Package, Platform) -- cgit v1.2.3-60-g2f50