Update README.md (#245) #1300
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build application | |
on: | |
push: | |
pull_request: | |
merge_group: | |
schedule: | |
- cron: '0 0,6,12,18 * * *' | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} | |
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }} | |
jobs: | |
clang-format: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: DoozyX/[email protected] | |
with: | |
source: '.' | |
python-lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup environment | |
run: | | |
python3 -m pip install flake8 | |
- name: Run linter | |
run: | | |
python3 -m flake8 . | |
ubuntu-gcc-build: | |
needs: | |
- clang-format | |
- python-lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup environment | |
run: | | |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test | |
sudo apt-get update | |
sudo apt-get install gcc-14 g++-14 | |
sudo apt-get install ninja-build | |
sudo apt-get install mpich | |
sudo apt-get install libomp-dev | |
sudo apt-get install valgrind | |
python3 -m pip install -r requirements.txt | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }} | |
create-symlink: true | |
max-size: 1G | |
- name: CMake configure | |
run: > | |
cmake -S . -B build | |
-D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON | |
-D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON | |
-D CMAKE_BUILD_TYPE=RELEASE | |
env: | |
CC: gcc-14 | |
CXX: g++-14 | |
- name: Archive revert list | |
uses: actions/[email protected] | |
with: | |
name: revert-list | |
path: build/revert-list.txt | |
- name: Build project | |
run: | | |
cmake --build build --parallel | |
env: | |
CC: gcc-14 | |
CXX: g++-14 | |
- name: Run func tests (MPI, num_proc=1) | |
run: | | |
source scripts/run_mpi.sh | |
env: | |
PROC_COUNT: 1 | |
OMP_NUM_THREADS: 3 | |
- name: Run func tests (MPI, num_proc=2) | |
run: | | |
source scripts/run_mpi.sh | |
env: | |
PROC_COUNT: 2 | |
OMP_NUM_THREADS: 2 | |
- name: Run func tests (MPI, num_proc=3) | |
run: | | |
source scripts/run_mpi.sh | |
env: | |
PROC_COUNT: 3 | |
OMP_NUM_THREADS: 1 | |
- name: Run func tests (MPI, num_proc=4) | |
run: | | |
source scripts/run_mpi.sh | |
env: | |
PROC_COUNT: 4 | |
OMP_NUM_THREADS: 1 | |
- name: Run func tests (threads, num_threads=1) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 1 | |
- name: Run func tests (threads, num_threads=2) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 2 | |
- name: Run func tests (threads, num_threads=3) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 3 | |
- name: Run func tests (threads, num_threads=4) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 4 | |
ubuntu-gcc-build-extended: | |
needs: | |
- ubuntu-gcc-build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup environment | |
run: | | |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test | |
sudo apt-get update | |
sudo apt-get install gcc-14 g++-14 | |
sudo apt-get install ninja-build | |
sudo apt-get install mpich | |
sudo apt-get install libomp-dev | |
sudo apt-get install valgrind | |
python3 -m pip install -r requirements.txt | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }} | |
create-symlink: true | |
max-size: 1G | |
- name: CMake configure | |
run: > | |
cmake -S . -B build | |
-D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON | |
-D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON | |
-D CMAKE_BUILD_TYPE=RELEASE | |
env: | |
CC: gcc-14 | |
CXX: g++-14 | |
- name: Build project | |
run: | | |
cmake --build build --parallel | |
env: | |
CC: gcc-14 | |
CXX: g++-14 | |
- name: Run func tests (threads, num_threads=5) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 5 | |
- name: Run func tests (threads, num_threads=6) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 6 | |
- name: Run func tests (threads, num_threads=7) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 7 | |
- name: Run func tests (threads, num_threads=8) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 8 | |
- name: Run func tests (threads, num_threads=11) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 11 | |
- name: Run func tests (threads, num_threads=13) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 13 | |
- name: Run func tests (threads, num_threads=15) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 15 | |
- name: Run func tests (threads, num_threads=16) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 16 | |
ubuntu-clang-build: | |
needs: | |
- clang-format | |
- python-lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup environment | |
run: | | |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test | |
sudo apt-get update | |
sudo apt-get install ninja-build | |
sudo apt-get install mpich | |
sudo apt-get install python3-pip | |
sudo apt-get install valgrind | |
wget https://apt.llvm.org/llvm.sh | |
chmod u+x llvm.sh | |
sudo ./llvm.sh 19 all | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }} | |
create-symlink: true | |
max-size: 1G | |
- name: CMake configure | |
run: > | |
cmake -S . -B build | |
-G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON | |
-D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON | |
-D CMAKE_BUILD_TYPE=RELEASE | |
env: | |
CC: clang-19 | |
CXX: clang++-19 | |
- name: Build project | |
run: | | |
cmake --build build --parallel | |
env: | |
CC: clang-19 | |
CXX: clang++-19 | |
- name: Run func tests (MPI, num_proc=1) | |
run: | | |
source scripts/run_mpi.sh | |
env: | |
PROC_COUNT: 1 | |
OMP_NUM_THREADS: 3 | |
- name: Run func tests (MPI, num_proc=2) | |
run: | | |
source scripts/run_mpi.sh | |
env: | |
PROC_COUNT: 2 | |
OMP_NUM_THREADS: 2 | |
- name: Run func tests (MPI, num_proc=3) | |
run: | | |
source scripts/run_mpi.sh | |
env: | |
PROC_COUNT: 3 | |
OMP_NUM_THREADS: 1 | |
- name: Run func tests (MPI, num_proc=4) | |
run: | | |
source scripts/run_mpi.sh | |
env: | |
PROC_COUNT: 4 | |
OMP_NUM_THREADS: 1 | |
- name: Run tests (threads, num_threads=1) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 1 | |
- name: Run tests (threads, num_threads=2) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 2 | |
- name: Run tests (threads, num_threads=3) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 3 | |
- name: Run tests (threads, num_threads=4) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 4 | |
ubuntu-clang-build-extended: | |
needs: | |
- ubuntu-clang-build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup environment | |
run: | | |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test | |
sudo apt-get update | |
sudo apt-get install ninja-build | |
sudo apt-get install mpich | |
sudo apt-get install python3-pip | |
sudo apt-get install valgrind | |
wget https://apt.llvm.org/llvm.sh | |
chmod u+x llvm.sh | |
sudo ./llvm.sh 19 all | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }} | |
create-symlink: true | |
max-size: 1G | |
- name: CMake configure | |
run: > | |
cmake -S . -B build | |
-G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON | |
-D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON | |
-D CMAKE_BUILD_TYPE=RELEASE | |
env: | |
CC: clang-19 | |
CXX: clang++-19 | |
- name: Build project | |
run: | | |
cmake --build build --parallel | |
env: | |
CC: clang-19 | |
CXX: clang++-19 | |
- name: Run tests (threads, num_threads=5) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 5 | |
- name: Run tests (threads, num_threads=6) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 6 | |
- name: Run tests (threads, num_threads=7) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 7 | |
- name: Run tests (threads, num_threads=8) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 8 | |
- name: Run tests (threads, num_threads=11) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 11 | |
- name: Run tests (threads, num_threads=13) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 13 | |
- name: Run tests (threads, num_threads=15) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 15 | |
- name: Run tests (threads, num_threads=16) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 16 | |
ubuntu-clang-sanitizer-build: | |
needs: | |
- ubuntu-clang-build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup environment | |
run: | | |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test | |
sudo apt-get update | |
sudo apt-get install ninja-build | |
sudo apt-get install mpich libmpich* mpi* openmpi-bin | |
sudo apt-get install python3-pip | |
wget https://apt.llvm.org/llvm.sh | |
chmod u+x llvm.sh | |
sudo ./llvm.sh 19 all | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }} | |
create-symlink: true | |
max-size: 1G | |
- name: CMake configure | |
run: > | |
cmake -S . -B build | |
-D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON | |
-D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON | |
-D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON | |
env: | |
CC: clang-19 | |
CXX: clang++-19 | |
- name: Build project | |
run: | | |
cmake --build build --parallel | |
env: | |
CC: clang-19 | |
CXX: clang++-19 | |
- name: Run tests (MPI) | |
run: | | |
source scripts/run_mpi.sh "--oversubscribe" | |
env: | |
PROC_COUNT: 2 | |
OMP_NUM_THREADS: 2 | |
ASAN_RUN: 1 | |
ASAN_OPTIONS: abort_on_error=1 | |
UBSAN_OPTIONS: halt_on_error=1 | |
- name: Run tests (threads, num_threads=1) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 1 | |
ASAN_RUN: 1 | |
ASAN_OPTIONS: abort_on_error=1 | |
UBSAN_OPTIONS: halt_on_error=1 | |
- name: Run tests (threads, num_threads=2) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 2 | |
ASAN_RUN: 1 | |
ASAN_OPTIONS: abort_on_error=1 | |
UBSAN_OPTIONS: halt_on_error=1 | |
- name: Run tests (threads, num_threads=3) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 3 | |
ASAN_RUN: 1 | |
ASAN_OPTIONS: abort_on_error=1 | |
UBSAN_OPTIONS: halt_on_error=1 | |
- name: Run tests (threads, num_threads=4) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 4 | |
ASAN_RUN: 1 | |
ASAN_OPTIONS: abort_on_error=1 | |
UBSAN_OPTIONS: halt_on_error=1 | |
ubuntu-clang-sanitizer-build-extended: | |
needs: | |
- ubuntu-clang-sanitizer-build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup environment | |
run: | | |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test | |
sudo apt-get update | |
sudo apt-get install ninja-build | |
sudo apt-get install mpich libmpich* mpi* openmpi-bin | |
sudo apt-get install python3-pip | |
wget https://apt.llvm.org/llvm.sh | |
chmod u+x llvm.sh | |
sudo ./llvm.sh 19 all | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }} | |
create-symlink: true | |
max-size: 1G | |
- name: CMake configure | |
run: > | |
cmake -S . -B build | |
-D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON | |
-D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON | |
-D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON | |
env: | |
CC: clang-19 | |
CXX: clang++-19 | |
- name: Build project | |
run: | | |
cmake --build build --parallel | |
env: | |
CC: clang-19 | |
CXX: clang++-19 | |
- name: Run tests (threads, num_threads=5) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 5 | |
ASAN_RUN: 1 | |
- name: Run tests (threads, num_threads=6) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 6 | |
ASAN_RUN: 1 | |
- name: Run tests (threads, num_threads=7) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 7 | |
ASAN_RUN: 1 | |
- name: Run tests (threads, num_threads=8) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 8 | |
ASAN_RUN: 1 | |
- name: Run tests (threads, num_threads=11) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 11 | |
ASAN_RUN: 1 | |
- name: Run tests (threads, num_threads=13) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 13 | |
ASAN_RUN: 1 | |
- name: Run tests (threads, num_threads=15) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 15 | |
ASAN_RUN: 1 | |
- name: Run tests (threads, num_threads=16) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 16 | |
ASAN_RUN: 1 | |
macos-clang-build: | |
needs: | |
- clang-format | |
- python-lint | |
runs-on: macOS-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup environment | |
run: | | |
brew update-reset | |
brew install ninja mpich llvm | |
brew install libomp | |
brew link libomp --overwrite --force | |
brew install openssl | |
brew link openssl --overwrite --force | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }} | |
create-symlink: true | |
max-size: 1G | |
- name: CMake configure | |
run: > | |
cmake -S . -B build | |
-D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON | |
-DCMAKE_C_FLAGS="-I$(brew --prefix)/opt/libomp/include" -DCMAKE_CXX_FLAGS="-I$(brew --prefix)/opt/libomp/include" | |
-D CMAKE_BUILD_TYPE=RELEASE -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON | |
- name: Build project | |
run: | | |
cmake --build build --parallel | |
- name: Run func tests (MPI, num_proc=1) | |
run: | | |
source scripts/run_mpi.sh | |
env: | |
PROC_COUNT: 1 | |
OMP_NUM_THREADS: 3 | |
- name: Run func tests (MPI, num_proc=2) | |
run: | | |
source scripts/run_mpi.sh | |
env: | |
PROC_COUNT: 2 | |
OMP_NUM_THREADS: 2 | |
- name: Run func tests (MPI, num_proc=3) | |
run: | | |
source scripts/run_mpi.sh | |
env: | |
PROC_COUNT: 3 | |
OMP_NUM_THREADS: 1 | |
- name: Run func tests (MPI, num_proc=4) | |
run: | | |
source scripts/run_mpi.sh | |
env: | |
PROC_COUNT: 4 | |
OMP_NUM_THREADS: 1 | |
- name: Run tests (threads, num_threads=1) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 1 | |
- name: Run tests (threads, num_threads=2) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 2 | |
- name: Run tests (threads, num_threads=3) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 3 | |
- name: Run tests (threads, num_threads=4) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 4 | |
macos-clang-build-extended: | |
needs: | |
- macos-clang-build | |
runs-on: macOS-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup environment | |
run: | | |
brew update-reset | |
brew install ninja mpich llvm | |
brew install libomp | |
brew link libomp --overwrite --force | |
brew install openssl | |
brew link openssl --overwrite --force | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }} | |
create-symlink: true | |
max-size: 1G | |
- name: CMake configure | |
run: > | |
cmake -S . -B build | |
-D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON | |
-DCMAKE_C_FLAGS="-I$(brew --prefix)/opt/libomp/include" -DCMAKE_CXX_FLAGS="-I$(brew --prefix)/opt/libomp/include" | |
-D CMAKE_BUILD_TYPE=RELEASE -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON | |
- name: Build project | |
run: | | |
cmake --build build --parallel | |
- name: Run tests (threads, num_threads=5) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 5 | |
- name: Run tests (threads, num_threads=6) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 6 | |
- name: Run tests (threads, num_threads=7) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 7 | |
- name: Run tests (threads, num_threads=8) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 8 | |
- name: Run tests (threads, num_threads=11) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 11 | |
- name: Run tests (threads, num_threads=13) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 13 | |
- name: Run tests (threads, num_threads=15) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 15 | |
- name: Run tests (threads, num_threads=16) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 16 | |
windows-msvc-build: | |
needs: | |
- clang-format | |
- python-lint | |
runs-on: windows-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@v2 | |
with: | |
vs-version: 'latest' | |
- name: Setup MPI | |
uses: mpi4py/setup-mpi@v1 | |
with: | |
mpi: msmpi | |
- name: Download dependencies | |
run: | | |
choco install openssl --execution-timeout 6000 | |
- name: Setup ccache | |
uses: Chocobo1/setup-ccache-action@v1 | |
with: | |
windows_compile_environment: msvc | |
- name: Setup ninja | |
uses: seanmiddleditch/gha-setup-ninja@master | |
- name: Setup MSVC for Ninja again | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: CMake configure | |
shell: bash | |
run: > | |
cmake -S . -B build -G Ninja -D CMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl | |
-D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON | |
-D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON | |
-D CMAKE_BUILD_TYPE=RELEASE | |
- name: Build project | |
shell: bash | |
run: | | |
cmake --build build --config Release --parallel | |
- name: Run tests (threads, num_threads=1) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 1 | |
- name: Run tests (threads, num_threads=2) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 2 | |
- name: Run tests (threads, num_threads=3) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 3 | |
- name: Run tests (threads, num_threads=4) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 4 | |
windows-msvc-build-extended: | |
needs: | |
- windows-msvc-build | |
runs-on: windows-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@v2 | |
with: | |
vs-version: 'latest' | |
- name: Setup MPI | |
uses: mpi4py/setup-mpi@v1 | |
with: | |
mpi: msmpi | |
- name: Download dependencies | |
run: | | |
choco install openssl --execution-timeout 6000 | |
- name: Setup ccache | |
uses: Chocobo1/setup-ccache-action@v1 | |
with: | |
windows_compile_environment: msvc | |
- name: Setup ninja | |
uses: seanmiddleditch/gha-setup-ninja@master | |
- name: Setup MSVC for Ninja again | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: CMake configure | |
shell: bash | |
run: > | |
cmake -S . -B build -G Ninja -D CMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl | |
-D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON | |
-D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON | |
-D CMAKE_BUILD_TYPE=RELEASE | |
- name: Build project | |
shell: bash | |
run: | | |
cmake --build build --config Release --parallel | |
- name: Run tests (threads, num_threads=5) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 5 | |
- name: Run tests (threads, num_threads=6) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 6 | |
- name: Run tests (threads, num_threads=7) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 7 | |
- name: Run tests (threads, num_threads=8) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 8 | |
- name: Run tests (threads, num_threads=11) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 11 | |
- name: Run tests (threads, num_threads=13) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 13 | |
- name: Run tests (threads, num_threads=15) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 15 | |
- name: Run tests (threads, num_threads=16) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 16 | |
windows-clang-build: | |
needs: | |
- clang-format | |
- python-lint | |
runs-on: windows-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@v2 | |
with: | |
vs-version: 'latest' | |
- name: Setup ninja | |
uses: seanmiddleditch/gha-setup-ninja@master | |
- name: Setup MSVC for Ninja again | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: CMake configure | |
run: > | |
cmake -S . -B build -D CMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl | |
-D USE_SEQ=ON -D USE_MPI=OFF -D USE_OMP=OFF -D USE_TBB=ON -D USE_STL=ON | |
-D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON | |
-D CMAKE_BUILD_TYPE=RELEASE | |
env: | |
CC: clang-cl | |
CXX: clang-cl | |
- name: Build project | |
run: | | |
cmake --build build --config Release --parallel -v | |
env: | |
CC: clang-cl | |
CXX: clang-cl | |
- name: Run tests (threads, num_threads=1) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 1 | |
CLANG_BUILD: 1 | |
- name: Run tests (threads, num_threads=2) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 2 | |
CLANG_BUILD: 1 | |
- name: Run tests (threads, num_threads=3) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 3 | |
CLANG_BUILD: 1 | |
- name: Run tests (threads, num_threads=4) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 4 | |
CLANG_BUILD: 1 | |
windows-clang-build-extended: | |
needs: | |
- windows-clang-build | |
runs-on: windows-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@v2 | |
with: | |
vs-version: 'latest' | |
- name: Setup ninja | |
uses: seanmiddleditch/gha-setup-ninja@master | |
- name: Setup MSVC for Ninja again | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: CMake configure | |
run: > | |
cmake -S . -B build -D CMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl | |
-D USE_SEQ=ON -D USE_MPI=OFF -D USE_OMP=OFF -D USE_TBB=ON -D USE_STL=ON | |
-D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON | |
-D CMAKE_BUILD_TYPE=RELEASE | |
env: | |
CC: clang-cl | |
CXX: clang-cl | |
- name: Build project | |
run: | | |
cmake --build build --config Release --parallel -v | |
env: | |
CC: clang-cl | |
CXX: clang-cl | |
- name: Run tests (threads, num_threads=5) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 5 | |
CLANG_BUILD: 1 | |
- name: Run tests (threads, num_threads=6) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 6 | |
CLANG_BUILD: 1 | |
- name: Run tests (threads, num_threads=7) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 7 | |
CLANG_BUILD: 1 | |
- name: Run tests (threads, num_threads=8) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 8 | |
CLANG_BUILD: 1 | |
- name: Run tests (threads, num_threads=11) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 11 | |
CLANG_BUILD: 1 | |
- name: Run tests (threads, num_threads=13) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 13 | |
CLANG_BUILD: 1 | |
- name: Run tests (threads, num_threads=15) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 15 | |
CLANG_BUILD: 1 | |
- name: Run tests (threads, num_threads=16) | |
run: scripts/run.bat | |
env: | |
OMP_NUM_THREADS: 16 | |
CLANG_BUILD: 1 | |
ubuntu-gcc-build-codecov: | |
needs: | |
- ubuntu-gcc-build-extended | |
- ubuntu-clang-build-extended | |
- macos-clang-build-extended | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup environment | |
run: | | |
sudo apt-get update | |
sudo apt-get install gcc-14 g++-14 | |
sudo apt-get install ninja-build | |
sudo apt-get install mpich | |
sudo apt-get install libomp-dev | |
sudo apt-get install valgrind | |
sudo apt-get install gcovr | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }} | |
create-symlink: true | |
max-size: 1G | |
- name: CMake configure | |
run: > | |
cmake -S . -B build | |
-D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON | |
-D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON | |
-D CMAKE_BUILD_TYPE=RELEASE | |
-D CMAKE_VERBOSE_MAKEFILE=ON | |
-D USE_COVERAGE=ON | |
- name: Build project | |
run: | | |
cmake --build build --parallel | |
- name: Run tests (MPI) | |
run: | | |
source scripts/run_mpi.sh | |
env: | |
PROC_COUNT: 2 | |
OMP_NUM_THREADS: 2 | |
- name: Run tests (threads, num_threads=1) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 1 | |
- name: Run tests (threads, num_threads=2) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 2 | |
- name: Run tests (threads, num_threads=3) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 3 | |
- name: Run tests (threads, num_threads=4) | |
run: source scripts/run_threads.sh | |
env: | |
OMP_NUM_THREADS: 4 | |
- name: Generate gcovr Coverage Data | |
run: | | |
mkdir cov-report | |
cd build | |
gcovr -r ../ \ | |
--exclude '.*3rdparty/.*' \ | |
--exclude '/usr/.*' \ | |
--exclude '.*/perf_tests/.*' \ | |
--exclude '.*/func_tests/.*' \ | |
--exclude '.*/all/runner.cpp' \ | |
--exclude '.*/mpi/runner.cpp' \ | |
--exclude '.*/omp/runner.cpp' \ | |
--exclude '.*/seq/runner.cpp' \ | |
--exclude '.*/stl/runner.cpp' \ | |
--exclude '.*/tbb/runner.cpp' \ | |
--xml --output ../coverage.xml \ | |
--html=../cov-report/index.html --html-details | |
- name: Upload coverage reports to Codecov | |
uses: codecov/[email protected] | |
with: | |
token: db9388ce-cf24-4840-b282-8e0070d8666f | |
files: coverage.xml | |
- name: Upload coverage report artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cov-report | |
path: 'cov-report' | |
ubuntu-gcc-build-perf-stats: | |
needs: | |
- ubuntu-gcc-build-codecov | |
- ubuntu-clang-sanitizer-build-extended | |
- windows-clang-build-extended | |
- windows-msvc-build-extended | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup environment | |
run: | | |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test | |
sudo apt-get update | |
sudo apt-get install gcc-14 g++-14 | |
sudo apt-get install ninja-build | |
sudo apt-get install mpich | |
sudo apt-get install libomp-dev | |
sudo apt-get install valgrind | |
python3 -m pip install -r requirements.txt | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }} | |
create-symlink: true | |
max-size: 1G | |
- name: CMake configure | |
run: > | |
cmake -S . -B build | |
-D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON | |
-D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON | |
-D CMAKE_BUILD_TYPE=RELEASE | |
env: | |
CC: gcc-14 | |
CXX: g++-14 | |
- name: Build project | |
run: | | |
cmake --build build --parallel | |
env: | |
CC: gcc-14 | |
CXX: g++-14 | |
- name: Run perf count checker | |
run: | | |
source scripts/run_perf_count_checker.sh | |
- name: Run perf tests | |
run: | | |
source scripts/generate_perf_results.sh | |
- name: Archive results | |
uses: montudor/action-zip@v1 | |
with: | |
args: zip -qq -r perf-stat.zip build/perf_stat_dir | |
- name: Upload results | |
uses: actions/[email protected] | |
with: | |
name: perf-stat | |
path: perf-stat.zip |