hypre: add cublas and rocblas variants (#44038)

* Add cublas and roblas variants to hypre.

* Fix mistakes.

* Remove newline.

* Address suggestions.
This commit is contained in:
Jon Rood 2024-05-08 12:04:11 -06:00 committed by GitHub
parent 2e40c88d50
commit 5d1038c512
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -83,6 +83,8 @@ class Hypre(AutotoolsPackage, CudaPackage, ROCmPackage):
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("rocblas", default=False, description="Enable rocBLAS")
variant("cublas", default=False, description="Enable cuBLAS")
# Patch to add gptune hookup codes
patch("ij_gptune.patch", when="+gptune@2.19.0")
@ -114,6 +116,8 @@ def patch(self): # fix sequential compilation in 'src/seq_mv'
depends_on("rocprim", when="+rocm")
depends_on("hipblas", when="+rocm +superlu-dist")
depends_on("umpire", when="+umpire")
depends_on("umpire+rocm", when="+umpire+rocm")
depends_on("umpire+cuda", when="+umpire+cuda")
depends_on("caliper", when="+caliper")
gpu_pkgs = ["magma", "umpire"]
@ -166,6 +170,9 @@ def patch(self): # fix sequential compilation in 'src/seq_mv'
# Option added in v2.29.0
conflicts("+magma", when="@:2.28")
conflicts("+cublas", when="~cuda", msg="cuBLAS requires CUDA to be enabled")
conflicts("+rocblas", when="~rocm", msg="rocBLAS requires ROCm to be enabled")
configure_directory = "src"
def url_for_version(self, version):
@ -257,6 +264,8 @@ def configure_args(self):
configure_args.append("--with-cuda-home={0}".format(spec["cuda"].prefix))
else:
configure_args.append("--enable-cub")
if spec.satisfies("+cublas"):
conigure_args.append("--enable-cublas")
else:
configure_args.extend(["--without-cuda", "--disable-curand", "--disable-cusparse"])
if spec.satisfies("@:2.20.99"):
@ -282,6 +291,8 @@ def configure_args(self):
rocm_arch_sorted = list(sorted(rocm_arch_vals, reverse=True))
rocm_arch = rocm_arch_sorted[0]
configure_args.append("--with-gpu-arch={0}".format(rocm_arch))
if spec.satisfies("+rocblas"):
configure_args.append("--enable-rocblas")
else:
configure_args.extend(["--without-hip", "--disable-rocrand", "--disable-rocsparse"])
@ -302,7 +313,7 @@ def configure_args(self):
configure_args.append("--with-magma")
if "+gpu-aware-mpi" in spec:
options.append("--enable-gpu-aware-mpi")
configure_args.append("--enable-gpu-aware-mpi")
configure_args.extend(self.enable_or_disable("fortran"))