-
Notifications
You must be signed in to change notification settings - Fork 166
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update syntax and separate benchmarks CI
- Loading branch information
1 parent
399a4a4
commit e67e1e2
Showing
8 changed files
with
305 additions
and
356 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,240 @@ | ||
############################################################################## | ||
# Copyright Christopher Kormanyos 2021 - 2024. | ||
# Distributed under the Boost Software License, | ||
# Version 1.0. (See accompanying file LICENSE_1_0.txt | ||
# or copy at http://www.boost.org/LICENSE_1_0.txt) | ||
|
||
name: real-time-cpp-benchmarks | ||
on: | ||
push: | ||
branches: | ||
- '**' | ||
pull_request: | ||
schedule: | ||
- cron: '51 23 * * *' # run at 11:51 PM UTC | ||
jobs: | ||
benchmark_gcc-clang: | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
shell: bash | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
compiler: [ g++, clang++ ] | ||
standard: [ c++14, c++17, c++20 ] | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: '0' | ||
- name: clone-submods-bootstrap-headers-boost-develop | ||
run: | | ||
git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root | ||
cd ../boost-root | ||
git submodule update --init tools | ||
git submodule update --init libs/config | ||
git submodule update --init libs/math | ||
git submodule update --init libs/multiprecision | ||
./bootstrap.sh | ||
./b2 headers | ||
working-directory: ./ | ||
- name: clone-cppalliance-decimal | ||
run: | | ||
git clone -b develop --depth 1 https://github.com/cppalliance/decimal.git ../cppalliance-decimal-root | ||
working-directory: ./ | ||
- name: benchmark_gcc-clang | ||
run: ./target/build/test_app_benchmarks.sh ${{ matrix.compiler }} ${{ matrix.standard }} | ||
working-directory: ./ref_app/ | ||
benchmark_apple-clang: | ||
runs-on: macos-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
compiler: [ g++, clang++ ] | ||
standard: [ c++14, c++17, c++20 ] | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: '0' | ||
- name: clone-submods-bootstrap-headers-boost-develop | ||
run: | | ||
git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root | ||
cd ../boost-root | ||
git submodule update --init tools | ||
git submodule update --init libs/config | ||
git submodule update --init libs/math | ||
git submodule update --init libs/multiprecision | ||
./bootstrap.sh | ||
./b2 headers | ||
working-directory: ./ | ||
- name: clone-cppalliance-decimal | ||
run: | | ||
git clone -b develop --depth 1 https://github.com/cppalliance/decimal.git ../cppalliance-decimal-root | ||
working-directory: ./ | ||
- name: benchmark_apple-clang | ||
run: ./target/build/test_app_benchmarks.sh ${{ matrix.compiler }} ${{ matrix.standard }} | ||
working-directory: ./ref_app/ | ||
benchmark_builds-avr: | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
shell: bash | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
standard: [ c++14 ] | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: '0' | ||
- name: update-tools | ||
run: sudo apt install gcc-avr avr-libc | ||
- name: benchmark_builds-avr | ||
run: ./target/build/test_app_benchmarks_avr.sh ${{ matrix.standard }} | ||
working-directory: ./ref_app/ | ||
benchmark_builds-stm32f446: | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
shell: bash | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
standard: [ c++14, c++17, c++2a ] | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: '0' | ||
- name: update-tools | ||
run: sudo apt install gcc-arm-none-eabi | ||
- name: clone-submods-bootstrap-headers-boost-develop | ||
run: | | ||
git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root | ||
cd ../boost-root | ||
git submodule update --init tools | ||
git submodule update --init libs/config | ||
git submodule update --init libs/math | ||
git submodule update --init libs/multiprecision | ||
./bootstrap.sh | ||
./b2 headers | ||
working-directory: ./ | ||
- name: clone-cppalliance-decimal | ||
run: | | ||
git clone -b develop --depth 1 https://github.com/cppalliance/decimal.git ../cppalliance-decimal-root | ||
working-directory: ./ | ||
- name: benchmark_builds-stm32f446 | ||
run: ./target/build/test_app_benchmarks_stm32f446.sh ${{ matrix.standard }} | ||
working-directory: ./ref_app/ | ||
benchmark_single-stm32f446: | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
shell: bash | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: '0' | ||
- name: update-tools | ||
run: sudo apt install gcc-arm-none-eabi | ||
- name: benchmark_single-stm32f446 | ||
run: | | ||
mkdir -p bin | ||
arm-none-eabi-g++ -std=c++14 -Wall -Wextra -pedantic -O2 -g -gdwarf-2 -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -mcpu=cortex-m4 -mtune=cortex-m4 -mthumb -mfloat-abi=soft -mno-unaligned-access -mno-long-calls -I./src/mcal/stm32f446 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_CRC -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_crc.cpp ./target/micros/stm32f446/make/single/crt.cpp -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_crc.map -T ./target/micros/stm32f446/make/stm32f446.ld -o ./bin/app_benchmark_crc.elf | ||
arm-none-eabi-objcopy ./bin/app_benchmark_crc.elf -O ihex ./bin/app_benchmark_crc.hex | ||
ls -la ./bin/app_benchmark_crc.elf ./bin/app_benchmark_crc.hex ./bin/app_benchmark_crc.map | ||
working-directory: ./ref_app/ | ||
benchmark_single-cnl: | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
shell: bash | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
compiler: [ g++, clang++ ] | ||
standard: [ c++20 ] | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: '0' | ||
- name: benchmark_single-cnl | ||
run: | | ||
git clone -b main --depth 1 https://github.com/johnmcfarlane/cnl.git ../cnl-root | ||
mkdir -p bin | ||
${{ matrix.compiler }} -std=${{ matrix.standard }} -Wall -Werror -O3 -march=native -fsanitize=address -I./src -I../cnl-root/include -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_CNL_SCALED_INTEGER -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_cnl_scaled_integer.cpp -o ./bin/app_benchmark_cnl_scaled_integer.exe | ||
ls -la ./bin/app_benchmark_cnl_scaled_integer.exe | ||
./bin/app_benchmark_cnl_scaled_integer.exe | ||
working-directory: ./ref_app/ | ||
benchmark_single-stm32f429-qemu-cnl: | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
shell: bash | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: '0' | ||
- name: update-tools | ||
run: | | ||
sudo apt install libncurses5 libpython2.7 | ||
mkdir -p emu_env && cd emu_env | ||
wget --no-check-certificate https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 | ||
tar -xvf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 | ||
wget --no-check-certificate https://github.com/xpack-dev-tools/qemu-arm-xpack/releases/download/v7.1.0-1/xpack-qemu-arm-7.1.0-1-linux-x64.tar.gz | ||
tar -xvzf xpack-qemu-arm-7.1.0-1-linux-x64.tar.gz | ||
working-directory: ./ref_app/ | ||
- name: benchmark_single-stm32f429-qemu-cnl | ||
run: | | ||
git clone -b main --depth 1 https://github.com/johnmcfarlane/cnl.git ../cnl-root | ||
mkdir -p bin | ||
./emu_env/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-g++ -std=c++20 -Wall -Wextra -pedantic -O2 -g -gdwarf-2 -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=128 -mcpu=cortex-m4 -mtune=cortex-m4 -mthumb -mfloat-abi=soft -mno-unaligned-access -mno-long-calls -I./src/mcal/stm32f429 -I./src -I../cnl-root/include -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_CNL_SCALED_INTEGER -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_cnl_scaled_integer.cpp ./target/micros/stm32f429/make/single/crt.cpp -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_cnl_scaled_integer.map -T ./target/micros/stm32f429/make/stm32f429.ld -o ./bin/app_benchmark_cnl_scaled_integer.elf | ||
./emu_env/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-objcopy ./bin/app_benchmark_cnl_scaled_integer.elf -O ihex ./bin/app_benchmark_cnl_scaled_integer.hex | ||
ls -la ./bin/app_benchmark_cnl_scaled_integer.elf ./bin/app_benchmark_cnl_scaled_integer.hex ./bin/app_benchmark_cnl_scaled_integer.map | ||
working-directory: ./ref_app/ | ||
- name: emulate-target stm32f429 | ||
run: | | ||
./emu_env/xpack-qemu-arm-7.1.0-1/bin/qemu-system-gnuarmeclipse --verbose --mcu STM32F429ZI --nographic --gdb tcp::9999 -d unimp,guest_errors & | ||
working-directory: ./ref_app/ | ||
- name: run-test-on-target | ||
run: | | ||
./emu_env/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gdb-py ./bin/app_benchmark_cnl_scaled_integer.elf -x ./target/build/test_app_benchmarks_emulator.py | ||
qemu_result=$? | ||
echo "qemu_result" "$qemu_result" | ||
echo "qemu_result" "$qemu_result" | grep 'qemu_result 0' | ||
working-directory: ./ref_app/ | ||
benchmark_single-stm32f429-qemu: | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
shell: bash | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: '0' | ||
- name: update-tools | ||
run: | | ||
sudo apt install libncurses5 libpython2.7 | ||
mkdir -p emu_env && cd emu_env | ||
wget --no-check-certificate https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 | ||
tar -xvf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 | ||
wget --no-check-certificate https://github.com/xpack-dev-tools/qemu-arm-xpack/releases/download/v7.1.0-1/xpack-qemu-arm-7.1.0-1-linux-x64.tar.gz | ||
tar -xvzf xpack-qemu-arm-7.1.0-1-linux-x64.tar.gz | ||
working-directory: ./ref_app/ | ||
- name: build benchmark_single-stm32f429 | ||
run: | | ||
mkdir -p bin | ||
emu_env/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-g++ -std=c++20 -Wall -Wextra -pedantic -O0 -g -gdwarf-2 -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -mcpu=cortex-m4 -mtune=cortex-m4 -mthumb -mfloat-abi=soft -mno-unaligned-access -mno-long-calls -I./src/mcal/stm32f429 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_CRC -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_crc.cpp ./target/micros/stm32f429/make/single/crt.cpp -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_crc.map -T ./target/micros/stm32f429/make/stm32f429.ld --specs=nano.specs --specs=nosys.specs -o ./bin/app_benchmark_crc.elf | ||
emu_env/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-objcopy ./bin/app_benchmark_crc.elf -O ihex ./bin/app_benchmark_crc.hex | ||
ls -la ./bin/app_benchmark_crc.elf ./bin/app_benchmark_crc.hex ./bin/app_benchmark_crc.map | ||
working-directory: ./ref_app/ | ||
- name: emulate-target stm32f429 | ||
run: | | ||
./emu_env/xpack-qemu-arm-7.1.0-1/bin/qemu-system-gnuarmeclipse --verbose --mcu STM32F429ZI --nographic --gdb tcp::9999 -d unimp,guest_errors & | ||
working-directory: ./ref_app/ | ||
- name: run-test-on-target | ||
run: | | ||
./emu_env/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gdb-py ./bin/app_benchmark_crc.elf -x ./target/build/test_app_benchmarks_emulator.py | ||
qemu_result=$? | ||
echo "qemu_result" "$qemu_result" | ||
echo "qemu_result" "$qemu_result" | grep 'qemu_result 0' | ||
working-directory: ./ref_app/ |
Oops, something went wrong.