diff options
author | Simon Pintarelli <1237199+simonpintarelli@users.noreply.github.com> | 2024-06-26 09:42:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-26 09:42:26 +0200 |
commit | 99405e6a4da74ff118c0306d4cc0fa08f8873a14 (patch) | |
tree | 7da5c7c0ae0e781da5e1372becf0f88192c5b686 | |
parent | 7500a4853c2784ff1df1c4fe473bbcf4f48d7d14 (diff) | |
download | spack-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.py | 50 |
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: |