diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/sirius/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/sirius/package.py | 104 |
1 files changed, 88 insertions, 16 deletions
diff --git a/var/spack/repos/builtin/packages/sirius/package.py b/var/spack/repos/builtin/packages/sirius/package.py index ba4a918627..02f547a082 100644 --- a/var/spack/repos/builtin/packages/sirius/package.py +++ b/var/spack/repos/builtin/packages/sirius/package.py @@ -23,6 +23,10 @@ class Sirius(CMakePackage, CudaPackage, ROCmPackage): version("develop", branch="develop") version("master", branch="master") + version("7.6.1", sha256="16a114dc17e28697750585820e69718a96e6929f88406d266c75cf9a7cdbdaaa") + version("7.6.0", sha256="e424206fecb35bb2082b5c87f0865a9536040e984b88b041e6f7d531f8a65b20") + version("7.5.2", sha256="9ae01935578532c84f1d0d673dbbcdd490e26be22efa6c4acf7129f9dc1a0c60") + version("7.5.1", sha256="aadfa7976e90a109aeb1677042454388a8d1a50d75834d59c86c8aef06bc12e4") version("7.5.0", sha256="c583f88ffc02e9acac24e786bc35c7c32066882d2f70a1e0c14b5780b510365d") version("7.4.3", sha256="015679a60a39fa750c5d1bd8fb1ce73945524bef561270d8a171ea2fd4687fec") version("7.4.0", sha256="f9360a695a1e786d8cb9d6702c82dd95144a530c4fa7e8115791c7d1e92b020b") @@ -80,6 +84,9 @@ class Sirius(CMakePackage, CudaPackage, ROCmPackage): deprecated=True, ) + depends_on("cxx", type="build") # generated + depends_on("fortran", type="build") # generated + variant("shared", default=True, description="Build shared libraries") variant("openmp", default=True, description="Build with OpenMP support") variant("fortran", default=False, description="Build Fortran bindings") @@ -106,9 +113,19 @@ 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") + depends_on("blas") depends_on("lapack") depends_on("fftw-api@3") depends_on("libxc@3.0.0:") @@ -132,16 +149,19 @@ class Sirius(CMakePackage, CudaPackage, ROCmPackage): depends_on("magma", when="+magma") - depends_on("spfft@0.9.13:", when="@7.0.1:") - depends_on("spfft+single_precision", when="+single_precision ^spfft") - depends_on("spfft+cuda", when="+cuda ^spfft") - depends_on("spfft+rocm", when="+rocm ^spfft") - depends_on("spfft+openmp", when="+openmp ^spfft") + with when("@7.0.1:"): + depends_on("spfft@0.9.13:") + depends_on("spfft+single_precision", when="+single_precision") + depends_on("spfft+cuda", when="+cuda") + depends_on("spfft+rocm", when="+rocm") + depends_on("spfft+openmp", when="+openmp") - depends_on("spla@1.1.0:", when="@7.0.2:") - depends_on("spla+cuda", when="+cuda ^spla") - depends_on("spla+rocm", when="+rocm ^spla") - depends_on("spla+openmp", when="+openmp ^spla") + with when("@7.0.2:"): + depends_on("spla@1.1.0:") + depends_on("spla+cuda", when="+cuda") + depends_on("spla+rocm", when="+rocm") + # spla removed the openmp option in 1.6.0 + conflicts("^spla@:1.5~openmp", when="+openmp") depends_on("nlcglib", when="+nlcglib") depends_on("nlcglib+rocm", when="+nlcglib+rocm") @@ -157,21 +177,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 - depends_on("hip@:4.0", when="@:7.2.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 ^openblas") - depends_on("amdblis threads=openmp", when="+openmp ^amdblis") - depends_on("blis threads=openmp", when="+openmp ^blis") - depends_on("intel-mkl threads=openmp", when="+openmp ^intel-mkl") + 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,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") @@ -216,6 +253,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"), ] @@ -248,9 +286,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)) |