nlcglib: add v1.1.0 (#44580)
This commit is contained in:
parent
7500a4853c
commit
99405e6a4d
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user