New package: Parthenon (#43426)
This commit is contained in:
		
							
								
								
									
										75
									
								
								var/spack/repos/builtin/packages/parthenon/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								var/spack/repos/builtin/packages/parthenon/package.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | |||||||
|  | # Copyright 2013-2024 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 Parthenon(CMakePackage): | ||||||
|  |     """A performance portable block-structured adaptive mesh refinement framework.""" | ||||||
|  | 
 | ||||||
|  |     homepage = "https://github.com/parthenon-hpc-lab/parthenon" | ||||||
|  |     git = "https://github.com/parthenon-hpc-lab/parthenon.git" | ||||||
|  |     url = "https://github.com/parthenon-hpc-lab/parthenon/archive/v0.8.0.tar.gz" | ||||||
|  |     maintainers("pbrady", "pgrete") | ||||||
|  | 
 | ||||||
|  |     version("develop", branch="develop") | ||||||
|  |     version("24.03", sha256="ec9109c6bf442237641e627f301567527eb5e756b6959b6747d35315d041727c") | ||||||
|  |     version("23.11", sha256="76f79fb7d6556d94052829a8ac71f53cbda76f37fabd9233c5c0cd47ef561aee") | ||||||
|  |     version("0.8.0", sha256="9ed7c9ebdc84927a43b86c1e061f925b57cef9b567c7275f22779ed4d98e858d") | ||||||
|  | 
 | ||||||
|  |     # ------------------------------------------------------------# | ||||||
|  |     # Variants | ||||||
|  |     # ------------------------------------------------------------# | ||||||
|  | 
 | ||||||
|  |     variant("single", default=False, description="Run in single precision") | ||||||
|  |     variant("mpi", default=True, description="Enable mpi") | ||||||
|  |     variant( | ||||||
|  |         "host_comm_buffers", default=False, description="Allocate communication buffers on host" | ||||||
|  |     ) | ||||||
|  |     variant("hdf5", default=True, description="Enable hdf5") | ||||||
|  |     with when("+hdf5"): | ||||||
|  |         variant( | ||||||
|  |             "compression", | ||||||
|  |             default=True, | ||||||
|  |             description="Enable compression in hdf5 output/restart files", | ||||||
|  |         ) | ||||||
|  |     variant("sparse", default=True, description="Sparse capability") | ||||||
|  |     variant("ascent", default=False, description="Enable Ascent for in-situ vis and analysis") | ||||||
|  |     variant("examples", default=False, description="Build example drivers") | ||||||
|  |     variant("python", default=False, description="Enable python for testing") | ||||||
|  |     variant( | ||||||
|  |         "pressure", default=False, description="Registry pressure check for Kokkos CUDA kernels" | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |     # ------------------------------------------------------------# | ||||||
|  |     # Dependencies | ||||||
|  |     # ------------------------------------------------------------# | ||||||
|  | 
 | ||||||
|  |     depends_on("cmake@3.16:", type="build") | ||||||
|  | 
 | ||||||
|  |     depends_on("mpi", when="+mpi") | ||||||
|  |     depends_on("hdf5", when="+hdf5") | ||||||
|  |     depends_on("hdf5 +mpi", when="+mpi +hdf5") | ||||||
|  |     depends_on("ascent", when="+ascent") | ||||||
|  |     depends_on("python@3.5:", when="+python") | ||||||
|  |     depends_on("kokkos@4:") | ||||||
|  | 
 | ||||||
|  |     def cmake_args(self): | ||||||
|  |         spec = self.spec | ||||||
|  |         return [ | ||||||
|  |             self.define("PARTHENON_IMPORT_KOKKOS", True), | ||||||
|  |             self.define_from_variant("PARTHENON_SINGLE_PRECISION", "single"), | ||||||
|  |             self.define_from_variant("PARTHENON_ENABLE_HOST_COMM_BUFFERS", "host_comm_buffers"), | ||||||
|  |             self.define_from_variant("CHECK_REGISTRY_PRESSURE", "pressure"), | ||||||
|  |             self.define_from_variant("PARTHENON_ENABLE_ASCENT", "ascent"), | ||||||
|  |             self.define("PARTHENON_DISABLE_MPI", not spec.variants["mpi"].value), | ||||||
|  |             self.define("PARTHENON_DISABLE_HDF5", not spec.variants["hdf5"].value), | ||||||
|  |             self.define( | ||||||
|  |                 "PARTHENON_DISABLE_HDF5_COMPRESSION", not spec.variants["compression"].value | ||||||
|  |             ), | ||||||
|  |             self.define("PARTHENON_DISABLE_SPARSE", not spec.variants["sparse"].value), | ||||||
|  |             self.define("PARTHENON_DISABLE_EXAMPLES", not spec.variants["examples"].value), | ||||||
|  |             self.define("BUILD_TESTING", self.run_tests), | ||||||
|  |         ] | ||||||
		Reference in New Issue
	
	Block a user
	 Peter Brady
					Peter Brady