nlcglib: add v1.1.0 (#44580)

This commit is contained in:
Simon Pintarelli 2024-06-26 09:42:26 +02:00 committed by GitHub
parent 7500a4853c
commit 99405e6a4d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -18,8 +18,8 @@ class Nlcglib(CMakePackage, CudaPackage, ROCmPackage):
license("BSD-3-Clause")
version("develop", branch="develop")
version("master", branch="master")
version("1.1.0", sha256="9e7c2eea84a5ce191bd9af08f6c890717f7b6e88be7bd15cfe774eb0e0dabd8a")
version("1.0b", sha256="086c46f06a117f267cbdf1df4ad42a8512689a9610885763f463469fb15e82dc")
version("0.9", sha256="8d5bc6b85ee714fb3d6480f767e7f43e5e7d569116cf60e48f533a7f50a37a08")
@ -32,13 +32,26 @@ class Nlcglib(CMakePackage, CudaPackage, ROCmPackage):
values=("Debug", "Release", "RelWithDebInfo"),
)
with when("@1.1: +cuda"):
variant(
"gpu_direct",
default=False,
description="Enable GPU direct. Required to support distributed wave-functions.",
)
depends_on("cmake@3.21:", type="build")
depends_on("mpi")
depends_on("lapack")
depends_on("kokkos~cuda~rocm", when="~cuda~rocm")
depends_on("kokkos+openmp", when="+openmp")
depends_on("googletest", type="build", when="+tests")
depends_on("nlohmann-json")
depends_on("kokkos@4:", when="@1.1:")
# MKLConfig.cmake introduced in 2021.3
conflicts("intel-oneapi-mkl@:2021.2", when="^intel-oneapi-mkl")
with when("@:0.9"):
conflicts("+rocm")
@ -51,18 +64,18 @@ class Nlcglib(CMakePackage, CudaPackage, ROCmPackage):
depends_on("rocblas")
depends_on("rocsolver")
for arch in CudaPackage.cuda_arch_values:
depends_on(
f"kokkos+cuda+cuda_lambda+wrapper cuda_arch={arch}",
when=f"%gcc +cuda cuda_arch={arch}",
)
depends_on(f"kokkos+cuda cuda_arch={arch}", when=f"+cuda cuda_arch={arch}")
with when("+cuda"):
depends_on("kokkos+cuda_lambda+wrapper", when="%gcc")
depends_on("kokkos+cuda")
for arch in CudaPackage.cuda_arch_values:
depends_on(f"kokkos cuda_arch={arch}", when=f"cuda_arch={arch}")
def cmake_args(self):
options = [
self.define_from_variant("USE_OPENMP", "openmp"),
self.define_from_variant("BUILD_TESTS", "tests"),
self.define_from_variant("USE_ROCM", "rocm"),
self.define_from_variant("USE_GPU_DIRECT", "gpu_direct"),
self.define_from_variant("USE_MAGMA", "magma"),
self.define_from_variant("USE_CUDA", "cuda"),
]
@ -71,6 +84,29 @@ def cmake_args(self):
options += [self.define("LAPACK_VENDOR", "MKL")]
elif self.spec["blas"].name in ["intel-oneapi-mkl"]:
options += [self.define("LAPACK_VENDOR", "MKLONEAPI")]
mkl_mapper = {
"threading": {"none": "sequential", "openmp": "gnu_thread", "tbb": "tbb_thread"},
"mpi": {"intel-mpi": "intelmpi", "mpich": "mpich", "openmpi": "openmpi"},
}
mkl_threads = mkl_mapper["threading"][
self.spec["intel-oneapi-mkl"].variants["threads"].value
]
mpi_provider = self.spec["mpi"].name
if mpi_provider in ["mpich", "cray-mpich", "mvapich", "mvapich2"]:
mkl_mpi = mkl_mapper["mpi"]["mpich"]
else:
mkl_mpi = mkl_mapper["mpi"][mpi_provider]
options.extend(
[
self.define("MKL_INTERFACE", "lp64"),
self.define("MKL_THREADING", mkl_threads),
self.define("MKL_MPI", mkl_mpi),
]
)
elif self.spec["blas"].name in ["openblas"]:
options += [self.define("LAPACK_VENDOR", "OpenBLAS")]
else: