summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorRaffaele SolcĂ  <rasolca@cscs.ch>2023-06-13 22:03:13 +0000
committerGitHub <noreply@github.com>2023-06-13 18:03:13 -0400
commit8e4e6ad52939908b14fba6e51176133eb7964b3d (patch)
treeae25bb421d758774d51ebfac4ed18a1b03e2cb27 /var
parent3586a2dbe3d805f3170e47e21ad675760219a13c (diff)
downloadspack-8e4e6ad52939908b14fba6e51176133eb7964b3d.tar.gz
spack-8e4e6ad52939908b14fba6e51176133eb7964b3d.tar.bz2
spack-8e4e6ad52939908b14fba6e51176133eb7964b3d.tar.xz
spack-8e4e6ad52939908b14fba6e51176133eb7964b3d.zip
add DLA-Future package (#38224)
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/dla-future/package.py135
1 files changed, 135 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/dla-future/package.py b/var/spack/repos/builtin/packages/dla-future/package.py
new file mode 100644
index 0000000000..c08736e85f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/dla-future/package.py
@@ -0,0 +1,135 @@
+# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack.package import *
+
+
+class DlaFuture(CMakePackage, CudaPackage, ROCmPackage):
+ """DLA-Future library: Distributed Linear Algebra with Future"""
+
+ homepage = "https://github.com/eth-cscs/DLA-Future"
+ url = "https://github.com/eth-cscs/DLA-Future/archive/v0.0.0.tar.gz"
+ git = "https://github.com/eth-cscs/DLA-Future.git"
+ maintainers = ["rasolca", "albestro", "msimberg", "aurianer"]
+
+ version("0.1.0", sha256="f7ffcde22edabb3dc24a624e2888f98829ee526da384cd752b2b271c731ca9b1")
+ version("master", branch="master")
+
+ variant("shared", default=True, description="Build shared libraries.")
+
+ variant("doc", default=False, description="Build documentation.")
+
+ variant("miniapps", default=False, description="Build miniapps.")
+
+ 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("umpire~examples")
+ depends_on("umpire+cuda~shared", when="+cuda")
+ depends_on("umpire+rocm~shared", when="+rocm")
+ depends_on("umpire@4.1.0:")
+
+ depends_on("pika@0.15.1:")
+ depends_on("pika-algorithms@0.1:")
+ depends_on("pika +mpi")
+ depends_on("pika +cuda", when="+cuda")
+ depends_on("pika +rocm", when="+rocm")
+
+ conflicts("^pika cxxstd=20", when="+cuda")
+
+ depends_on("whip +cuda", when="+cuda")
+ depends_on("whip +rocm", when="+rocm")
+
+ depends_on("rocblas", when="+rocm")
+ depends_on("rocprim", when="+rocm")
+ depends_on("rocsolver", when="+rocm")
+ depends_on("rocthrust", when="+rocm")
+
+ conflicts("+cuda", when="+rocm")
+
+ with when("+rocm"):
+ for val in ROCmPackage.amdgpu_targets:
+ depends_on("pika amdgpu_target={0}".format(val), when="amdgpu_target={0}".format(val))
+ depends_on(
+ "rocsolver amdgpu_target={0}".format(val), when="amdgpu_target={0}".format(val)
+ )
+ depends_on(
+ "rocblas amdgpu_target={0}".format(val), when="amdgpu_target={0}".format(val)
+ )
+ depends_on(
+ "rocprim amdgpu_target={0}".format(val), when="amdgpu_target={0}".format(val)
+ )
+ depends_on(
+ "rocthrust amdgpu_target={0}".format(val), when="amdgpu_target={0}".format(val)
+ )
+ depends_on("whip amdgpu_target={0}".format(val), when="amdgpu_target={0}".format(val))
+ depends_on(
+ "umpire amdgpu_target={0}".format(val), when="amdgpu_target={0}".format(val)
+ )
+
+ with when("+cuda"):
+ for val in CudaPackage.cuda_arch_values:
+ depends_on("pika cuda_arch={0}".format(val), when="cuda_arch={0}".format(val))
+ depends_on("umpire cuda_arch={0}".format(val), when="cuda_arch={0}".format(val))
+
+ def cmake_args(self):
+ spec = self.spec
+ args = []
+
+ args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared"))
+
+ # BLAS/LAPACK
+ if "^mkl" in spec:
+ vmap = {
+ "none": "seq",
+ "openmp": "omp",
+ "tbb": "tbb",
+ } # Map MKL variants to LAPACK target name
+ # 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]
+ ),
+ ),
+ ]
+ else:
+ args.append(self.define("DLAF_WITH_MKL", False))
+ args.append(
+ self.define(
+ "LAPACK_LIBRARY",
+ " ".join([spec[dep].libs.ld_flags for dep in ["blas", "lapack"]]),
+ )
+ )
+
+ # CUDA/HIP
+ args.append(self.define_from_variant("DLAF_WITH_CUDA", "cuda"))
+ args.append(self.define_from_variant("DLAF_WITH_HIP", "rocm"))
+ if "+rocm" in spec:
+ archs = self.spec.variants["amdgpu_target"].value
+ if "none" not in archs:
+ arch_str = ";".join(archs)
+ args.append(self.define("CMAKE_HIP_ARCHITECTURES", arch_str))
+ if "+cuda" in spec:
+ archs = self.spec.variants["cuda_arch"].value
+ if "none" not in archs:
+ arch_str = ";".join(archs)
+ args.append(self.define("CMAKE_CUDA_ARCHITECTURES", arch_str))
+
+ # DOC
+ args.append(self.define_from_variant("DLAF_BUILD_DOC", "doc"))
+
+ # TEST
+ args.append(self.define("DLAF_BUILD_TESTING", self.run_tests))
+
+ # MINIAPPS
+ args.append(self.define_from_variant("DLAF_BUILD_MINIAPPS", "miniapps"))
+
+ return args