mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-28 22:25:32 -04:00
Add fully developed CP2K spack recipe for GauXC (#5375)
This commit is contained in:
parent
be2ee82e43
commit
7b1171f5d6
2 changed files with 63 additions and 26 deletions
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue