You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add support for providing the "intel classic" compiler.
This is for supporting users who still have not migrated from the
`ifort` compiler.
It installs both `intel-oneapi-compilers` (for C and C++) and the
`intel-oneapi-compilers-classic` (for Fortran) Spack packages.
The user probably has to hack the `prefer` line in the
`environments.yaml` description of the target environment.... but this
is a rarely used feature that does not justify the refactoring required
to make an elegant solution.
Build order: `gcc`is built first (using system compiler), then `nvhpc`/`llvm`/`llvm-amdgpu`/`intel-oneapi-compilers` are built using the gcc toolchain. Stackinator appends opinionated variants (e.g. `gcc@13 +bootstrap`, `nvhpc@25.1 ~mpi~blas~lapack`, `llvm@16 +clang ~gold`). Each compiler becomes a separate spec group in the unified `spack.yaml`.
92
+
Build order: `gcc`is built first (using system compiler), then `nvhpc`/`llvm`/`llvm-amdgpu`/`intel-oneapi`/`intel-classic` are built using the gcc toolchain. Stackinator appends opinionated variants (e.g. `gcc@13 +bootstrap`, `nvhpc@25.1 ~mpi~blas~lapack`, `llvm@16 +clang ~gold`). Each compiler becomes a separate spec group in the unified `spack.yaml`.
93
+
94
+
The `intel-oneapi` and `intel-classic` recipe keys differ from their spack package names. Three distinct names are involved: the **recipe key** (`intel-oneapi`/`intel-classic`; used in compilers.yaml, environments.yaml `compiler`, spec-group names, `needs`), the **spack package** (`intel-oneapi-compilers`/`intel-oneapi-compilers-classic`; used to build the spec, query the spack DB in `compiler-config.py`, and as the packages.yaml key), and the **spack compiler name** (`oneapi`/`intel`; used only in the auto-generated `prefer` constraint). `Recipe` stores the package name in `self.compilers[key]["package"]`; `compiler_names` returns package names, and each environment gets a `compiler_packages` list mapping its recipe keys to package names for the view-symlink filter.
91
95
92
96
### `environments.yaml` (required)
93
97
```yaml
@@ -291,7 +295,7 @@ The build runs inside a bwrap sandbox (`bwrap-mutable-root.sh`) that:
291
295
The unified `spack.yaml` uses Spack 1.2 spec groups to express the build order and per-group concretizer settings. Structure:
Copy file name to clipboardExpand all lines: docs/recipes.md
+14Lines changed: 14 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -110,8 +110,15 @@ The compilers are built in multiple stages:
110
110
* `gcc:version`: The version of gcc
111
111
1. *llvm*: (optional) The llvm toolchain is built using the gcc toolchain installed in step 1.
112
112
* `llvm:version`: The version of llvm
113
+
1. *llvm-amdgpu*: (optional) The AMD ROCm llvm toolchain is built using the gcc toolchain installed in step 1.
114
+
* `llvm-amdgpu:version`: The version of llvm-amdgpu
113
115
1. *nvhpc*: (optional) The nvhpc toolchain is built using the gcc toolchain installed in step 1.
114
116
* `nvhpc:version`: The version of nvhpc
117
+
1. *intel-oneapi*: (optional) The Intel oneAPI (`icx`/`icpx`/`ifx`) toolchain is built using the gcc toolchain installed in step 1.
118
+
* `intel-oneapi:version`: The version of the oneAPI compilers (spack package `intel-oneapi-compilers`)
119
+
1. *intel-classic*: (optional) The classic Intel (`icc`/`icpc`/`ifort`) toolchain is built using the gcc toolchain installed in step 1.
120
+
* `intel-classic:version`: The version of the classic compilers (spack package `intel-oneapi-compilers-classic`)
121
+
* **note**: the intel-classic compiler is used to provide a compiler, and will install a copy of `intel-oneapi-compilers` to provide the C and C++ compilers.
115
122
116
123
The first step - building `gcc` - is required, so that the simplest stack will provide at least one version of gcc compiled for the target architecture.
117
124
@@ -121,6 +128,13 @@ The first step - building `gcc` - is required, so that the simplest stack will p
0 commit comments