Skip to content

Allow building of shared libraries #255

Allow building of shared libraries

Allow building of shared libraries #255

name: Build and Test - Compiler Zoo
on: [pull_request, workflow_dispatch]
env:
GH_ACTIONS_TOOLCHAIN: .github/workflows/toolchains/gh-actions.cmake
ENV_PREFIX_PATH: "/home/software/install/blis-lp64-sequential;/usr/local/libxc/exchcxx-patch"
jobs:
release_build:
name: Release Build and Test
runs-on: ubuntu-latest
container:
image: dbwy/chemistry
strategy:
matrix:
compiler:
- {suite: gnu, version: 12}
- {suite: llvm, version: 19}
mpi_flag: [ON, OFF]
openmp_flag: [ON, OFF]
exclude:
- compiler: {suite: llvm, version: 19}
openmp_flag: ON
steps:
- uses: actions/checkout@v4
- name: Install LLVM toolchain
if: ${{ matrix.compiler.suite == 'llvm' }}
shell: bash
run: |
set -euo pipefail
apt-get update
apt-get install -y wget gnupg lsb-release software-properties-common
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
./llvm.sh ${{ matrix.compiler.version }} -y
- name: Setup Compiler
shell: bash
run: $GITHUB_WORKSPACE/.github/workflows/scripts/compiler_setup.sh
${{matrix.compiler.suite}} ${{matrix.compiler.version}}
- name: Enable or Disable MPI
shell: bash
run: echo "set(GAUXC_ENABLE_MPI ${{matrix.mpi_flag}} CACHE BOOL \"\" FORCE)" >>
${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
- name: Enable or Disable OpenMP
shell: bash
run: echo "set(GAUXC_ENABLE_OPENMP ${{matrix.openmp_flag}} CACHE BOOL \"\" FORCE)" >>
${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
- name: Setup Build Type
shell: bash
run: echo "set(CMAKE_BUILD_TYPE Release CACHE BOOL \"\" FORCE)" >>
${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
- name: Configure CMake
shell: bash
run: cmake -S $GITHUB_WORKSPACE -B ${{runner.workspace}}/build
-DCMAKE_INSTALL_PREFIX=${{runner.workspace}}/install
-DCMAKE_PREFIX_PATH=${ENV_PREFIX_PATH}
-DCMAKE_TOOLCHAIN_FILE=${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
- name: Build
shell: bash
run: cmake --build ${{runner.workspace}}/build -j2
- name: Test
shell: bash
run: cmake --build ${{runner.workspace}}/build --target test
nvidia_build:
name: NVIDIA Build (No Test)
runs-on: ubuntu-latest
#needs: release_build
container:
image: dbwy/chemistry-gpu
#options: --gpus all
strategy:
matrix:
flags: [ {magma: OFF, cutlass: OFF}, {magma: ON, cutlass: OFF}, {magma: OFF, cutlass: ON} ]
steps:
- uses: actions/checkout@v4
- name: Setup Build Type
shell: bash
run: echo "set(CMAKE_BUILD_TYPE Release CACHE BOOL \"\" FORCE)" >> ${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
- name: Setup Enable CUDA
shell: bash
run: |
echo "set(GAUXC_ENABLE_CUDA ON CACHE BOOL \"\" FORCE)" >> ${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
echo "set(CMAKE_CUDA_ARCHITECTURES 80 CACHE STRING \"\" FORCE)" >> ${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
echo "set(GAUXC_ENABLE_MAGMA ${{matrix.flags.magma}} CACHE BOOL \"\" FORCE)" >> ${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
echo "set(GAUXC_ENABLE_CUTLASS ${{matrix.flags.cutlass}} CACHE BOOL \"\" FORCE)" >> ${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
echo "set(GAUXC_ENABLE_MPI OFF CACHE BOOL \"\" FORCE)" >> ${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
echo "set(MAGMA_ROOT_DIR \"/usr/local/magma/2.6.2/install\" CACHE PATH \"\" FORCE)" >> ${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
- name: Configure CMake
shell: bash
run: cmake -S $GITHUB_WORKSPACE -B ${{runner.workspace}}/build
-DCMAKE_INSTALL_PREFIX=${{runner.workspace}}/install
-DCMAKE_PREFIX_PATH=${ENV_PREFIX_PATH}
-DCMAKE_TOOLCHAIN_FILE=${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
- name: Build
shell: bash
run: cmake --build ${{runner.workspace}}/build -j2
#- name: Test
# shell: bash
# run: cmake --build ${{runner.workspace}}/build --target test
debug_build:
name: Debug Build and Test
runs-on: ubuntu-latest
container:
image: dbwy/chemistry
steps:
- uses: actions/checkout@v4
- name: Setup Compiler
shell: bash
run: $GITHUB_WORKSPACE/.github/workflows/scripts/compiler_setup.sh gnu 12
- name: Setup Build Type
shell: bash
run: echo "set(CMAKE_BUILD_TYPE Debug CACHE BOOL \"\" FORCE)" >> ${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
- name: Configure CMake
shell: bash
run: cmake -S $GITHUB_WORKSPACE -B ${{runner.workspace}}/build
-DCMAKE_INSTALL_PREFIX=${{runner.workspace}}/install
-DCMAKE_PREFIX_PATH=${ENV_PREFIX_PATH}
-DCMAKE_TOOLCHAIN_FILE=${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
- name: Build
shell: bash
run: cmake --build ${{runner.workspace}}/build -j2
- name: Test
shell: bash
run: cmake --build ${{runner.workspace}}/build --target test
subproject_build:
name: Build as Subproject
needs: release_build
runs-on: ubuntu-latest
container:
image: dbwy/chemistry
steps:
- uses: actions/checkout@v4
- name: Setup Compiler
shell: bash
run: $GITHUB_WORKSPACE/.github/workflows/scripts/compiler_setup.sh gnu 12
- name: CMake Subproject Configure
shell: bash
run: cmake -S $GITHUB_WORKSPACE/tests/cmake/subproject
-B ${{runner.workspace}}/cmake_subproject_build
-DGITHUB_REPOSITORY=$GITHUB_ACTOR/GauXC
-DGIT_REVISION=$GITHUB_HEAD_REF
-DFETCHCONTENT_SOURCE_DIR_GAUXC=$GITHUB_WORKSPACE
-DCMAKE_PREFIX_PATH=${ENV_PREFIX_PATH}
-DCMAKE_TOOLCHAIN_FILE=${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
- name: CMake Subproject Build
shell: bash
run: cmake --build ${{runner.workspace}}/cmake_subproject_build -j2
cmake_discovery:
name: CMake Discovery
needs: release_build
runs-on: ubuntu-latest
container:
image: dbwy/chemistry
steps:
- uses: actions/checkout@v4
- name: Setup Compiler
shell: bash
run: $GITHUB_WORKSPACE/.github/workflows/scripts/compiler_setup.sh gnu 12
- name: Configure CMake
shell: bash
run: cmake -S $GITHUB_WORKSPACE -B ${{runner.workspace}}/build
-DCMAKE_INSTALL_PREFIX=${{runner.workspace}}/install
-DCMAKE_PREFIX_PATH=${ENV_PREFIX_PATH}
-DCMAKE_TOOLCHAIN_FILE=${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
- name: Build
shell: bash
run: cmake --build ${{runner.workspace}}/build -j2
- name: Install
shell: bash
run: cmake --build ${{runner.workspace}}/build --target install
- name: CMake Discovery Configure
shell: bash
run: cmake -S $GITHUB_WORKSPACE/tests/cmake/discovery -B ${{runner.workspace}}/cmake_discovery_build
-DCMAKE_PREFIX_PATH="${{runner.workspace}}/install;${ENV_PREFIX_PATH}"
-DCMAKE_TOOLCHAIN_FILE=${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
- name: CMake Discovery Build
shell: bash
run: cmake --build ${{runner.workspace}}/cmake_discovery_build -j2
macos_build:
name: macOS Build and Test
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- uses: mamba-org/setup-micromamba@v2
with:
environment-name: gauxc
create-args: >-
python=3.11
c-compiler
cxx-compiler
fortran-compiler
mpich
cmake
hdf5
openblas
ccache
init-shell: bash
cache-environment: true
- name: Setup ccache
shell: micromamba-shell {0}
run: |
ccache --set-config=max_size=2G
ccache --set-config=compression=true
echo "CMAKE_C_COMPILER_LAUNCHER=ccache" >> $GITHUB_ENV
echo "CMAKE_CXX_COMPILER_LAUNCHER=ccache" >> $GITHUB_ENV
- name: Restore ccache
uses: actions/cache@v4
with:
path: ~/.ccache
key: ccache-macos-${{ github.sha }}
restore-keys: |
ccache-macos-
- name: Build
shell: micromamba-shell {0}
run: |
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Release \
-DGAUXC_ENABLE_MPI=ON \
-DGAUXC_ENABLE_TESTS=ON \
-DBUILD_TESTING=ON \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
cmake --build build -j3
- name: ccache statistics
shell: micromamba-shell {0}
run: ccache --show-stats
- name: Test
shell: micromamba-shell {0}
run: ctest --test-dir build --output-on-failure