diff options
author | Rocco Meli <r.meli@bluemail.ch> | 2024-03-22 08:42:24 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-22 08:42:24 +0100 |
commit | 69c684fef9bacdc16549cf2c92909b7a747cc24e (patch) | |
tree | 64ba12b909431e90c6455337701a512d15aa80be | |
parent | 2314aeb88420768de0ef16ce4928590560e1204a (diff) | |
download | spack-69c684fef9bacdc16549cf2c92909b7a747cc24e.tar.gz spack-69c684fef9bacdc16549cf2c92909b7a747cc24e.tar.bz2 spack-69c684fef9bacdc16549cf2c92909b7a747cc24e.tar.xz spack-69c684fef9bacdc16549cf2c92909b7a747cc24e.zip |
ELPA: enable GPU streams and update deprecated variables (#43145)
* elpa streams
* [@spackbot] updating style on behalf of RMeli
* Apply suggestions from @albestro
* Update var/spack/repos/builtin/packages/elpa/package.py
Co-authored-by: Mikael Simberg <mikael.simberg@iki.fi>
---------
Co-authored-by: RMeli <RMeli@users.noreply.github.com>
Co-authored-by: Mikael Simberg <mikael.simberg@iki.fi>
-rw-r--r-- | var/spack/repos/builtin/packages/elpa/package.py | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/var/spack/repos/builtin/packages/elpa/package.py b/var/spack/repos/builtin/packages/elpa/package.py index 6965fe1117..65f021b5b6 100644 --- a/var/spack/repos/builtin/packages/elpa/package.py +++ b/var/spack/repos/builtin/packages/elpa/package.py @@ -48,6 +48,7 @@ class Elpa(AutotoolsPackage, CudaPackage, ROCmPackage): variant("openmp", default=True, description="Activates OpenMP support") variant("mpi", default=True, description="Activates MPI support") + variant("gpu_streams", default=True, description="Activates GPU streams support") patch("fujitsu.patch", when="%fj") @@ -76,6 +77,12 @@ class Elpa(AutotoolsPackage, CudaPackage, ROCmPackage): ) conflicts("+mpi", when="+rocm", msg="ROCm support and MPI are not yet compatible") + conflicts( + "+gpu_streams", + when="+openmp", + msg="GPU streams currently not supported in combination with OpenMP", + ) + def url_for_version(self, version): return "https://elpa.mpcdf.mpg.de/software/tarball-archive/Releases/{0}/elpa-{0}.tar.gz".format( str(version) @@ -115,6 +122,9 @@ class Elpa(AutotoolsPackage, CudaPackage, ROCmPackage): options += self.with_or_without("mpi") + # New options use the "-kernels" suffix + kernels = "-kernels" if spec.satisfies("@2023.11:") else "" + # TODO: --disable-sse-assembly, --enable-sparc64, --enable-neon-arch64 # Don't include vsx; as of 2022.05 it fails (reported upstream). # Altivec SSE intrinsics are used anyway. @@ -122,7 +132,7 @@ class Elpa(AutotoolsPackage, CudaPackage, ROCmPackage): for feature in simd_features: msg = "--enable-{0}" if feature in spec.target else "--disable-{0}" - options.append(msg.format(feature)) + options.append(msg.format(feature + kernels)) if spec.target.family != "x86_64": options.append("--disable-sse-assembly") @@ -133,7 +143,7 @@ class Elpa(AutotoolsPackage, CudaPackage, ROCmPackage): # If no features are found, enable the generic ones if not any(f in spec.target for f in simd_features): - options.append("--enable-generic") + options.append("--enable-generic" + kernels) if self.compiler.name == "gcc": options.extend(["CFLAGS=-O3", "FCFLAGS=-O3 -ffree-line-length-none"]) @@ -150,10 +160,15 @@ class Elpa(AutotoolsPackage, CudaPackage, ROCmPackage): cuda_flag = "nvidia-gpu" if "+cuda" in spec: prefix = spec["cuda"].prefix - options.append("--enable-{0}".format(cuda_flag)) + # Can't yet be changed to the new option --enable-nvidia-gpu-kernels + # https://github.com/marekandreas/elpa/issues/55 + options.append(f"--enable-{cuda_flag}") options.append("--with-cuda-path={0}".format(prefix)) options.append("--with-cuda-sdk-path={0}".format(prefix)) + if spec.satisfies("+gpu_streams"): + options.append("--enable-gpu-streams=nvidia") + cuda_arch = spec.variants["cuda_arch"].value[0] if cuda_arch != "none": @@ -161,13 +176,19 @@ class Elpa(AutotoolsPackage, CudaPackage, ROCmPackage): "--with-{0}-compute-capability=sm_{1}".format(cuda_flag.upper(), cuda_arch) ) else: - options.append("--disable-{0}".format(cuda_flag)) + options.append(f"--disable-{cuda_flag}" + kernels) if "+rocm" in spec: + # Can't yet be changed to the new option --enable-amd-gpu-kernels + # https://github.com/marekandreas/elpa/issues/55 options.append("--enable-amd-gpu") options.append("CXX={0}".format(self.spec["hip"].hipcc)) + + if spec.satisfies("+gpu_streams"): + options.append("--enable-gpu-streams=amd") + elif "@2021.05.001:" in self.spec: - options.append("--disable-amd-gpu") + options.append("--disable-amd-gpu" + kernels) options += self.enable_or_disable("openmp") |