add DLA-Future package (#38224)
This commit is contained in:
		
							
								
								
									
										135
									
								
								var/spack/repos/builtin/packages/dla-future/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										135
									
								
								var/spack/repos/builtin/packages/dla-future/package.py
									
									
									
									
									
										Normal file
									
								
							| @@ -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 | ||||||
		Reference in New Issue
	
	Block a user
	 Raffaele Solcà
					Raffaele Solcà