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")
|
license("BSD-3-Clause")
|
||||||
|
|
||||||
version("develop", branch="develop")
|
version("develop", branch="develop")
|
||||||
version("master", branch="master")
|
|
||||||
|
|
||||||
|
version("1.1.0", sha256="9e7c2eea84a5ce191bd9af08f6c890717f7b6e88be7bd15cfe774eb0e0dabd8a")
|
||||||
version("1.0b", sha256="086c46f06a117f267cbdf1df4ad42a8512689a9610885763f463469fb15e82dc")
|
version("1.0b", sha256="086c46f06a117f267cbdf1df4ad42a8512689a9610885763f463469fb15e82dc")
|
||||||
version("0.9", sha256="8d5bc6b85ee714fb3d6480f767e7f43e5e7d569116cf60e48f533a7f50a37a08")
|
version("0.9", sha256="8d5bc6b85ee714fb3d6480f767e7f43e5e7d569116cf60e48f533a7f50a37a08")
|
||||||
|
|
||||||
@ -32,13 +32,26 @@ class Nlcglib(CMakePackage, CudaPackage, ROCmPackage):
|
|||||||
values=("Debug", "Release", "RelWithDebInfo"),
|
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("cmake@3.21:", type="build")
|
||||||
depends_on("mpi")
|
depends_on("mpi")
|
||||||
depends_on("lapack")
|
depends_on("lapack")
|
||||||
|
|
||||||
depends_on("kokkos~cuda~rocm", when="~cuda~rocm")
|
depends_on("kokkos~cuda~rocm", when="~cuda~rocm")
|
||||||
depends_on("kokkos+openmp", when="+openmp")
|
depends_on("kokkos+openmp", when="+openmp")
|
||||||
|
|
||||||
depends_on("googletest", type="build", when="+tests")
|
depends_on("googletest", type="build", when="+tests")
|
||||||
depends_on("nlohmann-json")
|
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"):
|
with when("@:0.9"):
|
||||||
conflicts("+rocm")
|
conflicts("+rocm")
|
||||||
@ -51,18 +64,18 @@ class Nlcglib(CMakePackage, CudaPackage, ROCmPackage):
|
|||||||
depends_on("rocblas")
|
depends_on("rocblas")
|
||||||
depends_on("rocsolver")
|
depends_on("rocsolver")
|
||||||
|
|
||||||
for arch in CudaPackage.cuda_arch_values:
|
with when("+cuda"):
|
||||||
depends_on(
|
depends_on("kokkos+cuda_lambda+wrapper", when="%gcc")
|
||||||
f"kokkos+cuda+cuda_lambda+wrapper cuda_arch={arch}",
|
depends_on("kokkos+cuda")
|
||||||
when=f"%gcc +cuda cuda_arch={arch}",
|
for arch in CudaPackage.cuda_arch_values:
|
||||||
)
|
depends_on(f"kokkos cuda_arch={arch}", when=f"cuda_arch={arch}")
|
||||||
depends_on(f"kokkos+cuda cuda_arch={arch}", when=f"+cuda cuda_arch={arch}")
|
|
||||||
|
|
||||||
def cmake_args(self):
|
def cmake_args(self):
|
||||||
options = [
|
options = [
|
||||||
self.define_from_variant("USE_OPENMP", "openmp"),
|
self.define_from_variant("USE_OPENMP", "openmp"),
|
||||||
self.define_from_variant("BUILD_TESTS", "tests"),
|
self.define_from_variant("BUILD_TESTS", "tests"),
|
||||||
self.define_from_variant("USE_ROCM", "rocm"),
|
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_MAGMA", "magma"),
|
||||||
self.define_from_variant("USE_CUDA", "cuda"),
|
self.define_from_variant("USE_CUDA", "cuda"),
|
||||||
]
|
]
|
||||||
@ -71,6 +84,29 @@ def cmake_args(self):
|
|||||||
options += [self.define("LAPACK_VENDOR", "MKL")]
|
options += [self.define("LAPACK_VENDOR", "MKL")]
|
||||||
elif self.spec["blas"].name in ["intel-oneapi-mkl"]:
|
elif self.spec["blas"].name in ["intel-oneapi-mkl"]:
|
||||||
options += [self.define("LAPACK_VENDOR", "MKLONEAPI")]
|
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"]:
|
elif self.spec["blas"].name in ["openblas"]:
|
||||||
options += [self.define("LAPACK_VENDOR", "OpenBLAS")]
|
options += [self.define("LAPACK_VENDOR", "OpenBLAS")]
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user