Add fully developed CP2K spack recipe for GauXC (#5375)

This commit is contained in:
Matthias Krack 2026-06-08 15:31:40 +02:00 committed by GitHub
parent be2ee82e43
commit 7b1171f5d6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 63 additions and 26 deletions

View file

@ -167,10 +167,19 @@ CONTAINS
TYPE(torch_tensor_type) :: exc_density
#if defined (__HAS_IEEE_EXCEPTIONS)
LOGICAL, DIMENSION(5) :: ieee_halt
CALL ieee_get_halting_mode(IEEE_ALL, ieee_halt)
CALL ieee_set_halting_mode(IEEE_ALL, .FALSE.)
#endif
CALL torch_model_forward_mol_tensor(model%torch_model, "get_exc_density", inputs, exc_density)
CALL torch_tensor_weighted_sum(exc_density, grid_weights, exc_tensor)
CALL torch_tensor_release(exc_density)
exc = torch_tensor_item_double(exc_tensor)
#if defined (__HAS_IEEE_EXCEPTIONS)
CALL ieee_set_halting_mode(IEEE_ALL, ieee_halt)
#endif
END SUBROUTINE skala_torch_model_get_exc

View file

@ -31,6 +31,32 @@ class Gauxc(CMakePackage, CudaPackage):
)
version("1.1", sha256="17de077fb23e44d03b0ed14dcd8117c01e5b3431fbefa2352d751639ada7f91c")
variant("c", default=True, description="Build with C API support")
variant("fortran", default=True, description="Build with Fortran support")
variant("host", default=True, description="Build with host integrator")
variant("cuda", default=False, description="Build with CUDA support")
variant("hip", default=False, description="Build with HIP support")
variant("mpi", default=False, description="Build with MPI support")
variant("openmp", default=True, description="Build with OpenMP support")
variant("tests", default=False, description="Build with unit tests")
variant("gau2grid", default=True, description="Build with Gau2Grid collocation")
variant("hdf5", default=True, description="Build with HDF5 support")
variant("onedft", default=False, description="Build with ONEDFT functional")
variant("skala", default=False, description="Build with Skala support")
variant("fast_rsqrt", default=False, description="Build with fast RSQRT support")
variant("blas_prefer_ilp64", default=False, description="Prefer ILP64 for host BLAS")
variant("link_cuda_static", default=False, description="Link GauXC with static CUDA libs")
variant("magma", default=False, description="Build with MAGMA linear algebra support")
variant("nccl", default=False, description="Build with NCCL collectives")
variant("cutlass", default=False, description="Build with CUTLASS linear algebra support")
variant("pic", default=True, description="Build position independent code")
conflicts("+skala", when="~onedft", msg="Skala requires ONEDFT support")
conflicts("+magma", when="~cuda ~hip", msg="MAGMA requires CUDA or HIP")
conflicts("+nccl", when="~cuda", msg="NCCL requires CUDA")
conflicts("+cutlass", when="~cuda", msg="CUTLASS requires CUDA")
conflicts("+fortran", when="~c", msg="Fortran bindings require C API")
# Skala resource file
skala_version = "1.1"
skala_file = f"skala-{skala_version}.fun"
@ -48,43 +74,45 @@ class Gauxc(CMakePackage, CudaPackage):
depends_on("fortran", when="+fortran", type="build")
depends_on("cmake@3.20:", type="build")
depends_on("ninja@1.10:", type="build")
depends_on("exchcxx ~cuda", when="~cuda")
depends_on("exchcxx +cuda", when="+cuda")
depends_on("exchcxx~cuda", when="~cuda")
depends_on("exchcxx+cuda", when="+cuda")
depends_on("integratorxx")
depends_on("blas")
depends_on("hdf5", when="+hdf5")
depends_on("highfive@:2.10.1", when="+hdf5")
depends_on("mpi", when="+mpi")
depends_on("cuda", when="+cuda")
depends_on("highfive@:2.10.1", when="+hdf5")
depends_on("gau2grid")
depends_on("blas")
depends_on("hip", when="+hip")
depends_on("gau2grid", when="+gau2grid")
depends_on("nlohmann-json", when="+skala")
depends_on("py-torch@2:", when="+skala")
depends_on("py-torch@2: +cuda", when="+skala+cuda")
depends_on("py-torch@2:+cuda", when="+skala+cuda")
depends_on("magma", when="+magma")
depends_on("nccl", when="+nccl")
depends_on("cutlass", when="+cutlass")
generator("ninja")
variant("openmp", default=True, description="Build with OpenMP support")
variant("mpi", default=False, description="Build with MPI support")
variant("cuda", default=False, description="Build with CUDA support")
variant("hdf5", default=False, description="Build with HDF5 support")
variant("c", default=False, description="Build with C support")
variant("fortran", default=False, description="Build with Fortran support")
variant("skala", default=False, description="Build with Skala support")
variant("host", default=True, description="Build with host integrators")
variant("tests", default=False, description="Build with testing framework (Catch2)")
variant("pic", default=True, description="Build position independent code")
def cmake_args(self):
spec = self.spec
args = [
self.define("GAUXC_ENABLE_OPENMP", self.spec.satisfies("+openmp")),
self.define("GAUXC_ENABLE_MPI", self.spec.satisfies("+mpi")),
self.define("GAUXC_ENABLE_CUDA", self.spec.satisfies("+cuda")),
self.define("GAUXC_ENABLE_HDF5", self.spec.satisfies("+hdf5")),
self.define("GAUXC_ENABLE_C", self.spec.satisfies("+c")),
self.define("GAUXC_ENABLE_FORTRAN", self.spec.satisfies("+fortran")),
self.define("GAUXC_ENABLE_ONEDFT", self.spec.satisfies("+skala")),
self.define("GAUXC_ENABLE_HOST", self.spec.satisfies("+host")),
self.define("GAUXC_ENABLE_TESTS", self.spec.satisfies("+tests")),
self.define("GAUXC_ENABLE_C", spec.satisfies("+c")),
self.define("GAUXC_ENABLE_FORTRAN", spec.satisfies("+fortran")),
self.define("GAUXC_ENABLE_HOST", spec.satisfies("+host")),
self.define("GAUXC_ENABLE_CUDA", spec.satisfies("+cuda")),
self.define("GAUXC_ENABLE_HIP", spec.satisfies("+hip")),
self.define("GAUXC_ENABLE_MPI", spec.satisfies("+mpi")),
self.define("GAUXC_ENABLE_OPENMP", spec.satisfies("+openmp")),
self.define("GAUXC_ENABLE_TESTS", spec.satisfies("+tests")),
self.define("GAUXC_ENABLE_GAU2GRID", spec.satisfies("+gau2grid")),
self.define("GAUXC_ENABLE_HDF5", spec.satisfies("+hdf5")),
self.define("GAUXC_ENABLE_ONEDFT", spec.satisfies("+onedft")),
self.define("GAUXC_ENABLE_FAST_RSQRT", spec.satisfies("+fast_rsqrt")),
self.define("GAUXC_BLAS_PREFER_ILP64", spec.satisfies("+blas_prefer_ilp64")),
self.define("GAUXC_LINK_CUDA_STATIC", spec.satisfies("+link_cuda_static")),
self.define("GAUXC_ENABLE_MAGMA", spec.satisfies("+magma")),
self.define("GAUXC_ENABLE_NCCL", spec.satisfies("+nccl")),
self.define("GAUXC_ENABLE_CUTLASS", spec.satisfies("+cutlass")),
self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"),
]
return args