summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Pintarelli <1237199+simonpintarelli@users.noreply.github.com>2024-06-26 09:42:26 +0200
committerGitHub <noreply@github.com>2024-06-26 09:42:26 +0200
commit99405e6a4da74ff118c0306d4cc0fa08f8873a14 (patch)
tree7da5c7c0ae0e781da5e1372becf0f88192c5b686
parent7500a4853c2784ff1df1c4fe473bbcf4f48d7d14 (diff)
downloadspack-99405e6a4da74ff118c0306d4cc0fa08f8873a14.tar.gz
spack-99405e6a4da74ff118c0306d4cc0fa08f8873a14.tar.bz2
spack-99405e6a4da74ff118c0306d4cc0fa08f8873a14.tar.xz
spack-99405e6a4da74ff118c0306d4cc0fa08f8873a14.zip
nlcglib: add v1.1.0 (#44580)
-rw-r--r--var/spack/repos/builtin/packages/nlcglib/package.py50
1 files changed, 43 insertions, 7 deletions
diff --git a/var/spack/repos/builtin/packages/nlcglib/package.py b/var/spack/repos/builtin/packages/nlcglib/package.py
index 694fbbfc5c..df36b4ba2f 100644
--- a/var/spack/repos/builtin/packages/nlcglib/package.py
+++ b/var/spack/repos/builtin/packages/nlcglib/package.py
@@ -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 @@ class Nlcglib(CMakePackage, CudaPackage, ROCmPackage):
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: