From 34e4c62e8ce019a84424f93102068dcea0b21dfa Mon Sep 17 00:00:00 2001 From: Raffaele SolcĂ  Date: Thu, 31 Aug 2023 10:39:22 +0200 Subject: dla-future: add v0.2.0 (#39705) --- .../repos/builtin/packages/dla-future/package.py | 54 +++++++++++++++++++--- 1 file changed, 47 insertions(+), 7 deletions(-) (limited to 'var') diff --git a/var/spack/repos/builtin/packages/dla-future/package.py b/var/spack/repos/builtin/packages/dla-future/package.py index 57d0befe32..3aeda90103 100644 --- a/var/spack/repos/builtin/packages/dla-future/package.py +++ b/var/spack/repos/builtin/packages/dla-future/package.py @@ -14,20 +14,36 @@ class DlaFuture(CMakePackage, CudaPackage, ROCmPackage): git = "https://github.com/eth-cscs/DLA-Future.git" maintainers = ["rasolca", "albestro", "msimberg", "aurianer"] + version("0.2.0", sha256="da73cbd1b88287c86d84b1045a05406b742be924e65c52588bbff200abd81a10") version("0.1.0", sha256="f7ffcde22edabb3dc24a624e2888f98829ee526da384cd752b2b271c731ca9b1") version("master", branch="master") variant("shared", default=True, description="Build shared libraries.") + variant( + "hdf5", + default=False, + when="@0.2.0:", + description="HDF5 support for dealing with matrices on disk.", + ) + variant("doc", default=False, description="Build documentation.") variant("miniapps", default=False, description="Build miniapps.") + variant( + "scalapack", + default=False, + when="@0.2.0:", + description="Build C API compatible with ScaLAPACK", + ) + depends_on("cmake@3.22:", type="build") depends_on("doxygen", type="build", when="+doc") depends_on("mpi") depends_on("blaspp@2022.05.00:") depends_on("lapackpp@2022.05.00:") + depends_on("scalapack", when="+scalapack") depends_on("umpire~examples") depends_on("umpire~cuda", when="~cuda") @@ -36,7 +52,8 @@ class DlaFuture(CMakePackage, CudaPackage, ROCmPackage): depends_on("umpire+rocm~shared", when="+rocm") depends_on("umpire@4.1.0:") - depends_on("pika@0.15.1:") + depends_on("pika@0.15.1:", when="@0.1") + depends_on("pika@0.16:", when="@0.2.0:") depends_on("pika-algorithms@0.1:") depends_on("pika +mpi") depends_on("pika +cuda", when="+cuda") @@ -52,6 +69,8 @@ class DlaFuture(CMakePackage, CudaPackage, ROCmPackage): depends_on("rocsolver", when="+rocm") depends_on("rocthrust", when="+rocm") + depends_on("hdf5 +cxx+mpi+threadsafe+shared", when="+hdf5") + conflicts("+cuda", when="+rocm") with when("+rocm"): @@ -92,16 +111,29 @@ class DlaFuture(CMakePackage, CudaPackage, ROCmPackage): "openmp": "omp", "tbb": "tbb", } # Map MKL variants to LAPACK target name + mkl_threads = vmap[spec["intel-mkl"].variants["threads"].value] # TODO: Generalise for intel-oneapi-mkl args += [ self.define("DLAF_WITH_MKL", True), - self.define( - "MKL_LAPACK_TARGET", - "mkl::mkl_intel_32bit_{0}_dyn".format( - vmap[spec["intel-mkl"].variants["threads"].value] - ), - ), + self.define("MKL_LAPACK_TARGET", f"mkl::mkl_intel_32bit_{mkl_threads}_dyn"), ] + if "+scalapack" in spec: + if ( + "^mpich" in spec + or "^cray-mpich" in spec + or "^intel-mpi" in spec + or "^mvapich" in spec + or "^mvapich2" in spec + ): + mkl_mpi = "mpich" + elif "^openmpi" in spec: + mkl_mpi = "ompi" + args.append( + self.define( + "MKL_SCALAPACK_TARGET", + f"mkl::scalapack_{mkl_mpi}_intel_32bit_{mkl_threads}_dyn", + ) + ) else: args.append(self.define("DLAF_WITH_MKL", False)) args.append( @@ -110,6 +142,11 @@ class DlaFuture(CMakePackage, CudaPackage, ROCmPackage): " ".join([spec[dep].libs.ld_flags for dep in ["blas", "lapack"]]), ) ) + if "+scalapack" in spec: + args.append(self.define("SCALAPACK_LIBRARY", spec["scalapack"].libs.ld_flags)) + + if "+scalapack" in spec: + args.append(self.define_from_variant("DLAF_WITH_SCALAPACK", "scalapack")) # CUDA/HIP args.append(self.define_from_variant("DLAF_WITH_CUDA", "cuda")) @@ -125,6 +162,9 @@ class DlaFuture(CMakePackage, CudaPackage, ROCmPackage): arch_str = ";".join(archs) args.append(self.define("CMAKE_CUDA_ARCHITECTURES", arch_str)) + # HDF5 support + args.append(self.define_from_variant("DLAF_WITH_HDF5", "hdf5")) + # DOC args.append(self.define_from_variant("DLAF_BUILD_DOC", "doc")) -- cgit v1.2.3-60-g2f50