Skip to content

Debug simplified field compilation and runtime issues #334

Debug simplified field compilation and runtime issues

Debug simplified field compilation and runtime issues #334

Workflow file for this run

name: Test-Build
on:
push:
branches:
- main
- develop
pull_request:
branches:
- main
- develop
jobs:
test-build:
runs-on: ubuntu-latest
timeout-minutes: 30
defaults:
run:
shell: bash
strategy:
matrix:
build_type: [Release]
clang_tidy: [ON, OFF]
memory_test: [ON, OFF]
compiler: [g++]
language: ['cpp']
exclude:
- build_type: Release
memory_test: ON
- build_type: RelWithDebInfo
memory_test: OFF
steps:
- name: Update packages
run: sudo apt-get update
- name: Install mpi
run: sudo apt-get install -yq mpich
- name: Install cmake
run: sudo apt-get install -yq cmake
- uses: actions/checkout@v4
- name: build Catch2
uses: ./.github/actions/install-repo
with:
repo-name: 'Catch2'
repo-path: 'catchorg/Catch2'
repo-ref: ''
cache: true
- name: build kokkos
uses: ./.github/actions/install-repo
with:
repo-name: 'kokkos'
repo-path: 'kokkos/kokkos'
repo-ref: '4.6.01'
cache: true
options: '-DCMAKE_CXX_STANDARD=17
-DBUILD_SHARED_LIBS=OFF
-DKokkos_ENABLE_SERIAL=ON
-DKokkos_ENABLE_OPENMP=OFF
-DKokkos_ENABLE_CUDA=OFF
-DKokkos_ENABLE_CUDA_LAMBDA=OFF
-DKokkos_ENABLE_CUDA_CONSTEXPR=OFF'
- name: build kokkos-kernels
uses: ./.github/actions/install-repo
with:
repo-name: 'kokkos-kernels'
repo-path: 'kokkos/kokkos-kernels'
repo-ref: '4.6.01'
cache: true
options: '-DCMAKE_CXX_STANDARD=17
-DBUILD_SHARED_LIBS=OFF
-DKokkos_DIR=${{ runner.temp }}/build-kokkos/install/lib/cmake/Kokkos'
- name: build omega_h
uses: ./.github/actions/install-repo
with:
repo-name: 'omega_h'
repo-path: 'SCOREC/omega_h'
repo-ref: ''
cache: true
options: '-DCMAKE_CXX_COMPILER=`which mpicxx`
-DCMAKE_C_COMPILER=`which mpicc`
-DBUILD_SHARED_LIBS=OFF
-DOmega_h_USE_MPI=ON
-DOmega_h_USE_Kokkos=ON
-DBUILD_TESTING=OFF
-DMPIEXEC_EXECUTABLE=`which mpirun`
-DKokkos_DIR=${{ runner.temp }}/build-kokkos/install/lib/cmake/Kokkos'
- name: build meshFields
uses: ./.github/actions/install-repo
with:
repo-name: 'meshFields'
repo-path: 'SCOREC/meshFields'
repo-ref: ''
cache: true
options: '-DCMAKE_CXX_COMPILER=`which mpicxx`
-DCMAKE_C_COMPILER=`which mpicc`
-DMPIEXEC_EXECUTABLE=`which mpirun`
-DKokkos_DIR=${{ runner.temp }}/build-kokkos/install/lib/cmake/Kokkos
-DOmega_h_DIR=${{ runner.temp }}/build-omega_h/install/lib/cmake/Omega_h'
- name: build perfstubs
uses: ./.github/actions/install-repo
with:
repo-name: 'perfstubs'
repo-path: 'UO-OACISS/perfstubs'
repo-ref: ''
cache: true
options: '-DCMAKE_CXX_COMPILER=mpicxx'
- name: build kokkos-fortran-interop
uses: ./.github/actions/install-repo
with:
repo-name: 'kokkos-fortran-interop'
repo-path: 'kokkos/kokkos-fortran-interop'
repo-ref: ''
cache: true
options: '-DCMAKE_BUILD_TYPE=Release
-DCMAKE_CXX_COMPILER=`which mpicxx`
-DCMAKE_C_COMPILER=`which mpicc`
-DCMAKE_Fortran_COMPILER=`which mpifort`
-DBUILD_TESTING=OFF
-DFLCL_BUILD_TESTS=OFF
-DFLCL_BUILD_EXAMPLE=OFF
-DKokkos_DIR=${{ runner.temp }}/build-kokkos/install/lib/cmake/Kokkos'
- name: build ADIOS2
uses: ./.github/actions/install-repo
with:
repo-name: 'ADIOS2'
repo-path: 'ornladios/ADIOS2'
repo-ref: ''
cache: true
options: '-DADIOS2_USE_CUDA=OFF'
- name: build redev
uses: ./.github/actions/install-repo
with:
repo-name: 'redev'
repo-path: 'SCOREC/redev'
repo-ref: ''
cache: true
options: '-DCMAKE_CXX_COMPILER=`which mpicxx`
-DMPIEXEC_EXECUTABLE=`which mpirun`
-DCMAKE_BUILD_TYPE=Release
-DBUILD_SHARED_LIBS=OFF
-DADIOS2_DIR=${{ runner.temp }}/build-ADIOS2/install/lib/cmake/adios2
-Dperfstubs_DIR=${{ runner.temp }}/build-perfstubs/install/lib/cmake'
- name: checkout pcms_testcases
uses: actions/checkout@v3
with:
repository: jacobmerson/pcms_testcases
path: pcms_testcases
- name: Install fftw3
run: sudo apt-get install -yq libfftw3-dev pkg-config
- name: build pcms
if: matrix.clang_tidy == 'OFF'
uses: ./.github/actions/install-repo
with:
repo-name: 'pcms'
repo-path: 'SCOREC/pcms'
repo-ref: ''
cache: false
options: '-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-DCMAKE_C_COMPILER=`which mpicc`
-DCMAKE_CXX_COMPILER=`which mpicxx`
-DCMAKE_Fortran_COMPILER=`which mpifort`
-DPCMS_TIMEOUT=5
-DCatch2_DIR=${{ runner.temp }}/build-Catch2/install/lib/cmake/Catch2
-DOmega_h_DIR=${{ runner.temp }}/build-omega_h/install/lib/cmake/Omega_h
-Dmeshfields_DIR=${{ runner.temp }}/build-meshFields/install/lib/cmake/meshfields
-Dredev_DIR=${{ runner.temp }}/build-redev/install/lib/cmake/redev
-Dflcl_DIR=${{ runner.temp }}/build-kokkos-fortran-interop/install/lib/cmake/flcl
-DMPIEXEC_EXECUTABLE=`which mpirun`
-DADIOS2_DIR=${{ runner.temp }}/build-ADIOS2/install/lib/cmake/adios2
-Dperfstubs_DIR=${{ runner.temp }}/build-perfstubs/install/lib/cmake
-DKokkos_DIR=${{ runner.temp }}/build-kokkos/install/lib/cmake/Kokkos
-DKokkosKernels_DIR=${{ runner.temp }}/build-kokkos-kernels/install/lib/cmake/KokkosKernels/
-DPCMS_TEST_DATA_DIR=$PWD/pcms_testcases'
# - name: Install Valgrind
# if: matrix.clang_tidy == 'OFF'
# run: sudo apt-get install -yq valgrind
# - name: Run CTest
# if: matrix.clang_tidy == 'OFF'
# run: ctest --test-dir ${{ runner.temp }}/build-pcms
# - name: Print Test
# if: matrix.clang_tidy == 'OFF'
# run: cat ${{ runner.temp }}/build-pcms/Testing/Temporary/LastTest.log
- name: Install Bear
if: matrix.clang_tidy == 'ON'
run: sudo apt-get install -yq bear
- name: configure pcms
if: matrix.clang_tidy == 'ON'
run : |
mkdir ${{ runner.temp }}/build-pcms
cmake -S . -B ${{ runner.temp }}/build-pcms -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
-DCMAKE_C_COMPILER=mpicc \
-DCMAKE_CXX_COMPILER=mpicxx \
-DCMAKE_Fortran_COMPILER=mpifort \
-DPCMS_TIMEOUT=5 \
-DCatch2_DIR=${{ runner.temp }}/build-Catch2/install/lib/cmake/Catch2 \
-DOmega_h_DIR=${{ runner.temp }}/build-omega_h/install/lib/cmake/Omega_h \
-Dmeshfields_DIR=${{ runner.temp }}/build-meshFields/install/lib/cmake/meshfields \
-Dredev_DIR=${{ runner.temp }}/build-redev/install/lib/cmake/redev \
-Dflcl_DIR=${{ runner.temp }}/build-kokkos-fortran-interop/install/lib/cmake/flcl \
-DMPIEXEC_EXECUTABLE=mpirun \
-DADIOS2_DIR=${{ runner.temp }}/build-ADIOS2/install/lib/cmake/adios2 \
-Dperfstubs_DIR=${{ runner.temp }}/build-perfstubs/install/lib/cmake \
-DKokkos_DIR=${{ runner.temp }}/build-kokkos/install/lib/cmake/Kokkos \
-DKokkosKernels_DIR=${{ runner.temp }}/build-kokkos-kernels/install/lib/cmake/KokkosKernels/ \
-DPCMS_TEST_DATA_DIR=$PWD/pcms_testcases
- name: Configure pcms with Bear
if: matrix.clang_tidy == 'ON'
run: |
cd ${{ runner.temp }}/build-pcms
bear -- make -j 4
- name: Install clang-tidy
if: matrix.clang_tidy == 'ON'
run: |
sudo apt-get update
sudo apt-get install -yq clang-tidy-18
- name: Run clang-tidy
if: matrix.clang_tidy == 'ON'
run: |
EXIT_CODE=0
while read file; do
if ! clang-tidy -p ${{ runner.temp }}/build-pcms "$file" --quiet; then
echo "$file has clang-tidy issues"
EXIT_CODE=1
fi
done < <(find src -name "*.cpp" -o -name "*.hpp" -o -name "*.c" -o -name "*.h" -o -name "*.cc" -o -name "*.cxx" | grep -v 'src/pcms/capi/' | grep -v 'src/pcms/fortranapi/')
if [ $EXIT_CODE -eq 1 ]; then
echo "Some C/C++ files have clang-tidy issues. Please fix them with clang-tidy-18."
exit 1
fi
echo "All C/C++ files pass clang-tidy checks"