hypre: add support for magma (#40121)
This commit is contained in:
parent
9fda22d942
commit
aec88ef3e6
1 changed files with 26 additions and 11 deletions
|
@ -76,6 +76,7 @@ class Hypre(AutotoolsPackage, CudaPackage, ROCmPackage):
|
||||||
variant("gptune", default=False, description="Add the GPTune hookup code")
|
variant("gptune", default=False, description="Add the GPTune hookup code")
|
||||||
variant("umpire", default=False, description="Enable Umpire support")
|
variant("umpire", default=False, description="Enable Umpire support")
|
||||||
variant("sycl", default=False, description="Enable SYCL support")
|
variant("sycl", default=False, description="Enable SYCL support")
|
||||||
|
variant("magma", default=False, description="Enable MAGMA interface")
|
||||||
variant("caliper", default=False, description="Enable Caliper support")
|
variant("caliper", default=False, description="Enable Caliper support")
|
||||||
|
|
||||||
# Patch to add gptune hookup codes
|
# Patch to add gptune hookup codes
|
||||||
|
@ -100,6 +101,7 @@ def patch(self): # fix sequential compilation in 'src/seq_mv'
|
||||||
depends_on("mpi", when="+mpi")
|
depends_on("mpi", when="+mpi")
|
||||||
depends_on("blas")
|
depends_on("blas")
|
||||||
depends_on("lapack")
|
depends_on("lapack")
|
||||||
|
depends_on("magma", when="+magma")
|
||||||
depends_on("superlu-dist", when="+superlu-dist+mpi")
|
depends_on("superlu-dist", when="+superlu-dist+mpi")
|
||||||
depends_on("rocsparse", when="+rocm")
|
depends_on("rocsparse", when="+rocm")
|
||||||
depends_on("rocthrust", when="+rocm")
|
depends_on("rocthrust", when="+rocm")
|
||||||
|
@ -108,18 +110,23 @@ def patch(self): # fix sequential compilation in 'src/seq_mv'
|
||||||
depends_on("umpire", when="+umpire")
|
depends_on("umpire", when="+umpire")
|
||||||
depends_on("caliper", when="+caliper")
|
depends_on("caliper", when="+caliper")
|
||||||
|
|
||||||
|
gpu_pkgs = ["magma", "umpire"]
|
||||||
for sm_ in CudaPackage.cuda_arch_values:
|
for sm_ in CudaPackage.cuda_arch_values:
|
||||||
depends_on(
|
for pkg in gpu_pkgs:
|
||||||
"umpire+cuda cuda_arch={0}".format(sm_), when="+umpire+cuda cuda_arch={0}".format(sm_)
|
depends_on(
|
||||||
)
|
"{0}+cuda cuda_arch={1}".format(pkg, sm_),
|
||||||
for gfx in ROCmPackage.amdgpu_targets:
|
when="+{0}+cuda cuda_arch={1}".format(pkg, sm_),
|
||||||
depends_on(
|
)
|
||||||
"umpire+rocm amdgpu_target={0}".format(gfx),
|
|
||||||
when="+umpire+rocm amdgpu_target={0}".format(gfx),
|
|
||||||
)
|
|
||||||
|
|
||||||
# Uses deprecated cuSPARSE functions/types (e.g. csrsv2Info_t).
|
for gfx in ROCmPackage.amdgpu_targets:
|
||||||
depends_on("cuda@:11", when="+cuda")
|
for pkg in gpu_pkgs:
|
||||||
|
depends_on(
|
||||||
|
"{0}+rocm amdgpu_target={1}".format(pkg, gfx),
|
||||||
|
when="+{0}+rocm amdgpu_target={1}".format(pkg, gfx),
|
||||||
|
)
|
||||||
|
|
||||||
|
# hypre@:2.28.0 uses deprecated cuSPARSE functions/types (e.g. csrsv2Info_t).
|
||||||
|
depends_on("cuda@:11", when="@:2.28.0+cuda")
|
||||||
|
|
||||||
# Conflicts
|
# Conflicts
|
||||||
conflicts("+cuda", when="+int64")
|
conflicts("+cuda", when="+int64")
|
||||||
|
@ -150,6 +157,9 @@ def patch(self): # fix sequential compilation in 'src/seq_mv'
|
||||||
# Option added in v2.24.0
|
# Option added in v2.24.0
|
||||||
conflicts("+sycl", when="@:2.23")
|
conflicts("+sycl", when="@:2.23")
|
||||||
|
|
||||||
|
# Option added in v2.29.0
|
||||||
|
conflicts("+magma", when="@:2.28")
|
||||||
|
|
||||||
configure_directory = "src"
|
configure_directory = "src"
|
||||||
|
|
||||||
def url_for_version(self, version):
|
def url_for_version(self, version):
|
||||||
|
@ -280,6 +290,11 @@ def configure_args(self):
|
||||||
if "+unified-memory" in spec:
|
if "+unified-memory" in spec:
|
||||||
configure_args.append("--enable-unified-memory")
|
configure_args.append("--enable-unified-memory")
|
||||||
|
|
||||||
|
if "+magma" in spec:
|
||||||
|
configure_args.append("--with-magma-include=%s" % spec["magma"].prefix.include)
|
||||||
|
configure_args.append("--with-magma-lib=%s" % spec["magma"].libs)
|
||||||
|
configure_args.append("--with-magma")
|
||||||
|
|
||||||
configure_args.extend(self.enable_or_disable("fortran"))
|
configure_args.extend(self.enable_or_disable("fortran"))
|
||||||
|
|
||||||
return configure_args
|
return configure_args
|
||||||
|
@ -329,7 +344,7 @@ def install(self, spec, prefix):
|
||||||
|
|
||||||
@run_after("install")
|
@run_after("install")
|
||||||
def cache_test_sources(self):
|
def cache_test_sources(self):
|
||||||
self.cache_extra_test_sources(self.extra_install_tests)
|
cache_extra_test_sources(self, self.extra_install_tests)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def _cached_tests_work_dir(self):
|
def _cached_tests_work_dir(self):
|
||||||
|
|
Loading…
Reference in a new issue