summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMassimiliano Culpo <massimiliano.culpo@gmail.com>2020-12-21 22:16:37 +0100
committerTodd Gamblin <tgamblin@llnl.gov>2020-12-22 00:02:54 -0800
commit635c6c29fa6e50373daba646db7cd81560329bf9 (patch)
tree05f7d5ddc3562358f1a6c7d148021589ea040c45 /lib
parent32f0bf905712d4120217767cc4a3bddab68eff17 (diff)
downloadspack-635c6c29fa6e50373daba646db7cd81560329bf9.tar.gz
spack-635c6c29fa6e50373daba646db7cd81560329bf9.tar.bz2
spack-635c6c29fa6e50373daba646db7cd81560329bf9.tar.xz
spack-635c6c29fa6e50373daba646db7cd81560329bf9.zip
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.
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/solver/concretize.lp6
1 files 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)