Installing GauXC#
In this section, we will install GauXC with Skala support using the locked Pixi environments in the Skala repository. As part of this tutorial we will be
installing dependencies for building GauXC
configuring GauXC with different options
testing the Skala implementation in GauXC
installing the GauXC library
reusing GauXC from the CMake build system
Prerequisites#
Install Pixi 0.75 and clone Skala. The repository provides five native environments:
Environment |
Backend |
Bindings |
|---|---|---|
|
OpenMP |
C/C++ |
|
OpenMP |
C/C++/Fortran |
|
OpenMPI with MPI HDF5 |
C/C++ |
|
OpenMPI with MPI HDF5 |
C/C++/Fortran |
|
CUDA 12 with GPU LibTorch |
C/C++ |
Note
A full list of dependencies can be found at GauXC dependencies in the CMake configuration documentation.
Install the environment for the backend you need, for example:
git clone https://github.com/microsoft/skala
cd skala
pixi install --locked -e gauxc-openmp
Verify that the toolchain is visible:
pixi run -e gauxc-openmp cmake --version
pixi run -e gauxc-openmp python -c "import torch; print(torch.__version__)"
Obtain GauXC with Skala#
Download the pre-packaged source bundle from the Skala release page:
curl -L https://github.com/microsoft/skala/releases/download/v1.1.1/gauxc-skala-r2.tar.gz | tar xzv
Tip
To verify the downloaded tarball you can obtain a checksum
curl -L https://github.com/microsoft/skala/releases/download/v1.1.1/gauxc-skala-r2.tar.gz > gauxc-skala-r2.tar.gz
curl -L https://github.com/microsoft/skala/releases/download/v1.1.1/gauxc-skala-r2.tar.gz.sha256 | sha256sum -c
tar xzvf gauxc-skala-r2.tar.gz
The archive expands into a gauxc directory that already contains the Skala
patches. Place it beside the Skala checkout because the CMake commands below
assume this layout:
work/
├── skala/
├── gauxc/
├── build_gauxc/
└── build_example/
Note
You can also obtain the latest version of GauXC with Skala support by downloading the skala branch of GauXC.
curl -L https://github.com/wavefunction91/GauXC/archive/refs/heads/skala.tar.gz | tar xzv
Configure and build#
From the Skala repository root, pick the environment and CMake options that
match your backend. The following commands build the C++ API; enable
GAUXC_ENABLE_C or GAUXC_ENABLE_FORTRAN when
building the C or Fortran examples.
pixi run -e gauxc-openmp bash -c \
'cmake -B ../build_gauxc -S ../gauxc -G Ninja \
-DGAUXC_ENABLE_OPENMP=ON \
-DGAUXC_ENABLE_MPI=OFF \
-DGAUXC_ENABLE_CUDA=OFF \
-DGAUXC_ENABLE_ONEDFT=ON \
-DGAUXC_ENABLE_C=OFF \
-DGAUXC_ENABLE_FORTRAN=OFF \
-DGAUXC_ENABLE_TESTS=OFF \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX="$CONDA_PREFIX"'
pixi run -e gauxc-openmp cmake --build ../build_gauxc
pixi run -e gauxc-openmp cmake --install ../build_gauxc
pixi run -e gauxc-mpi bash -c \
'cmake -B ../build_gauxc -S ../gauxc -G Ninja \
-DGAUXC_ENABLE_OPENMP=OFF \
-DGAUXC_ENABLE_MPI=ON \
-DGAUXC_ENABLE_CUDA=OFF \
-DGAUXC_ENABLE_ONEDFT=ON \
-DGAUXC_ENABLE_C=OFF \
-DGAUXC_ENABLE_FORTRAN=OFF \
-DGAUXC_ENABLE_TESTS=OFF \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX="$CONDA_PREFIX"'
pixi run -e gauxc-mpi cmake --build ../build_gauxc
pixi run -e gauxc-mpi cmake --install ../build_gauxc
pixi run -e gauxc-cuda12 bash -c \
'cmake -B ../build_gauxc -S ../gauxc -G Ninja \
-DGAUXC_ENABLE_OPENMP=ON \
-DGAUXC_ENABLE_MPI=OFF \
-DGAUXC_ENABLE_CUDA=ON \
-DCMAKE_CUDA_ARCHITECTURES="${CMAKE_CUDA_ARCHITECTURES:-60}" \
-DGAUXC_ENABLE_ONEDFT=ON \
-DGAUXC_ENABLE_C=OFF \
-DGAUXC_ENABLE_FORTRAN=OFF \
-DGAUXC_ENABLE_TESTS=OFF \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX="$CONDA_PREFIX"'
pixi run -e gauxc-cuda12 cmake --build ../build_gauxc
pixi run -e gauxc-cuda12 cmake --install ../build_gauxc
This defaults to compute capability 6.0, GauXC’s minimum for FP64
atomics. Set CMAKE_CUDA_ARCHITECTURES before the configure command for
the deployment GPU, for example CMAKE_CUDA_ARCHITECTURES=80.
Note
To enable the C or Fortran bindings, set GAUXC_ENABLE_C or GAUXC_ENABLE_FORTRAN in your CMake configuration step.
For a full list of available CMake options, see Available configurations for CMake build in the CMake configuration documentation.
Tip
Pixi exposes the selected environment as ${CONDA_PREFIX} for compatibility
with conda build tools. If CMake cannot find LibTorch, pass
-DTorch_DIR=${CONDA_PREFIX}/share/cmake/Torch.
Install the library#
The CMake install command installs into the selected Pixi environment so downstream projects can discover its CMake config files.
pixi run -e gauxc-openmp cmake --install ../build_gauxc
This installs headers, libraries, and CMake config.
Note
For using GauXC in your own CMake project, check out Integrating GauXC into your build system in the CMake configuration documentation. Alternatively, you can follow the instructions in the GauXC in C++ tutorial for a full standalone example.
Quick verification#
The installed GauXC library does not provide a Skala executable by itself; it is
built by the standalone C++ example project described in GauXC in C++, which
now discovers the GauXC installation from the previous step. Configure and build the
example to obtain the Skala command line driver:
pixi run -e gauxc-openmp cmake -B ../build_example -S ../skala/examples/cpp/gauxc_integration -G Ninja
pixi run -e gauxc-openmp cmake --build ../build_example
Then run the bundled regression test to confirm that Skala-enabled functionals are working correctly. The Skala implementation can run different traditional functionals, like PBE and TPSS, which can be compared against other libraries.
pixi run -e gauxc-openmp ../build_example/Skala \
../gauxc/tests/ref_data/onedft_he_def2qzvp_tpss_uks.hdf5 --model TPSS
Expected output includes the total TPSS energy computed using a checkpoint compatible for the Skala implementation for the reference density matrix.
Tip
If the executable cannot locate libtorch or other shared libraries, double-check
that LD_LIBRARY_PATH includes ${CONDA_PREFIX}/lib
(activating the environment usually handles this).
Troubleshooting#
- Torch not found
ensure
Torch_DIRpoints to the libtorch CMake package inside the active environment, or exportTorch_DIRbefore running CMake.- CUDA mismatch
use
gauxc-cuda12as a unit. Its lock selects matching CUDA 12 compiler, ExchCXX, and PyTorch builds.- Linker errors for BLAS/MPI
run CMake through
pixi run -e <environment>and verify that it picked the toolchain from${CONDA_PREFIX}viaCMAKE_PREFIX_PATH.- Standalone driver cannot find densities
run it from
gauxc/tests/ref_datasince paths in density files are specified relative to the current directory.
Note
Need help? Open an issue on the Skala repository.