summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorMassimiliano Culpo <massimiliano.culpo@gmail.com>2024-09-24 08:44:47 +0200
committerGitHub <noreply@github.com>2024-09-23 23:44:47 -0700
commit679770b02cf9505752b8da93026e8533bbf38651 (patch)
tree93456cb3fd9e3e578bd48e1c68d411b84ffb50ea /var
parent971577d85326b6a73e01dc5b77e5151c68be31fc (diff)
downloadspack-679770b02cf9505752b8da93026e8533bbf38651.tar.gz
spack-679770b02cf9505752b8da93026e8533bbf38651.tar.bz2
spack-679770b02cf9505752b8da93026e8533bbf38651.tar.xz
spack-679770b02cf9505752b8da93026e8533bbf38651.zip
solver: use a new heuristic (#46548)
This PR introduces a new heuristic for the solver, which behaves better when compilers are treated as nodes. Apparently, it performs better also on `develop`, where compilers are still node attributes. The new heuristic: - Sets an initial priority for guessing a few attributes. The order is "nodes" (300), "dependencies" (150), "virtual dependencies" (60), "version" and "variants" (30), and "targets" and "compilers" (1). This initial priority decays over time during the solve, and falls back to the defaults. - By default, it considers most guessed facts as "false". For instance, by default a node doesn't exist in the optimal answer set, or a version is not picked as a node version etc. - There are certain conditions that override the default heuristic using the _priority_ of a rule, which previously we didn't use. For instance, by default we guess that a `attr("variant", Node, Variant, Value)` is false, but if we know that the node is already in the answer set, and the value is the default one, then we guess it is true. Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
Diffstat (limited to 'var')
0 files changed, 0 insertions, 0 deletions