Attempt at themed CI targets re-organisation #2128
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
######################################################################################################################## | |
## EVE - Expressive Vector Engine | |
## Copyright : EVE Project Contributors | |
## SPDX-License-Identifier: BSL-1.0 | |
######################################################################################################################## | |
name: EVE - Unit Tests | |
on: | |
pull_request: | |
branches: | |
- main | |
concurrency: | |
group: unit-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
###################################################################################################################### | |
# Check External dependencies | |
###################################################################################################################### | |
externals: | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/jfalcou/compilers:v7 | |
options: -u root | |
strategy: | |
fail-fast: false | |
matrix: | |
cfg: | |
- { comp: clang, arch: x86 , opts: -msse2 } | |
- { comp: gcc , arch: x86 , opts: -msse2 } | |
steps: | |
- name: Install KUMI | |
run: | | |
mkdir 3rdparty | |
cd 3rdparty | |
git clone https://github.com/jfalcou/kumi.git | |
cd kumi | |
mkdir build | |
cd build | |
cmake .. -G Ninja | |
cmake --install . --prefix /usr | |
- name: Install RABERU | |
run: | | |
cd 3rdparty | |
git clone https://github.com/jfalcou/raberu.git | |
cd raberu | |
mkdir build | |
cd build | |
cmake .. -G Ninja | |
cmake --install . --prefix /usr | |
- name: Fetch current branch | |
uses: actions/[email protected] | |
- name: Prepare EVE with ${{ matrix.cfg.comp }} @ ${{ matrix.cfg.arch }} with ${{ matrix.cfg.opts }} | |
run: | | |
mkdir build | |
cd build | |
cmake .. -G Ninja -DEVE_OPTIONS="${{ matrix.cfg.opts }} -DEVE_USE_EXTERNAL_DEPENDENCIES" \ | |
-DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain/${{ matrix.cfg.comp }}.${{ matrix.cfg.arch }}.cmake | |
- name: Compile Unit Tests | |
run: | | |
cd build | |
ninja unit.exe -j 4 | |
- name: Running Unit Tests | |
run: | | |
cd build | |
ctest --output-on-failure -j 4 -E ^doc.*.exe | |
###################################################################################################################### | |
## Partially Supported Targets | |
###################################################################################################################### | |
riscv: | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/jfalcou/compilers:v8 | |
options: -u root | |
strategy: | |
fail-fast: false | |
matrix: | |
cfg: | |
- { comp: clang , arch: riscv, opts: "-mrvv-vector-bits=128" } | |
steps: | |
- name: Fetch current branch | |
uses: actions/[email protected] | |
- name: Running CMake for ${{ matrix.cfg.comp }} on ${{ matrix.cfg.arch }} with ${{ matrix.cfg.opts }} | |
run: | | |
mkdir build && cd build | |
cmake .. -G Ninja -DEVE_OPTIONS="${{ matrix.cfg.opts }}" -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain/${{ matrix.cfg.comp }}.${{ matrix.cfg.arch }}.cmake | |
- name: Compiling Unit Tests | |
run: cd build && ninja unit.meta.exe unit.arch.exe unit.core.bit_cast.exe -j 5 | |
- name: Running Unit Tests | |
run: cd build && ctest --output-on-failure -j 4 -R "^unit.meta.*.exe|^unit.arch.*.exe|unit.core.bit_cast.exe" | |
msvc: | |
runs-on: [windows-2022] | |
strategy: | |
fail-fast: false | |
matrix: | |
cfg: | |
- { mode: Debug, options: "-DEVE_NO_FORCEINLINE"} | |
steps: | |
- name: Fetch current branch | |
uses: actions/[email protected] | |
- name: Running CMake for MSVC ${{ matrix.cfg.mode }} ${{ matrix.cfg.options }} | |
run: | | |
mkdir build && cd build | |
cmake -G "Visual Studio 17 2022" -A x64 .. -DCMAKE_CXX_FLAGS="${{ matrix.cfg.options }}" | |
- name: Compiling Unit Tests | |
run: | | |
cd build | |
cmake --build . --target unit.arch.exe --config ${{ matrix.cfg.mode }} --parallel 2 | |
cmake --build . --target unit.meta.exe --config ${{ matrix.cfg.mode }} --parallel 2 | |
cmake --build . --target unit.internals.exe --config ${{ matrix.cfg.mode }} --parallel 2 | |
- name: Running Tests | |
run: | | |
cd build | |
ctest -C ${{ matrix.cfg.mode }} --output-on-failure -R ^unit.arch.*.exe | |
ctest -C ${{ matrix.cfg.mode }} --output-on-failure -R ^unit.meta.*.exe | |
ctest -C ${{ matrix.cfg.mode }} --output-on-failure -R ^unit.internals.*.exe | |
###################################################################################################################### | |
## AARCH64 Unit Tests | |
###################################################################################################################### | |
aarch64: | |
runs-on: [macos-14] | |
strategy: | |
fail-fast: false | |
matrix: | |
cfg: | |
- { comp: clang, arch: aarch64_osx} | |
steps: | |
- name: Fetch current branch | |
uses: actions/[email protected] | |
- name: Install Ninja | |
uses: seanmiddleditch/gha-setup-ninja@master | |
- name: Running CMake for ${{ matrix.cfg.comp }} on ${{ matrix.cfg.arch }} | |
run: | | |
mkdir build && cd build | |
cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain/${{ matrix.cfg.comp }}.${{ matrix.cfg.arch }}.cmake | |
- name: Compiling Unit Tests for Basic Support Modules | |
run: | | |
cd build | |
ninja unit.arch.exe unit.meta.exe unit.internals.exe unit.memory.exe -j 3 | |
- name: Compiling Unit Tests for API Modules | |
run: | | |
cd build | |
ninja unit.api.exe -j 3 | |
- name: Compiling Unit Tests for Core & Math Modules | |
run: | | |
cd build | |
ninja unit.core.exe unit.math.exe -j 3 | |
- name: Compiling Unit Tests for Algorithms Modules | |
run: | | |
cd build | |
ninja unit.algo.exe -j 3 | |
- name: Compiling Unit Tests for Advanced Maths Modules | |
run: | | |
cd build | |
ninja unit.bessel.exe unit.combinatorial.exe unit.elliptic.exe unit.polynomial.exe unit.special.exe -j 3 | |
- name: Running Unit Tests for Basic Support Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 3 -R ^unit.arch.*.exe && ctest --output-on-failure -j 3 -R ^unit.meta.*.exe \ | |
&& ctest --output-on-failure -j 3 -R ^unit.internals.*.exe && ctest --output-on-failure -j 3 -R ^unit.memory.*.exe | |
- name: Running Unit Tests for API Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 3 -R ^unit.api.*.exe | |
- name: Running Unit Tests for Core & Math Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 3 -R ^unit.core.*.exe && ctest --output-on-failure -j 4 -R ^unit.math.*.exe | |
- name: Running Unit Tests for Algorithms Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 3 -R ^unit.algo.*.exe | |
- name: Running Unit Tests for Advanced Maths Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 3 -R ^unit.bessel.*.exe && ctest --output-on-failure -j 3 -R ^unit.combinatorial.*.exe \ | |
&& ctest --output-on-failure -j 3 -R ^unit.elliptic.*.exe && ctest --output-on-failure -j 3 -R ^unit.polynomial.*.exe \ | |
&& ctest --output-on-failure -j 3 -R ^unit.special.*.exe | |
###################################################################################################################### | |
## Generic X86 Tests | |
###################################################################################################################### | |
generic-x86: | |
runs-on: [self-hosted, generic-x86] | |
container: | |
image: ghcr.io/jfalcou/compilers:v7 | |
options: -u root | |
strategy: | |
fail-fast: false | |
matrix: | |
cfg: | |
- { comp: clang , arch: x86 , opts: -DEVE_NO_SIMD , pch: "-DEVE_USE_PCH=ON" } | |
- { comp: clang , arch: x86 , opts: -msse2 , pch: "-DEVE_USE_PCH=OFF"} | |
- { comp: clang , arch: x86 , opts: -msse4.2 , pch: "-DEVE_USE_PCH=ON" } | |
- { comp: clang , arch: x86 , opts: -mavx , pch: "-DEVE_USE_PCH=ON" } | |
- { comp: clang , arch: x86 , opts: -mavx2 , pch: "-DEVE_USE_PCH=ON" } | |
- { comp: gcc , arch: x86 , opts: -DEVE_NO_SIMD , pch: "-DEVE_USE_PCH=ON" } | |
- { comp: gcc , arch: x86 , opts: -msse2 , pch: "-DEVE_USE_PCH=OFF"} | |
- { comp: gcc , arch: x86 , opts: -msse4.2 , pch: "-DEVE_USE_PCH=ON" } | |
- { comp: gcc , arch: x86 , opts: -mavx , pch: "-DEVE_USE_PCH=ON" } | |
- { comp: gcc , arch: x86 , opts: -mavx2 , pch: "-DEVE_USE_PCH=ON" } | |
steps: | |
- name: Fetch current branch | |
uses: actions/[email protected] | |
- name: Running CMake for ${{ matrix.cfg.comp }} on ${{ matrix.cfg.arch }} with ${{ matrix.cfg.opts }} | |
run: | | |
mkdir build && cd build | |
cmake .. -G Ninja -DEVE_OPTIONS="${{ matrix.cfg.opts }}" ${{ matrix.cfg.pch }} \ | |
-DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain/${{ matrix.cfg.comp }}.${{ matrix.cfg.arch }}.cmake | |
- name: Compiling Unit Tests for Basic Support Modules | |
run: | | |
cd build | |
ninja unit.arch.exe unit.meta.exe unit.internals.exe unit.memory.exe -j 8 | |
- name: Compiling Unit Tests for API Modules | |
run: | | |
cd build | |
ninja unit.api.exe -j 8 | |
- name: Compiling Unit Tests for Core & Math Modules | |
run: | | |
cd build | |
ninja unit.core.exe unit.math.exe -j 8 | |
- name: Compiling Unit Tests for Algorithms Modules | |
run: | | |
cd build | |
ninja unit.algo.exe -j 8 | |
- name: Compiling Unit Tests for Advanced Maths Modules | |
run: | | |
cd build | |
ninja unit.bessel.exe unit.combinatorial.exe unit.elliptic.exe unit.polynomial.exe unit.special.exe -j 8 | |
- name: Running Unit Tests for Basic Support Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 16 -R ^unit.arch.*.exe && ctest --output-on-failure -j 16 -R ^unit.meta.*.exe \ | |
&& ctest --output-on-failure -j 16 -R ^unit.internals.*.exe && ctest --output-on-failure -j 16 -R ^unit.memory.*.exe | |
- name: Running Unit Tests for API Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 16 -R ^unit.api.*.exe | |
- name: Running Unit Tests for Core & Math Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 16 -R ^unit.core.*.exe && ctest --output-on-failure -j 4 -R ^unit.math.*.exe | |
- name: Running Unit Tests for Algorithms Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 16 -R ^unit.algo.*.exe | |
- name: Running Unit Tests for Advanced Maths Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 16 -R ^unit.bessel.*.exe && ctest --output-on-failure -j 16 -R ^unit.combinatorial.*.exe \ | |
&& ctest --output-on-failure -j 16 -R ^unit.elliptic.*.exe && ctest --output-on-failure -j 16 -R ^unit.polynomial.*.exe \ | |
&& ctest --output-on-failure -j 16 -R ^unit.special.*.exe | |
###################################################################################################################### | |
## Special Arch Tests | |
###################################################################################################################### | |
special-arch: | |
runs-on: [self-hosted, generic-x86] | |
container: | |
image: ghcr.io/jfalcou/compilers:v7 | |
options: -u root | |
strategy: | |
fail-fast: false | |
matrix: | |
cfg: | |
- { comp: clang , arch: arm , opts: -Wno-psabi } | |
- { comp: gcc , arch: ppc64 , opts: -Wno-psabi } | |
- { comp: gcc , arch: sve256 , opts: -Wno-psabi } | |
- { comp: gcc , arch: sve512 , opts: -Wno-psabi } | |
steps: | |
- name: Fetch current branch | |
uses: actions/[email protected] | |
- name: Running CMake for ${{ matrix.cfg.comp }} on ${{ matrix.cfg.arch }} with ${{ matrix.cfg.opts }} | |
run: | | |
mkdir build && cd build | |
cmake .. -G Ninja -DEVE_OPTIONS="${{ matrix.cfg.opts }}" \ | |
-DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain/${{ matrix.cfg.comp }}.${{ matrix.cfg.arch }}.cmake | |
- name: Compiling Unit Tests for Basic Support Modules | |
run: | | |
cd build | |
ninja unit.arch.exe unit.meta.exe unit.internals.exe unit.memory.exe -j 8 | |
- name: Compiling Unit Tests for API Modules | |
run: | | |
cd build | |
ninja unit.api.exe -j 8 | |
- name: Compiling Unit Tests for Core & Math Modules | |
run: | | |
cd build | |
ninja unit.core.exe unit.math.exe -j 8 | |
- name: Compiling Unit Tests for Algorithms Modules | |
run: | | |
cd build | |
ninja unit.algo.exe -j 8 | |
- name: Compiling Unit Tests for Advanced Maths Modules | |
run: | | |
cd build | |
ninja unit.bessel.exe unit.combinatorial.exe unit.elliptic.exe unit.polynomial.exe unit.special.exe -j 8 | |
- name: Running Unit Tests for Basic Support Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 16 -R ^unit.arch.*.exe && ctest --output-on-failure -j 16 -R ^unit.meta.*.exe \ | |
&& ctest --output-on-failure -j 16 -R ^unit.internals.*.exe && ctest --output-on-failure -j 16 -R ^unit.memory.*.exe | |
- name: Running Unit Tests for API Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 16 -R ^unit.api.*.exe | |
- name: Running Unit Tests for Core & Math Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 16 -R ^unit.core.*.exe && ctest --output-on-failure -j 4 -R ^unit.math.*.exe | |
- name: Running Unit Tests for Algorithms Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 4 -R ^unit.algo.*.exe | |
- name: Running Unit Tests for Advanced Maths Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 16 -R ^unit.bessel.*.exe && ctest --output-on-failure -j 16 -R ^unit.combinatorial.*.exe \ | |
&& ctest --output-on-failure -j 16 -R ^unit.elliptic.*.exe && ctest --output-on-failure -j 16 -R ^unit.polynomial.*.exe \ | |
&& ctest --output-on-failure -j 16 -R ^unit.special.*.exe | |
###################################################################################################################### | |
## Extra X86 Tests | |
###################################################################################################################### | |
extra-x86: | |
runs-on: [self-hosted, avx512] | |
container: | |
image: ghcr.io/jfalcou/compilers:v7 | |
options: -u root | |
strategy: | |
fail-fast: false | |
matrix: | |
cfg: | |
- { comp: clang , arch: x86, opts: -march=skylake-avx512 } | |
- { comp: gcc , arch: x86, opts: -march=skylake-avx512 } | |
- { comp: clang_libcpp, arch: x86, opts: -msse2 } | |
- { comp: clang , arch: x86, opts: "-mavx2 -mbmi2 -DEVE_USE_BMI_ON_AVX2" } | |
- { comp: gcc , arch: x86, opts: "-mavx2 -mbmi2 -DEVE_USE_BMI_ON_AVX2" } | |
steps: | |
- name: Fetch current branch | |
uses: actions/[email protected] | |
- name: Running CMake for ${{ matrix.cfg.comp }} on ${{ matrix.cfg.arch }} with ${{ matrix.cfg.opts }} | |
run: | | |
mkdir build && cd build | |
cmake .. -G Ninja -DEVE_OPTIONS="${{ matrix.cfg.opts }}" \ | |
-DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain/${{ matrix.cfg.comp }}.${{ matrix.cfg.arch }}.cmake | |
- name: Compiling Unit Tests for Basic Support Modules | |
run: | | |
cd build | |
ninja unit.arch.exe unit.meta.exe unit.internals.exe unit.memory.exe -j 4 | |
- name: Compiling Unit Tests for API Modules | |
run: | | |
cd build | |
ninja unit.api.exe -j 4 | |
- name: Compiling Unit Tests for Core & Math Modules | |
run: | | |
cd build | |
ninja unit.core.exe unit.math.exe -j 4 | |
- name: Compiling Unit Tests for Algorithms Modules | |
run: | | |
cd build | |
ninja unit.algo.exe -j 4 | |
- name: Compiling Unit Tests for Advanced Maths Modules | |
run: | | |
cd build | |
ninja unit.bessel.exe unit.combinatorial.exe unit.elliptic.exe unit.polynomial.exe unit.special.exe -j 4 | |
- name: Running Unit Tests for Basic Support Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 8 -R ^unit.arch.*.exe && ctest --output-on-failure -j 8 -R ^unit.meta.*.exe \ | |
&& ctest --output-on-failure -j 8 -R ^unit.internals.*.exe && ctest --output-on-failure -j 8 -R ^unit.memory.*.exe | |
- name: Running Unit Tests for API Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 8 -R ^unit.api.*.exe | |
- name: Running Unit Tests for Core & Math Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 8 -R ^unit.core.*.exe && ctest --output-on-failure -j 8 -R ^unit.math.*.exe | |
- name: Running Unit Tests for Algorithms Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 8 -R ^unit.algo.*.exe | |
- name: Running Unit Tests for Advanced Maths Modules | |
run: | | |
cd build | |
ctest --output-on-failure -j 8 -R ^unit.bessel.*.exe && ctest --output-on-failure -j 8 -R ^unit.combinatorial.*.exe \ | |
&& ctest --output-on-failure -j 8 -R ^unit.elliptic.*.exe && ctest --output-on-failure -j 8 -R ^unit.polynomial.*.exe \ | |
&& ctest --output-on-failure -j 8 -R ^unit.special.*.exe |