diff options
author | Simon Pintarelli <1237199+simonpintarelli@users.noreply.github.com> | 2024-05-02 08:23:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-02 08:23:10 +0200 |
commit | 7f4f42894d024880f8010db71b0e189cc5ed4bb0 (patch) | |
tree | c6b1efd6a43f32507ecf8d668643502f9413cc4c | |
parent | 4e876b4014cccf477dce155159198a5dc9c0730b (diff) | |
download | spack-7f4f42894d024880f8010db71b0e189cc5ed4bb0.tar.gz spack-7f4f42894d024880f8010db71b0e189cc5ed4bb0.tar.bz2 spack-7f4f42894d024880f8010db71b0e189cc5ed4bb0.tar.xz spack-7f4f42894d024880f8010db71b0e189cc5ed4bb0.zip |
update sirius package.py (#43872)
-rw-r--r-- | var/spack/repos/builtin/packages/sirius/package.py | 72 |
1 files changed, 68 insertions, 4 deletions
diff --git a/var/spack/repos/builtin/packages/sirius/package.py b/var/spack/repos/builtin/packages/sirius/package.py index c57daf47a3..8259f358c3 100644 --- a/var/spack/repos/builtin/packages/sirius/package.py +++ b/var/spack/repos/builtin/packages/sirius/package.py @@ -108,6 +108,15 @@ class Sirius(CMakePackage, CudaPackage, ROCmPackage): ) variant("nvtx", default=False, description="Use NVTX profiler") + with when("@7.6:"): + variant( + "pugixml", + default=False, + description="Enable direct reading of UPF v2 pseudopotentials", + ) + conflicts("+tests~pugixml") + depends_on("pugixml", when="+pugixml") + depends_on("cmake@3.23:", type="build") depends_on("mpi") depends_on("gsl") @@ -162,18 +171,38 @@ class Sirius(CMakePackage, CudaPackage, ROCmPackage): depends_on("dla-future +cuda", when="+cuda") depends_on("dla-future +rocm", when="+rocm") + conflicts("^pika@:0.22.1", when="+cuda") + conflicts("^pika@:0.22.1", when="+rocm") + depends_on("rocblas", when="+rocm") depends_on("rocsolver", when="@7.5.0: +rocm") + # FindHIP cmake script only works for < 4.1, but HIP 4.1 is not provided by spack anymore + conflicts("+rocm", when="@:7.2.0") + conflicts("^libxc@5.0.0") # known to produce incorrect results conflicts("+single_precision", when="@:7.2.4") conflicts("+scalapack", when="^cray-libsci") # Propagate openmp to blas - depends_on("openblas threads=openmp", when="+openmp ^[virtuals=blas] openblas") + depends_on("openblas threads=openmp", when="+openmp ^[virtuals=blas,lapack] openblas") depends_on("amdblis threads=openmp", when="+openmp ^[virtuals=blas] amdblis") depends_on("blis threads=openmp", when="+openmp ^[virtuals=blas] blis") - depends_on("intel-mkl threads=openmp", when="+openmp ^[virtuals=blas] intel-mkl") + depends_on( + "intel-mkl threads=openmp", when="+openmp ^[virtuals=blas,lapack,fftw-api] intel-mkl" + ) + depends_on( + "intel-oneapi-mkl threads=openmp", + when="+openmp ^[virtuals=blas,lapack,fftw-api] intel-oneapi-mkl", + ) + depends_on( + "intel-oneapi-mkl+cluster", + when="+scalapack ^[virtuals=blas,lapack,fftw-api] intel-oneapi-mkl", + ) + + conflicts("intel-mkl", when="@develop") # TODO: Change to @7.5.3 + # MKLConfig.cmake introduced in 2021.3 + conflicts("intel-oneapi-mkl@:2021.2", when="^intel-oneapi-mkl") depends_on("wannier90", when="@7.5.0: +wannier90") depends_on("wannier90+shared", when="@7.5.0: +wannier90+shared") @@ -183,7 +212,7 @@ class Sirius(CMakePackage, CudaPackage, ROCmPackage): depends_on("eigen@3.4.0:", when="@7.3.2: +tests") - depends_on("costa", when="@7.3.2:") + depends_on("costa+shared", when="@7.3.2:") with when("@7.5: +memory_pool"): depends_on("umpire~cuda~rocm", when="~cuda~rocm") @@ -218,6 +247,7 @@ class Sirius(CMakePackage, CudaPackage, ROCmPackage): self.define_from_variant(cm_label + "USE_PROFILER", "profiler"), self.define_from_variant(cm_label + "USE_NVTX", "nvtx"), self.define_from_variant(cm_label + "USE_WANNIER90", "wannier90"), + self.define_from_variant(cm_label + "USE_PUGIXML", "pugixml"), self.define_from_variant("BUILD_SHARED_LIBS", "shared"), self.define_from_variant("BUILD_TESTING", "tests"), ] @@ -250,9 +280,43 @@ class Sirius(CMakePackage, CudaPackage, ROCmPackage): if "^cray-libsci" in spec: args.append(self.define(cm_label + "USE_CRAY_LIBSCI", "ON")) - if spec["blas"].name in ["intel-mkl", "intel-parallel-studio", "intel-oneapi-mkl"]: + if spec["blas"].name in INTEL_MATH_LIBRARIES: args.append(self.define(cm_label + "USE_MKL", "ON")) + if spec.satisfies("@develop"): # TODO: Change to @7.5.3: + mkl_mapper = { + "threading": { + "none": "sequential", + "openmp": "gnu_thread", + "tbb": "tbb_thread", + }, + "mpi": {"intel-mpi": "intelmpi", "mpich": "mpich", "openmpi": "openmpi"}, + } + + mkl_threads = mkl_mapper["threading"][ + spec["intel-oneapi-mkl"].variants["threads"].value + ] + + mpi_provider = 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] + + args.extend( + [ + self.define("MKL_INTERFACE", "lp64"), + self.define("MKL_THREADING", mkl_threads), + self.define("MKL_MPI", mkl_mpi), + ] + ) + + if "+scalapack" in self.spec: + # options provided by `MKLConfig.cmake` + args.extend( + [self.define("ENABLE_BLACS", "On"), self.define("ENABLE_SCALAPACK", "On")] + ) + if "+elpa" in spec: elpa_incdir = os.path.join(spec["elpa"].headers.directories[0], "elpa") args.append(self.define(cm_label + "ELPA_INCLUDE_DIR", elpa_incdir)) |