Open pearce8 opened 9 months ago
We should probably define a graded approach for generating these: only introduce a new hardware specification if one like it indeed does not exist.
To be clear, are you saying we shouldn't define a new file format like foo.yaml if foo.yaml includes details already in other yaml files?
system_definitions.yaml contains duplicate entries, but that's "by design" since it's supposed to be a human readable aggregation of other details.
software stack: compiler and MPI locations where defined: Optional?!? compilers.yaml
Spack auto-detects compilers as needed. All systems except x86 probably want to explicitly define a sensible default though.
What errors and guidance for mitigation should we give?
I do not have much experience anticipating and pre-handling issues with the wrong compilers being used. The "more-different" a user's system is, the more they should consider defining this themselves. This generally isn't an issue until Spack gets to the build phase of things (e.g. wrong compiler can't generate build artifacts). The exact error message can depend on the compilers, but also propagate to higher-level issues (e.g. building different version may change c++ standard, which generates its own set of errors depending on whether particular compiler versions support that standard).
Software stack: compiler and MPI versions where defined: compilers.yaml
MPI versions are not defined in compilers.yaml, they might be defined in packages.yaml
longevity: new versions can appear any time
when you say they can appear at any time, do you mean that the user could add a compiler definition could appear at any time? Spack won't search for compilers if any are already defined, and it doesn't search for external packages without prompting.
Updated:
Below the dashed line, we have the original system config design. Things have changed since then, and we need to:
What should the user use as a starter for their system definition?
System configs currently contain different types of information, which serves different purposes:
We should probably define a graded approach for generating these: