Skip to content

Commit 30c0035

Browse files
authored
make level_zero variant consistent, add missing instances (spack#47985)
1 parent 466c3ab commit 30c0035

File tree

10 files changed

+105
-95
lines changed

10 files changed

+105
-95
lines changed

share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ spack:
223223
# - py-torch # error
224224

225225
# GPU
226-
- aml +ze
226+
- aml +level_zero
227227
- amrex +sycl
228228
- arborx +sycl ^kokkos +sycl +openmp cxxstd=17 +examples
229229
- cabana +sycl ^kokkos +sycl +openmp cxxstd=17 +examples

var/spack/repos/builtin/packages/aml/package.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,11 @@ class Aml(AutotoolsPackage):
4747
#############################
4848

4949
variant("opencl", default=False, description="Support for memory operations on top of OpenCL.")
50-
variant("ze", default=False, description="Support for memory operations on top of Level Zero.")
50+
variant(
51+
"level_zero",
52+
default=False,
53+
description="Support for memory operations on top of Level Zero.",
54+
)
5155
variant("hip", default=False, description="Support for memory operations on top of HIP.")
5256
variant("cuda", default=False, description="Support for memory operations on top of CUDA.")
5357
variant("hwloc", default=True, description="Enable feature related to topology management")
@@ -70,7 +74,7 @@ class Aml(AutotoolsPackage):
7074
# - hip dependency. We use the environment variable HIP_PATH in the configure.
7175
depends_on("hip", when="+hip")
7276
# - level_zero loader is the dependency for the oneAPI variant
73-
depends_on("oneapi-level-zero", when="+ze")
77+
depends_on("oneapi-level-zero", when="+level_zero")
7478
# - hwloc >= 2.1 becomes a dependency when +hwloc variant is used.
7579
depends_on("[email protected]:", when="+hwloc")
7680
# - ocl-icd >= 2.1 becomes a dependency when +opencl variant is used.
@@ -94,15 +98,19 @@ class Aml(AutotoolsPackage):
9498

9599
# This is the function to overload to pass all hwloc flag.
96100
def configure_args(self):
97-
config_args = []
98-
for b in ["opencl", "hwloc", "ze", "hip", "cuda"]:
99-
config_args.extend(self.with_or_without(b))
101+
config_args = [
102+
*self.with_or_without("opencl"),
103+
*self.with_or_without("hwloc"),
104+
*self.with_or_without("hip"),
105+
*self.with_or_without("cuda"),
106+
*self.with_or_without("ze", variant="level_zero"),
107+
]
100108
if self.spec.satisfies("%oneapi"):
101-
config_args += ["--with-openmp-flags=-fiopenmp -fopenmp-targets=spir64"]
109+
config_args.append("--with-openmp-flags=-fiopenmp -fopenmp-targets=spir64")
102110
if self.spec.variants["hip-platform"].value == "amd":
103-
config_args += ["--with-hip-platform=amd"]
111+
config_args.append("--with-hip-platform=amd")
104112
if self.spec.variants["hip-platform"].value == "nvidia":
105-
config_args += ["--with-hip-platform=nvidia"]
113+
config_args.append("--with-hip-platform=nvidia")
106114
return config_args
107115

108116
# Tests

var/spack/repos/builtin/packages/double-batched-fft-library/package.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ class DoubleBatchedFftLibrary(CMakePackage):
3232

3333
variant("shared", default=True, description="Shared library")
3434
variant("sycl", default=True, description="Build bbfft-sycl")
35-
variant("level-zero", default=True, when="~sycl", description="Build bbfft-level-zero")
35+
variant("level_zero", default=True, when="~sycl", description="Build bbfft-level-zero")
3636
variant("opencl", default=True, when="~sycl", description="Build bbfft-opencl")
3737

3838
depends_on("[email protected]:", type="build")
3939
depends_on("oneapi-level-zero", when="+sycl")
40-
depends_on("oneapi-level-zero", when="+level-zero")
40+
depends_on("oneapi-level-zero", when="+level_zero")
4141
depends_on("opencl", when="+opencl")
4242

4343
patch("0001-Add-CPATH-and-LIBRARY_PATHs-to-OpenCL-search-paths.patch", when="@:0.3.6")
@@ -50,7 +50,7 @@ def cmake_args(self):
5050
return [
5151
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
5252
self.define_from_variant("BUILD_SYCL", "sycl"),
53-
self.define_from_variant("BUILD_LEVEL_ZERO", "level-zero"),
53+
self.define_from_variant("BUILD_LEVEL_ZERO", "level_zero"),
5454
self.define_from_variant("BUILD_OPENCL", "opencl"),
5555
self.define("BUILD_BENCHMARK", False),
5656
self.define("BUILD_EXAMPLE", False),

var/spack/repos/builtin/packages/geopm-service/package.py

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class GeopmService(AutotoolsPackage):
4141
)
4242
variant("gnu-ld", default=False, description="Assume C compiler uses gnu-ld")
4343

44-
variant("levelzero", default=False, description="Enables the use of oneAPI Level Zero loader")
44+
variant("level_zero", default=False, description="Enables the use of oneAPI Level Zero loader")
4545
variant("nvml", default=False, description="Enable NVML support")
4646

4747
variant(
@@ -51,7 +51,7 @@ class GeopmService(AutotoolsPackage):
5151
when="@develop",
5252
)
5353

54-
conflicts("+nvml", when="+levelzero", msg="LevelZero and NVML support are mutually exclusive")
54+
conflicts("+nvml", when="+level_zero", msg="LevelZero and NVML support are mutually exclusive")
5555

5656
conflicts("%gcc@:7.2", msg="Requires C++17 support")
5757
conflicts("%clang@:4", msg="Requires C++17 support")
@@ -100,7 +100,7 @@ class GeopmService(AutotoolsPackage):
100100
depends_on("systemd", when="+systemd")
101101
depends_on("libcap", when="+libcap")
102102
depends_on("liburing", when="+liburing")
103-
depends_on("oneapi-level-zero", when="+levelzero")
103+
depends_on("oneapi-level-zero", when="+level_zero")
104104
depends_on("cuda", when="+nvml")
105105

106106
extends("python")
@@ -129,19 +129,19 @@ def autoreconf(self, spec, prefix):
129129
def configure_args(self):
130130
args = [
131131
"--with-bash-completion-dir="
132-
+ join_path(self.spec.prefix, "share", "bash-completion", "completions")
132+
+ join_path(self.spec.prefix, "share", "bash-completion", "completions"),
133+
*self.enable_or_disable("debug"),
134+
*self.enable_or_disable("docs"),
135+
*self.enable_or_disable("systemd"),
136+
*self.enable_or_disable("liburing"),
137+
*self.with_or_without("liburing", activation_value="prefix"),
138+
*self.enable_or_disable("libcap"),
139+
*self.with_or_without("gnu-ld"),
140+
*self.enable_or_disable("levelzero", variant="level_zero"),
141+
*self.enable_or_disable("nvml"),
142+
*self.enable_or_disable("rawmsr"),
133143
]
134144

135-
args += self.enable_or_disable("debug")
136-
args += self.enable_or_disable("docs")
137-
args += self.enable_or_disable("systemd")
138-
args += self.enable_or_disable("liburing")
139-
args += self.with_or_without("liburing", activation_value="prefix")
140-
args += self.enable_or_disable("libcap")
141-
args += self.with_or_without("gnu-ld")
142-
143-
args += self.enable_or_disable("levelzero")
144-
args += self.enable_or_disable("nvml")
145145
if self.spec.satisfies("+nvml"):
146146
args += [
147147
"--with-nvml="
@@ -150,10 +150,8 @@ def configure_args(self):
150150
)
151151
]
152152

153-
args += self.enable_or_disable("rawmsr")
154-
with when("@develop"):
155-
if self.spec.target.family != "x86_64":
156-
args += ["--disable-cpuid"]
153+
if self.spec.satisfies("@develop") and self.spec.target.family != "x86_64":
154+
args.append("--disable-cpuid")
157155
return args
158156

159157
def setup_run_environment(self, env):

var/spack/repos/builtin/packages/hwloc/package.py

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,7 @@ class Hwloc(AutotoolsPackage, CudaPackage, ROCmPackage):
9696
)
9797
variant("opencl", default=False, description="Support an OpenCL library at run time")
9898
variant("rocm", default=False, description="Support ROCm devices")
99-
variant(
100-
"oneapi-level-zero", default=False, description="Support Intel OneAPI Level Zero devices"
101-
)
99+
variant("level_zero", default=False, description="Support Intel OneAPI Level Zero devices")
102100

103101
depends_on("c", type="build")
104102
depends_on("cxx", type="build")
@@ -139,10 +137,10 @@ class Hwloc(AutotoolsPackage, CudaPackage, ROCmPackage):
139137
# variant of llvm-amdgpu depends on hwloc.
140138
depends_on("llvm-amdgpu", when="+opencl")
141139

142-
with when("+oneapi-level-zero"):
140+
with when("+level_zero"):
143141
depends_on("oneapi-level-zero")
144142
# LevelZero support isn't available until hwloc version 2.5.0
145-
conflicts("@:2.4.99", msg="hwloc supports Intel OneAPI Level Zero only since 2.5.0")
143+
conflicts("@:2.4", msg="hwloc supports Intel OneAPI Level Zero only since 2.5.0")
146144

147145
@classmethod
148146
def determine_version(cls, exe):
@@ -160,7 +158,18 @@ def libs(self):
160158
return LibraryList(libs)
161159

162160
def configure_args(self):
163-
args = []
161+
args = [
162+
*self.enable_or_disable("netloc"),
163+
*self.enable_or_disable("cairo"),
164+
*self.enable_or_disable("nvml"),
165+
*self.enable_or_disable("gl"),
166+
*self.enable_or_disable("cuda"),
167+
*self.enable_or_disable("libxml2"),
168+
*self.enable_or_disable("libudev"),
169+
*self.enable_or_disable("pci"),
170+
*self.enable_or_disable("libs"),
171+
*self.enable_or_disable("levelzero", variant="level_zero"),
172+
]
164173

165174
# If OpenCL is not enabled, disable it since hwloc might
166175
# pick up an OpenCL library at build time that is then
@@ -179,26 +188,11 @@ def configure_args(self):
179188
args.append("--disable-rsmi")
180189

181190
if self.spec.satisfies("+rocm"):
182-
args.append("--with-rocm={0}".format(self.spec["hip"].prefix))
183-
args.append("--with-rocm-version={0}".format(self.spec["hip"].version))
184-
185-
args.extend(self.enable_or_disable("netloc"))
186-
args.extend(self.enable_or_disable("cairo"))
187-
args.extend(self.enable_or_disable("nvml"))
188-
args.extend(self.enable_or_disable("gl"))
189-
args.extend(self.enable_or_disable("cuda"))
190-
args.extend(self.enable_or_disable("libxml2"))
191-
args.extend(self.enable_or_disable("libudev"))
192-
args.extend(self.enable_or_disable("pci"))
193-
args.extend(self.enable_or_disable("libs"))
191+
args.append(f'--with-rocm={self.spec["hip"].prefix}')
192+
args.append(f'--with-rocm-version={self.spec["hip"].version}')
194193

195194
if self.spec.satisfies("+cuda"):
196-
args.append("--with-cuda={0}".format(self.spec["cuda"].prefix))
197-
args.append("--with-cuda-version={0}".format(self.spec["cuda"].version))
198-
199-
if self.spec.satisfies("+oneapi-level-zero"):
200-
args.append("--enable-levelzero")
201-
else:
202-
args.append("--disable-levelzero")
195+
args.append(f'--with-cuda={self.spec["cuda"].prefix}')
196+
args.append(f'--with-cuda-version={self.spec["cuda"].version}')
203197

204198
return args

var/spack/repos/builtin/packages/libfabric/package.py

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,9 @@ class Libfabric(AutotoolsPackage, CudaPackage):
106106
# device file can only be opened once per process, however, and thus it
107107
# frequently conflicts with MPI.
108108
variant("kdreg", default=False, description="Enable kdreg on supported Cray platforms")
109-
110109
variant("debug", default=False, description="Enable debugging")
111-
112110
variant("uring", default=False, when="@1.17.0:", description="Enable uring support")
111+
variant("level_zero", default=False, description="Enable Level Zero support")
113112

114113
# For version 1.9.0:
115114
# headers: fix forward-declaration of enum fi_collective_op with C++
@@ -132,6 +131,7 @@ class Libfabric(AutotoolsPackage, CudaPackage):
132131
depends_on("uuid", when="fabrics=opx")
133132
depends_on("numactl", when="fabrics=opx")
134133
depends_on("[email protected]:", when="+uring")
134+
depends_on("oneapi-level-zero", when="+level_zero")
135135

136136
depends_on("m4", when="@main", type="build")
137137
depends_on("autoconf", when="@main", type="build")
@@ -195,26 +195,19 @@ def autoreconf(self, spec, prefix):
195195
bash("./autogen.sh")
196196

197197
def configure_args(self):
198-
args = []
199-
200-
args.extend(self.enable_or_disable("debug"))
201-
202-
if self.spec.satisfies("+kdreg"):
203-
args.append("--with-kdreg=yes")
204-
else:
205-
args.append("--with-kdreg=no")
206-
207-
if self.spec.satisfies("+uring"):
208-
args.append("--with-uring=yes")
198+
args = [
199+
*self.enable_or_disable("debug"),
200+
*self.with_or_without("kdreg"),
201+
*self.with_or_without("uring"),
202+
*self.with_or_without("cuda", activation_value="prefix"),
203+
*self.with_or_without("ze", variant="level_zero"),
204+
]
209205

210206
for fabric in [f if isinstance(f, str) else f[0].value for f in self.fabrics]:
211-
if "fabrics=" + fabric in self.spec:
212-
args.append("--enable-{0}=yes".format(fabric))
207+
if f"fabrics={fabric}" in self.spec:
208+
args.append(f"--enable-{fabric}")
213209
else:
214-
args.append("--enable-{0}=no".format(fabric))
215-
216-
if self.spec.satisfies("+cuda"):
217-
args.append(f"--with-cuda={self.spec['cuda'].prefix}")
210+
args.append(f"--disable-{fabric}")
218211

219212
return args
220213

var/spack/repos/builtin/packages/libquo/package.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ class Libquo(AutotoolsPackage):
2727
version("1.3", sha256="61b0beff15eae4be94b5d3cbcbf7bf757659604465709ed01827cbba45efcf90")
2828
version("1.2.9", sha256="0a64bea8f52f9eecd89e4ab82fde1c5bd271f3866c612da0ce7f38049409429b")
2929

30-
depends_on("c", type="build") # generated
31-
depends_on("fortran", type="build") # generated
30+
depends_on("c", type="build")
31+
depends_on("fortran", type="build")
3232

3333
depends_on("mpi")
3434

@@ -43,4 +43,9 @@ def autoreconf(self, spec, prefix):
4343
bash("./autogen")
4444

4545
def configure_args(self):
46-
return [f"CC={self.spec['mpi'].mpicc}", f"FC={self.spec['mpi'].mpifc}"]
46+
return [
47+
f"CC={self.spec['mpi'].mpicc}",
48+
f"FC={self.spec['mpi'].mpifc}",
49+
# hwloc is vendored
50+
"--disable-levelzero",
51+
]

var/spack/repos/builtin/packages/mpich/package.py

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,6 @@ class Mpich(AutotoolsPackage, CudaPackage, ROCmPackage):
5858
version("3.1", sha256="fcf96dbddb504a64d33833dc455be3dda1e71c7b3df411dfcf9df066d7c32c39")
5959
version("3.0.4", sha256="cf638c85660300af48b6f776e5ecd35b5378d5905ec5d34c3da7a27da0acf0b3")
6060

61-
depends_on("c", type="build") # generated
62-
depends_on("cxx", type="build") # generated
63-
depends_on("fortran", type="build", when="+fortran")
64-
6561
variant("hwloc", default=True, description="Use external hwloc package")
6662
variant("hydra", default=True, description="Build the hydra process manager")
6763
variant("romio", default=True, description="Enable ROMIO MPI I/O implementation")
@@ -134,21 +130,27 @@ class Mpich(AutotoolsPackage, CudaPackage, ROCmPackage):
134130
depends_on("yaksa+cuda", when="+cuda")
135131
depends_on("yaksa+rocm", when="+rocm")
136132

137-
conflicts("datatype-engine=yaksa", when="device=ch3")
138-
conflicts("datatype-engine=yaksa", when="device=ch3:sock")
139-
conflicts("datatype-engine=dataloop", when="+cuda")
140-
conflicts("datatype-engine=dataloop", when="+rocm")
141-
142133
variant(
143134
"hcoll",
144135
default=False,
145136
description="Enable support for Mellanox HCOLL accelerated "
146137
"collective operations library",
147138
when="@3.3: device=ch4 netmod=ucx",
148139
)
149-
depends_on("hcoll", when="+hcoll")
150140

151141
variant("xpmem", default=False, when="@3.4:", description="Enable XPMEM support")
142+
variant("level_zero", default=False, description="Enable level zero support")
143+
144+
conflicts("datatype-engine=yaksa", when="device=ch3")
145+
conflicts("datatype-engine=yaksa", when="device=ch3:sock")
146+
conflicts("datatype-engine=dataloop", when="+cuda")
147+
conflicts("datatype-engine=dataloop", when="+rocm")
148+
149+
depends_on("c", type="build")
150+
depends_on("cxx", type="build")
151+
depends_on("fortran", type="build", when="+fortran")
152+
153+
depends_on("hcoll", when="+hcoll")
152154
depends_on("xpmem", when="+xpmem")
153155

154156
# Todo: cuda can be a conditional variant, but it does not seem to work when
@@ -303,6 +305,7 @@ class Mpich(AutotoolsPackage, CudaPackage, ROCmPackage):
303305
depends_on("[email protected]:", when="@develop", type="build")
304306

305307
depends_on("cray-pmi", when="pmi=cray")
308+
depends_on("oneapi-level-zero", when="+level_zero")
306309

307310
conflicts("device=ch4", when="@:3.2")
308311
conflicts("netmod=ofi", when="@:3.1.4")
@@ -523,8 +526,13 @@ def configure_args(self):
523526
"--{0}-ibverbs".format("with" if "+verbs" in spec else "without"),
524527
"--enable-wrapper-rpath={0}".format("no" if "~wrapperrpath" in spec else "yes"),
525528
"--with-yaksa={0}".format(spec["yaksa"].prefix if "^yaksa" in spec else "embedded"),
529+
*self.with_or_without("ze", variant="level_zero"),
526530
]
527531

532+
# https://github.com/pmodels/mpich/commit/bbfc4cab6ade0b75ef3803a83af1cad4a262a564
533+
if self.spec.satisfies("@:4.2 ~hwloc"):
534+
config_args += self.enable_or_disable("levelzero", variant="level_zero")
535+
528536
# see https://github.com/pmodels/mpich/issues/5530
529537
if spec.platform == "darwin":
530538
config_args.append("--enable-two-level-namespace")

0 commit comments

Comments
 (0)