del old and fix tests #3090
This file contains hidden or 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: CI | |
| on: | |
| push: | |
| pull_request: | |
| schedule: | |
| - cron: '0 8 * * *' | |
| workflow_dispatch: | |
| jobs: | |
| clang-format: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: DoozyX/[email protected] | |
| with: | |
| source: '.' | |
| build-linux: | |
| strategy: | |
| matrix: | |
| include: | |
| - build_type: DEBUG | |
| - build_type: RELEASE | |
| stats: false | |
| - build_type: RELEASE | |
| stats: true | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Set binary paths | |
| id: set_binaries | |
| run: | | |
| echo "ACC_BINARY=build/bin/ACC" >> $GITHUB_OUTPUT | |
| - name: Setup ccache | |
| uses: hendrikmuhs/[email protected] | |
| with: | |
| key: ccache-${{ github.job }}-${{ matrix.build_type }} | |
| max-size: 2G | |
| - name: Build | |
| run: | | |
| cmake -S . -B build -G Ninja \ | |
| -DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ | |
| -DOPENCV_PATH=build/3rdparty/opencv_build \ | |
| ${{ matrix.stats && '-DENABLE_STATISTIC_TENSORS=ON' || '' }} \ | |
| ${{ matrix.stats && '-DENABLE_STATISTIC_TIME=ON' || '' }} \ | |
| ${{ matrix.stats && '-DENABLE_STATISTIC_WEIGHTS=ON' || '' }} | |
| cmake --build build --parallel | |
| env: | |
| CTEST_OUTPUT_ON_FAILURE: 1 | |
| - name: Prepare ALL libs | |
| run: | | |
| mkdir -p build/bin/all_libs | |
| cp -a build/3rdparty/opencv_build/lib/* build/bin/all_libs/ 2>/dev/null || true | |
| ldd build/bin/ACC | grep "=> /" | awk '{print $3}' | xargs -I {} cp {} build/bin/all_libs/ 2>/dev/null || true | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: mnist-${{ matrix.build_type }}${{ matrix.stats && '-stats' || '' }} | |
| path: | | |
| ${{ steps.set_binaries.outputs.ACC_BINARY }} | |
| build/bin/all_libs/* | |
| build/bin/opencv_libs/* | |
| build/setenv.sh | |
| - name: Test | |
| run: cmake --build build -t test | |
| env: | |
| CTEST_OUTPUT_ON_FAILURE: 1 | |
| - name: Test (valgrind) | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y valgrind | |
| valgrind cmake --build build -t test | |
| env: | |
| CTEST_OUTPUT_ON_FAILURE: 1 | |
| build-linux-clang: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install prerequisites | |
| run: | | |
| sudo apt install clang libomp-dev | |
| - name: Setup ccache | |
| uses: hendrikmuhs/[email protected] | |
| with: | |
| key: ccache-${{ github.job }} | |
| - name: Build | |
| run: | | |
| cmake -S . -B build -G Ninja \ | |
| -DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_C_COMPILER=clang \ | |
| -DCMAKE_CXX_COMPILER=clang++ | |
| cmake --build build --parallel | |
| - name: Test | |
| run: cmake --build build -t test | |
| env: | |
| CTEST_OUTPUT_ON_FAILURE: 1 | |
| - name: Test (valgrind) | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y valgrind | |
| valgrind cmake --build build -t test | |
| env: | |
| CTEST_OUTPUT_ON_FAILURE: 1 | |
| build-macos: | |
| runs-on: macos-15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install prerequisites | |
| run: | | |
| brew install libomp ninja | |
| brew link libomp --overwrite --force | |
| - name: Setup ccache | |
| uses: hendrikmuhs/[email protected] | |
| with: | |
| key: ccache-${{ github.job }} | |
| - name: Build | |
| run: | | |
| OPENMP_PATH=$(brew --prefix libomp) | |
| echo "OpenMP path: $OPENMP_PATH" | |
| cmake -S . -B build -G Ninja \ | |
| -DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_PREFIX_PATH=$OPENMP_PATH \ | |
| -DCMAKE_INCLUDE_PATH=$OPENMP_PATH/include \ | |
| -DCMAKE_LIBRARY_PATH=$OPENMP_PATH/lib \ | |
| -DOpenMP_C_FLAGS="-Xclang -fopenmp -I$OPENMP_PATH/include" \ | |
| -DOpenMP_CXX_FLAGS="-Xclang -fopenmp -I$OPENMP_PATH/include" \ | |
| -DOpenMP_C_LIB_NAMES="omp" \ | |
| -DOpenMP_CXX_LIB_NAMES="omp" \ | |
| -DOpenMP_omp_LIBRARY="$OPENMP_PATH/lib/libomp.dylib" \ | |
| -DCMAKE_EXE_LINKER_FLAGS="-L$OPENMP_PATH/lib -lomp" \ | |
| -DCMAKE_SHARED_LINKER_FLAGS="-L$OPENMP_PATH/lib -lomp" | |
| cmake --build build --parallel | |
| env: | |
| LDFLAGS: "-L$(brew --prefix libomp)/lib -lomp" | |
| CPPFLAGS: "-I$(brew --prefix libomp)/include" | |
| - name: Test | |
| run: cmake --build build -t test | |
| env: | |
| CTEST_OUTPUT_ON_FAILURE: 1 | |
| build-windows: | |
| runs-on: windows-2025 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@v2 | |
| with: | |
| vs-version: 'latest' | |
| - name: Setup ccache | |
| uses: Chocobo1/setup-ccache-action@v1 | |
| with: | |
| windows_compile_environment: msvc | |
| - name: Setup ninja | |
| uses: seanmiddleditch/gha-setup-ninja@v6 | |
| - name: Setup MSVC for Ninja again | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| - name: Build | |
| run: | | |
| cmake -S . -B build -G Ninja -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=Release | |
| cmake --build build --parallel --config Release | |
| - name: Test | |
| run: | | |
| cd build | |
| ctest --output-on-failure | |
| build-linux-arm64: | |
| runs-on: ubuntu-24.04-arm | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install prerequisites | |
| run: sudo apt-get update && sudo apt-get install -y libomp-dev build-essential cmake | |
| - name: Setup ccache | |
| uses: hendrikmuhs/[email protected] | |
| with: | |
| key: ccache-${{ github.job }} | |
| - name: Build and Test | |
| run: | | |
| cmake -S . -B build -G Ninja \ | |
| -DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_BUILD_TYPE=Release | |
| cmake --build build --parallel | |
| cmake --build build -t test | |
| env: | |
| CTEST_OUTPUT_ON_FAILURE: 1 | |
| codecov: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install dependencies | |
| run: sudo apt-get update && sudo apt-get install -y gcovr | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Setup ccache | |
| uses: hendrikmuhs/[email protected] | |
| with: | |
| key: ccache-${{ github.job }}-${{ matrix.build_type }} | |
| max-size: 2G | |
| - name: Build | |
| run: | | |
| cmake -S . -B build -G Ninja \ | |
| -DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_C_FLAGS="--coverage" \ | |
| -DCMAKE_CXX_FLAGS="--coverage" \ | |
| -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ | |
| -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} | |
| cmake --build build --parallel | |
| - name: Test | |
| run: cmake --build build -t test | |
| env: | |
| CTEST_OUTPUT_ON_FAILURE: 1 | |
| - name: Generate Coverage Data | |
| run: gcovr -r . --xml -o coverage.xml --gcov-ignore-parse-errors | |
| - name: Upload coverage reports to Codecov | |
| uses: codecov/[email protected] | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| slug: embedded-dev-research/ITLabAI | |
| evaluate-model: | |
| runs-on: ubuntu-latest | |
| needs: [build-linux] | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Download binary and libs | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: mnist-RELEASE | |
| path: build/ | |
| - name: Set binary path | |
| id: set_eval_binary | |
| run: | | |
| echo "EVAL_BINARY=build/bin/ACC" >> $GITHUB_OUTPUT | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libgtk-3-0 libtbb12 libjpeg-dev libpng-dev libtiff-dev libopenjp2-7 libdnnl3 | |
| sudo ldconfig | |
| - name: Generate model JSON | |
| run: | | |
| cd docs && mkdir -p jsons | |
| cd .. | |
| cd app/Converters | |
| pip install -r requirements.txt | |
| python parser.py | |
| cd ../.. | |
| - name: Cache MNIST test dataset | |
| id: cache-mnist | |
| uses: actions/cache@v4 | |
| with: | |
| path: docs/mnist/mnist/test | |
| key: mnist-dataset-e2d09c892023700f68bfa9f30ac91a4dffaa23b151deeaca627101b3d73ef83d | |
| - name: Download MNIST test dataset | |
| if: steps.cache-mnist.outputs.cache-hit != 'true' | |
| run: | | |
| mkdir -p docs/mnist/mnist/test | |
| wget -q https://github.com/DeepTrackAI/MNIST_dataset/archive/main.zip -O main.zip | |
| unzip -q main.zip | |
| cp MNIST_dataset-main/mnist/test/*.png docs/mnist/mnist/test/ | |
| rm -rf main.zip MNIST_dataset-main | |
| - name: Prepare environment | |
| run: | | |
| chmod +x "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}" | |
| export LD_LIBRARY_PATH=$PWD/build/bin/all_libs:/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH | |
| - name: Run evaluation | |
| run: | | |
| export LD_LIBRARY_PATH=$PWD/build/bin/all_libs:/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH | |
| "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}" --model alexnet_mnist > accuracy.txt 2>&1 | |
| if [ $? -ne 0 ]; then | |
| exit 1 | |
| fi | |
| - name: Extract accuracy value | |
| run: | | |
| ACCURACY=$(grep -oE '[0-9]+\.?[0-9]*%' accuracy.txt | head -1 || echo "0%") | |
| echo "$ACCURACY" > accuracy_value.txt | |
| - name: Update README (master only) | |
| if: github.ref == 'refs/heads/master' | |
| run: | | |
| ACCURACY=$(cat accuracy_value.txt | sed 's/%//g') | |
| DATE=$(date '+%Y-%m-%d') | |
| sed -i "s/<!--ACCURACY_PLACEHOLDER-->.*<!--END_ACCURACY-->/<!--ACCURACY_PLACEHOLDER-->Accuracy: ${ACCURACY}% (updated: ${DATE})<!--END_ACCURACY-->/" README.md | |
| - name: Commit and push changes (master only) | |
| if: github.ref == 'refs/heads/master' | |
| run: | | |
| git config --global user.name "GitHub Actions" | |
| git config --global user.email "[email protected]" | |
| git add README.md | |
| if git diff-index --quiet HEAD --; then | |
| echo "No changes to commit" | |
| else | |
| git commit -m "[CI] Update accuracy: $(cat accuracy_value.txt)" | |
| git push origin master | |
| fi |