Skip to content

Update README.md (#245) #1300

Update README.md (#245)

Update README.md (#245) #1300

Workflow file for this run

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