{"id":13833039,"url":"https://github.com/wavefunction91/GauXC","last_synced_at":"2025-07-09T20:31:18.371Z","repository":{"id":51170101,"uuid":"282034846","full_name":"wavefunction91/GauXC","owner":"wavefunction91","description":"GauXC is a modern, modular C++ library for the evaluation of quantities related to the exchange-correlation (XC) energy (e.g. potential, etc) in the Gaussian basis set discretization of Kohn-Sham density function theory (KS-DFT) on heterogenous architectures.","archived":false,"fork":false,"pushed_at":"2025-05-21T12:37:18.000Z","size":9467,"stargazers_count":33,"open_issues_count":30,"forks_count":22,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-05-21T13:54:33.347Z","etag":null,"topics":["dft","gpu","integrator"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wavefunction91.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-07-23T19:10:41.000Z","updated_at":"2025-05-21T12:37:22.000Z","dependencies_parsed_at":"2022-09-12T13:22:35.583Z","dependency_job_id":"5028795f-0b68-43ec-9bd2-dc63a107035a","html_url":"https://github.com/wavefunction91/GauXC","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wavefunction91/GauXC","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavefunction91%2FGauXC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavefunction91%2FGauXC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavefunction91%2FGauXC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavefunction91%2FGauXC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wavefunction91","download_url":"https://codeload.github.com/wavefunction91/GauXC/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavefunction91%2FGauXC/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264502648,"owners_count":23618663,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dft","gpu","integrator"],"created_at":"2024-08-04T11:00:38.212Z","updated_at":"2025-07-09T20:31:13.361Z","avatar_url":"https://github.com/wavefunction91.png","language":"C++","funding_links":[],"categories":["programs"],"sub_categories":[],"readme":"# About\n\nGauXC Copyright (c) 2020-2024, The Regents of the University of California,\nthrough Lawrence Berkeley National Laboratory (subject to receipt of\nany required approvals from the U.S. Dept. of Energy). All rights reserved.\n\nIf you have questions about your rights to use or distribute this software,\nplease contact Berkeley Lab's Intellectual Property Office at\nIPO@lbl.gov.\n\nNOTICE.  This Software was developed under funding from the U.S. Department\nof Energy and the U.S. Government consequently retains certain rights.  As\nsuch, the U.S. Government has been granted for itself and others acting on\nits behalf a paid-up, nonexclusive, irrevocable, worldwide license in the\nSoftware to reproduce, distribute copies to the public, prepare derivative \nworks, and perform publicly and display publicly, and to permit others to do so.\n\n# Synopsis\n\nGauXC is a modern, modular C++ library for the evaluation of quantities related\nto the exchange-correlation (XC) and exact-exchange (K) energy (e.g. potential, etc) in the Gaussian\nbasis set discretization of Kohn-Sham density function theory (KS-DFT). GauXC\nprovides efficient, scalable distributed memory XC and K integrators for both CPU and\naccelerator-based (GPU) architectures. Currently, GPU support is provided through\nthe \n[CUDA](https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html) and \n[HIP](https://rocmdocs.amd.com/en/latest/Programming_Guides/HIP-GUIDE.html)\nframeworks to target NVIDIA and AMD GPUs, respectively. \nEvaluation\nof the XC functional CPU/accelerator architectures is provided by the\n[ExchCXX](https://github.com/wavefunction91/ExchCXX) library. Quadratures are generated\nby the [IntegratorXX](https://github.com/wavefunction91/IntegratorXX).\n\nGauXC is a work in progress. Its development has been funded by the U.S.\nDepartment of Energy Exascale Computing Project \n([NWChemEx](https://github.com/NWChemEx-Project)).\n\n\n# Design Goals\n\n* Provide a stable, portable and high-performance implementation of numerical\nintegrators optimized for the evaluation of XC and K related quantities in Gaussian\nbasis set KS-DFT on CPU and accelerator based architectures.\n* Develop a modern, modular, extensible C++ software infrastructure which allows\nfor flexible and agile development in the field of KS-DFT.\n\n# Dependencies\n\n* CMake (3.20+)\n* BLAS (for CPU integrators)\n* [ExchCXX](https://github.com/wavefunction91/ExchCXX)\n* [IntegratorXX](https://github.com/wavefunction91/IntegratorXX)\n* [Gau2Grid](https://github.com/dgasmith/gau2grid) (pregenerated source packaged with GauXC)\n* MPI (Optional)\n* OpenMP (CPU parallelism, Optional)\n* [Cereal](https://github.com/USCiLab/cereal) (Optional)\n* [HDF5](https://www.hdfgroup.org/solutions/hdf5/) (Optional)\n* [Eigen3](https://eigen.tuxfamily.org/dox/) (Testing Only)\n* [CUDA](https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html)/[cuBLAS](https://docs.nvidia.com/cuda/cublas/index.html) (Required only if CUDA enabled)\n* [HIP](https://rocmdocs.amd.com/en/latest/Programming_Guides/HIP-GUIDE.html)/[ROCm](https://github.com/RadeonOpenCompute/ROCm) (Required only if HIP enabled)\n* [MAGMA](https://icl.utk.edu/magma/) (Optional if CUDA/HIP enabled)\n\n# Major Contributors\n\nPrimary Developer and Maintainer: David Williams-Young - LBNL (dbwy at lbl dot gov) \n\nGauXC has received major contributions from the following developers (in no particular order):\n* Thom Popovici (LBNL)          - Optimized sn-K kernels for CPU and GPU architectures\n* Teri Lambros (UW)             - Unrestricted (UKS) and Generalized (GKS) DFT\n* Daniel Mejia-Rodriguez (PNNL) - Meta-GGA DFT\n\nWe have also receieved significant support from industry collaborators:\n* David Clark (NVIDIA)  - Optimization of critical kernels for NVIDIA architectures\n* Damon McDougall (AMD) - Optimization of critical kernels for AMDGPU architectures\n\n\n# Publications\n\n## GauXC\nPlease cite the following publications if GauXC was used in your publication:\n```\n% Distributed Memory Seminumerical Exact Exchange implementation\n@article{williams2023distributed,\n  title = {Distributed memory, GPU accelerated Fock construction for hybrid, Gaussian basis density functional theory},\n  author = {Williams-Young, David B. and Asadchev, Andrey and Popovici, Doru Thom and Clark, David and Waldrop, Jonathan and \n            Windus, Theresa L. and Valeev, Edward F. and de Jong, Wibe A.},\n  journal = {The Journal of Chemical Physics},\n  volume = {158},\n  number = {23},\n  pages = {234104},\n  year = {2023},\n  doi = {10.1063/5.0151070},\n  url = {https://doi.org/10.1063/5.0151070}\n}\n\n% Performance Portability (HIP/SYCL implementations)\n@article{williams2021achieving,\n  title={Achieving performance portability in Gaussian basis set density functional \n         theory on accelerator based architectures in NWChemEx},\n  author={Williams-Young, David B and Bagusetty, Abhishek and de Jong, Wibe A and \n          Doerfler, Douglas and van Dam, Hubertus JJ and V{\\'a}zquez-Mayagoitia, {\\'A}lvaro and \n          Windus, Theresa L and Yang, Chao},\n  journal={Parallel Computing},\n  volume={108},\n  pages={102829},\n  year={2021},\n  doi={10.1016/j.parco.2021.102829},\n  url={https://www.sciencedirect.com/science/article/pii/S0167819121000776?via%3Dihub}\n}\n\n% CUDA and distributed memory implementation\n@article{williams20on,\n  author={David B. Williams--Young and Wibe A. de Jong and Hubertus J.J. van Dam and\n          Chao Yang},\n  title={On the Efficient Evaluation of the Exchange Correlation Potential on \n         Graphics Processing Unit Clusters},\n  journal={Frontiers in Chemistry},\n  volume={8},\n  pages={581058},\n  year={2020},\n  doi={10.3389/fchem.2020.581058},\n  url={https://www.frontiersin.org/articles/10.3389/fchem.2020.581058/abstract},\n  preprint={https://arxiv.org/abs/2007.03143}\n}\n\n% Algorithm for XC potential assembly and shared-memory CPU implementation\n@article{petrone18an,\n  author={Alessio Petrone and David B. Williams--Young and Shichao Sun and\n          Torin F. Stetina and Xiaosong Li},\n  title={An Efficient Implementation of Two-Component Relativistic Density \n         Functional Theory with Torque-Free Auxiliary Variables},\n  journal={The European Physical Journal B},\n  volume={91},\n  number={169},\n  pages={},\n  year={2018},\n  doi={10.1140/epjb/e2018-90170-1},\n  url={https://link.springer.com/article/10.1140/epjb/e2018-90170-1}\n}\n```\n\n## Density functionals\n\nIf GauXC was used for the evaluation of exchange-correlation related\nquantities in your publication, we request that you also cite\n[Libxc](https://libxc.gitlab.io/) which provides the underlying\nimplementation of the exchange-correlation functionals used in GauXC\nvia the [ExchCXX](https://github.com/wavefunction91/ExchCXX) library:\n\n```\n% Actual Implementations of the Density Functionals\n@article{lehtola2018libxc,\n  author  = {Lehtola, Susi and Steigemann, Conrad and Oliveira, Micael J. T. and Marques, Miguel A. L.},\n  journal = {SoftwareX},\n  title   = {Recent developments in {LIBXC}---a comprehensive library of functionals for density functional theory},\n  year    = {2018},\n  pages   = {1--5},\n  volume  = {7},\n  doi     = {10.1016/j.softx.2017.11.002},\n}\n```\n\n# Build Instructions\n\nGauXC provides a CMake build system with automatic dependency management (through [FetchContent](https://cmake.org/cmake/help/latest/module/FetchContent.html)).\nAs such, a simple CMake invocation will often suffice for most purposes\n```\ncmake -S /path/to/gauxc -B /path/to/build [GauXC configure options]\ncmake --build /path/to/build\n```\n\n\nGauXC is linkable both as an installed library as well as a CMake subproject via `FetchContent`\n```\n# GauXC Discovery\nfind_package( gauxc REQUIRED )\ntarget_link_libraries( my_target PUBLIC gauxc::gauxc )\n```\n\n```\n# GauXC as CMake Subproject\ninclude(FetchContent)\n\n# Set GauXC CMake options (see below)\n\n# Pull master branch of GauXC\nFetchContent_Declare( gauxc \n  GIT_REPOSITORY https://github/com/wavefunction91/GauXC.git \n  GIT_TAG master \n)\nFetchContent_MakeAvailable( gauxc )\n\n# Link to target\ntarget_link_libraries( my_target PUBLIC gauxc::gauxc )\n```\n\n\n## Influential CMake Variables\n\n| Variable Name              | Description                                               | Default  |\n|----------------------------|-----------------------------------------------------------|----------|\n| `GAUXC_ENABLE_TESTS`       | Enable Testing Framework (Catch2)                         | `ON`     |\n| `GAUXC_ENABLE_HOST`        | Enable HOST integrators                                   | `ON`     |\n| `GAUXC_ENABLE_CUDA`        | Enable CUDA integrators                                   | `OFF`    |\n| `GAUXC_ENABLE_HIP`         | Enable HIP integrators                                    | `OFF`    |\n| `GAUXC_ENABLE_MAGMA`       | Enable MAGMA for batched BLAS (No effect if no GPU)       | `ON`     | \n| `GAUXC_ENABLE_CUTLASS`     | Enable CUTLASS for batched BLAS (No effect if no CUDA)    | `OFF`    |\n| `GAUXC_ENABLE_NCCL`        | Enable NCCL bindings for topology aware GPU reductions    | `OFF`    |\n| `GAUXC_ENABLE_MPI`         | Enable MPI Bindings                                       | `ON`     | \n| `GAUXC_ENABLE_OPENMP`      | Enable OpenMP Bindings                                    | `ON`     | \n| `CMAKE_CUDA_ARCHITECTURES` | CUDA architechtures (e.g. 70 for Volta, 80 for Ampere)    |  --      |\n| `BLAS_LIBRARIES`           | Full BLAS linker.                                         |  --      |\n| `MAGMA_ROOT_DIR`           | Install prefix for MAGMA.                                 |  --      |\n\n\n\n\n# Example Usage\n\nComing Soon.... See `test/standalone_driver.cxx` for an example end-to-end invocation of GauXC for various integrands.\n\n\n# License\n\nGauXC is made freely available under the terms of a modified 3-Clause BSD license. See\nLICENSE.txt for details.\n\n# Acknowledgments\n\nThe development of GauXC is supported by the Exascale Computing Project\n(17-SC-20-SC), a collaborative effort of the U.S. Department of Energy Office\nof Science and the National Nuclear Security Administration.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwavefunction91%2FGauXC","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwavefunction91%2FGauXC","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwavefunction91%2FGauXC/lists"}