summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorSarah Osborn <30503782+osborn9@users.noreply.github.com>2022-09-29 01:42:00 -0700
committerGitHub <noreply@github.com>2022-09-29 02:42:00 -0600
commit77afad229c5b8a3f3a6847a2b8ca06551e67cf53 (patch)
treeed0f221332ac87a2f947f08ecaa2f30f37de9822 /var
parent2214f3438068396dd2c2a19a7a3a6ed1591b3fa6 (diff)
downloadspack-77afad229c5b8a3f3a6847a2b8ca06551e67cf53.tar.gz
spack-77afad229c5b8a3f3a6847a2b8ca06551e67cf53.tar.bz2
spack-77afad229c5b8a3f3a6847a2b8ca06551e67cf53.tar.xz
spack-77afad229c5b8a3f3a6847a2b8ca06551e67cf53.zip
hypre: add Umpire variant (#32884)
* hypre: Add umpire variant * hypre: Fix to umpire / GPU target propagation
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/hypre/package.py28
1 files changed, 27 insertions, 1 deletions
diff --git a/var/spack/repos/builtin/packages/hypre/package.py b/var/spack/repos/builtin/packages/hypre/package.py
index fff7e2ff4f..36d4ec39df 100644
--- a/var/spack/repos/builtin/packages/hypre/package.py
+++ b/var/spack/repos/builtin/packages/hypre/package.py
@@ -72,6 +72,7 @@ class Hypre(AutotoolsPackage, CudaPackage, ROCmPackage):
variant("unified-memory", default=False, description="Use unified memory")
variant("fortran", default=True, description="Enables fortran bindings")
variant("gptune", default=False, description="Add the GPTune hookup code")
+ variant("umpire", default=False, description="Enable Umpire support")
# Patch to add gptune hookup codes
patch("ij_gptune.patch", when="+gptune@2.19.0")
@@ -93,17 +94,31 @@ class Hypre(AutotoolsPackage, CudaPackage, ROCmPackage):
depends_on("lapack")
depends_on("superlu-dist", when="+superlu-dist+mpi")
+ depends_on("umpire", when="+umpire")
+ for sm_ in CudaPackage.cuda_arch_values:
+ depends_on(
+ "umpire+cuda cuda_arch={0}".format(sm_), when="+umpire+cuda cuda_arch={0}".format(sm_)
+ )
+ for gfx in ROCmPackage.amdgpu_targets:
+ depends_on(
+ "umpire+rocm amdgpu_target={0}".format(gfx),
+ when="+umpire+rocm amdgpu_target={0}".format(gfx),
+ )
+
+ # Conflicts
conflicts("+cuda", when="+int64")
conflicts("+rocm", when="+int64")
conflicts("+rocm", when="@:2.20")
conflicts("+unified-memory", when="~cuda~rocm")
conflicts("+gptune", when="~mpi")
+ # Umpire device allocator exports device code, which requires static libs
+ conflicts("+umpire", when="+shared+cuda")
# Patch to build shared libraries on Darwin does not apply to
# versions before 2.13.0
conflicts("+shared@:2.12 platform=darwin")
- # Conflicts
+ # Version conflicts
# Option added in v2.13.0
conflicts("+superlu-dist", when="@:2.12")
@@ -113,6 +128,9 @@ class Hypre(AutotoolsPackage, CudaPackage, ROCmPackage):
# Option added in v2.16.0
conflicts("+mixedint", when="@:2.15")
+ # Option added in v2.21.0
+ conflicts("+umpire", when="@:2.20")
+
configure_directory = "src"
def url_for_version(self, version):
@@ -176,6 +194,14 @@ class Hypre(AutotoolsPackage, CudaPackage, ROCmPackage):
configure_args.append("--with-dsuperlu-lib=%s" % spec["superlu-dist"].libs)
configure_args.append("--with-dsuperlu")
+ if "+umpire" in spec:
+ configure_args.append("--with-umpire-include=%s" % spec["umpire"].prefix.include)
+ configure_args.append("--with-umpire-lib=%s" % spec["umpire"].libs)
+ if "~cuda~rocm" in spec:
+ configure_args.append("--with-umpire-host")
+ else:
+ configure_args.append("--with-umpire")
+
configure_args.extend(self.enable_or_disable("debug"))
if "+cuda" in spec: