spack/share/spack
Massimiliano Culpo 54210270c8
concretizer: reduce search space with static analysis (#48729)
Currently, when we setup the ASP problem for `clingo`, we don't take into account the configuration. This results in setting up ASP problems that are larger than necessary, with possibly redundant information, and higher concretization times. 

This PR tries to improve things by adding an opt-in feature that computes the _possible dependencies_ of a solve taking also into account the current configuration, and avoids adding possible dependencies that we are certain can't be in the final solution.

The feature can be activated with:
```yaml
concretizer:
  static_analysis: true
```

Examples of simple rules to discard dependencies are:
- Dependencies that are not buildable, and for which no binary is present (e.g. `cray-mpich` etc. on non Cray systems)
- Dependencies that are not for the current platform (e.g. `msmpi` on non Windows platforms)
- Conditional dependencies that cannot be activated, because of some user requirement (e.g. `cuda` etc. if the user requires `~cuda` in configuration)
- Virtual providers that cannot be used, because of a requirement on a virtual

The speed-up these rules seem to give depends on the use case at hand, but if the configuration is updated properly, they are noticeable. 

Since in cases where there is no rule to exclude packages upfront, reuse is active, and this option is activated, it's possible to see some minor slow down, the feature has been added as opt-in, so it's turned off by default.
2025-02-11 08:44:20 +01:00
..
bash Remove years from license headers (#48352) 2025-01-02 15:40:28 +01:00
bootstrap bootstrap: add clingo 3.13 binaries and more (#47126) 2024-10-24 08:55:14 +02:00
csh Remove years from license headers (#48352) 2025-01-02 15:40:28 +01:00
docker Remove years from license headers (#48352) 2025-01-02 15:40:28 +01:00
docs/docker/module-file-tutorial Remove years from license headers (#48352) 2025-01-02 15:40:28 +01:00
fish Remove years from license headers (#48352) 2025-01-02 15:40:28 +01:00
gitlab/cloud_pipelines concretizer: reduce search space with static analysis (#48729) 2025-02-11 08:44:20 +01:00
keys update tutorial command for v0.18.0 and new gpg key (#30904) 2022-05-28 02:36:20 +00:00
logo add artisanal handcrafted SVG Spack logo. (#6165) 2017-11-06 22:42:16 -08:00
qa Fix regression due to dyninst update (#48935) 2025-02-07 10:46:42 +01:00
templates Don't inject import statements in package recipes 2024-12-05 12:48:00 -08:00
setup-env.bat Normalize Spack Win entry points (#38648) 2024-10-25 15:23:29 -04:00
setup-env.csh Remove years from license headers (#48352) 2025-01-02 15:40:28 +01:00
setup-env.fish Remove years from license headers (#48352) 2025-01-02 15:40:28 +01:00
setup-env.ps1 Remove years from license headers (#48352) 2025-01-02 15:40:28 +01:00
setup-env.sh Remove years from license headers (#48352) 2025-01-02 15:40:28 +01:00
setup-tutorial-env.sh Remove years from license headers (#48352) 2025-01-02 15:40:28 +01:00
spack-completion.bash Remove years from license headers (#48352) 2025-01-02 15:40:28 +01:00
spack-completion.fish Deprecate frontend/backend os/target (#47756) 2025-01-29 13:22:51 +01:00