Skip to content

Attempt at themed CI targets re-organisation #2128

Attempt at themed CI targets re-organisation

Attempt at themed CI targets re-organisation #2128

Workflow file for this run

########################################################################################################################
## 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