|
- name: test-coverage
- on:
- push:
- branches: [master]
- paths:
- - '.github/workflows/test-coverage.yml'
- - 'CMakeLists.txt'
- - 'cmake/**'
- - 'src/**'
- - 'tests/**'
- - 'toolchains/**'
- pull_request:
- branches: [master]
- paths:
- - '.github/workflows/test-coverage.yml'
- - 'CMakeLists.txt'
- - 'cmake/**'
- - 'src/**'
- - 'tests/**'
- - 'toolchains/**'
- concurrency:
- group: test-coverage-${{ github.ref }}
- cancel-in-progress: true
- permissions:
- contents: read
-
- jobs:
- linux-gcc-gpu:
- runs-on: [self-hosted, linux, cvm]
- steps:
- - uses: actions/checkout@v3
- with:
- submodules: true
- - name: cache-swiftshader
- id: cache-swiftshader
- uses: actions/cache@v3
- with:
- path: swiftshader-install
- key: swiftshader-linux-install-20220211
- - name: checkout-swiftshader
- if: steps.cache-swiftshader.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: google/swiftshader
- path: swiftshader
- ref: 0863290dc7f6cc1649bab1858790e812b8aef02a
- - name: checkout-swiftshader-submodules
- if: steps.cache-swiftshader.outputs.cache-hit != 'true'
- run: |
- cd swiftshader
- git -c submodule."third_party/git-hooks".update=none submodule update --init --recursive
- - name: swiftshader
- if: steps.cache-swiftshader.outputs.cache-hit != 'true'
- run: |
- cd swiftshader
- mkdir -p build; cd build
- cmake -DCMAKE_INSTALL_PREFIX=install -DSWIFTSHADER_BUILD_EGL=FALSE -DSWIFTSHADER_BUILD_GLESv2=FALSE -DSWIFTSHADER_BUILD_GLES_CM=FALSE -DSWIFTSHADER_BUILD_VULKAN=TRUE -DSWIFTSHADER_BUILD_PVR=FALSE -DSWIFTSHADER_BUILD_TESTS=FALSE -DSWIFTSHADER_ENABLE_ASTC=FALSE -DSWIFTSHADER_WARNINGS_AS_ERRORS=FALSE -DREACTOR_BACKEND=Subzero -DREACTOR_DEFAULT_OPT_LEVEL=Default -DCMAKE_BUILD_TYPE=Release ..
- cmake --build . -j 4
- mkdir $GITHUB_WORKSPACE/swiftshader-install
- cp Linux/* $GITHUB_WORKSPACE/swiftshader-install
- - name: configure
- run: mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_AVX2=ON -DNCNN_AVX512=OFF -DNCNN_XOP=OFF -DNCNN_OPENMP=OFF -DNCNN_VULKAN=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- - name: build
- run: cmake --build build -j 4
- - name: test
- run: |
- printf "[Processor]\nThreadCount=1\n" > build/tests/SwiftShader.ini
- export VK_ICD_FILENAMES="$GITHUB_WORKSPACE/swiftshader-install/vk_swiftshader_icd.json"
- cd build && ctest --output-on-failure -j 4
- - name: lcov-collect
- run: |
- cd build
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build/*' -o lcov.info
- lcov -r lcov.info '*/glslang/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov
- id: codecov
- continue-on-error: true
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-1
- continue-on-error: true
- id: codecov-vlen256-retry-1
- if: steps.codecov.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-2
- continue-on-error: true
- id: codecov-vlen256-retry-2
- if: steps.codecov-vlen256-retry-1.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-3
- continue-on-error: true
- id: codecov-vlen256-retry-3
- if: steps.codecov-vlen256-retry-2.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-4
- continue-on-error: true
- id: codecov-vlen256-retry-4
- if: steps.codecov-vlen256-retry-3.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-5
- continue-on-error: true
- id: codecov-vlen256-retry-5
- if: steps.codecov-vlen256-retry-4.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: set the status
- if: always()
- run: |
- if ${{ steps.codecov.outcome=='success' || steps.codecov-vlen256-retry-1.outcome=='success' || steps.codecov-vlen256-retry-2.outcome=='success' || steps.codecov-vlen256-retry-3.outcome=='success' || steps.codecov-vlen256-retry-4.outcome=='success' || steps.codecov-vlen256-retry-5.outcome=='success' }}; then
- echo fine
- else
- exit 1
- fi
-
- linux-gcc-gpu-t4:
- runs-on: [self-hosted, linux, t4]
- steps:
- - uses: actions/checkout@v3
- with:
- submodules: true
- - name: build
- env:
- CC: gcc
- CXX: g++
- LD_LIBRARY_PATH: /data/action/install/lib64
- run: |
- export VULKAN_SDK=/data/action/osd/1.2.189.0/x86_64
- mkdir build && cd build
- cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_VULKAN=ON -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_AVX2=ON -DNCNN_XOP=OFF -DNCNN_AVXVNNI=OFF -DNCNN_AVX512=ON -DNCNN_AVX512VNNI=ON -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- cmake --build . -j 4
- - name: test
- env:
- LD_LIBRARY_PATH: /data/action/install/lib64
- run: cd build && ctest --output-on-failure -j 4
- - name: lcov-collect
- run: |
- cd build
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/install/*' -o lcov.info
- lcov -r lcov.info '*/build/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov
- id: codecov
- continue-on-error: true
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-1
- continue-on-error: true
- id: codecov-vlen256-retry-1
- if: steps.codecov.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-2
- continue-on-error: true
- id: codecov-vlen256-retry-2
- if: steps.codecov-vlen256-retry-1.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-3
- continue-on-error: true
- id: codecov-vlen256-retry-3
- if: steps.codecov-vlen256-retry-2.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-4
- continue-on-error: true
- id: codecov-vlen256-retry-4
- if: steps.codecov-vlen256-retry-3.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-5
- continue-on-error: true
- id: codecov-vlen256-retry-5
- if: steps.codecov-vlen256-retry-4.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: set the status
- if: always()
- run: |
- if ${{ steps.codecov.outcome=='success' || steps.codecov-vlen256-retry-1.outcome=='success' || steps.codecov-vlen256-retry-2.outcome=='success' || steps.codecov-vlen256-retry-3.outcome=='success' || steps.codecov-vlen256-retry-4.outcome=='success' || steps.codecov-vlen256-retry-5.outcome=='success' }}; then
- echo fine
- else
- exit 1
- fi
-
- linux-gcc-gpu-lavapipe:
- runs-on: [self-hosted, linux, cvm]
- steps:
- - uses: actions/checkout@v3
- with:
- submodules: true
-
- - name: cache-lavapipe
- id: cache-lavapipe
- uses: actions/cache@v3
- with:
- path: lavapipe-install
- key: lavapipe-linux-install-20211127-3
- - name: checkout-lavapipe
- if: steps.cache-lavapipe.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: mesa3d/mesa
- path: mesa
- ref: cd39180cfab20734744b379b085cc3b5c2cecd3a
- - name: lavapipe
- if: steps.cache-lavapipe.outputs.cache-hit != 'true'
- run: |
- mkdir -p "$GITHUB_WORKSPACE/lavapipe-install"
- cd mesa
- mkdir build
- cd build
- meson -Dprefix="$GITHUB_WORKSPACE/lavapipe-install" -Dbuildtype=release -Db_lto=true -Db_ndebug=true -Dplatforms="x11" -Ddri3=enabled -Ddri-drivers="" -Dgallium-drivers=swrast -Dgallium-vdpau=disabled -Dgallium-xvmc=disabled -Dgallium-omx=disabled -Dgallium-va=disabled -Dgallium-xa=disabled -Dgallium-opencl=disabled -Dopencl-native=false -Dvulkan-drivers=swrast -Dshader-cache=disabled -Dgles1=disabled -Dgles2=disabled -Dopengl=false -Dgbm=disabled -Dglx=disabled -Degl=disabled -Dllvm=enabled -Dvalgrind=disabled -Dlibunwind=disabled -Dlmsensors=disabled ..
- ninja -j4
- ninja install
- sed -ie "s@$GITHUB_WORKSPACE/lavapipe-install/lib/x86_64-linux-gnu/libvulkan_lvp.so@../../../lib/x86_64-linux-gnu/libvulkan_lvp.so@g" $GITHUB_WORKSPACE/lavapipe-install/share/vulkan/icd.d/lvp_icd.x86_64.json
-
- - name: configure
- run: mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_AVX2=ON -DNCNN_AVX512=OFF -DNCNN_XOP=OFF -DNCNN_OPENMP=OFF -DNCNN_VULKAN=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- - name: build
- run: cmake --build build -j 4
- - name: test
- run: |
- export VK_ICD_FILENAMES="$GITHUB_WORKSPACE/lavapipe-install/share/vulkan/icd.d/lvp_icd.x86_64.json"
- cd build && ctest --output-on-failure -j 4
- - name: lcov-collect
- run: |
- cd build
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build/*' -o lcov.info
- lcov -r lcov.info '*/glslang/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov
- id: codecov
- continue-on-error: true
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-1
- continue-on-error: true
- id: codecov-vlen256-retry-1
- if: steps.codecov.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-2
- continue-on-error: true
- id: codecov-vlen256-retry-2
- if: steps.codecov-vlen256-retry-1.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-3
- continue-on-error: true
- id: codecov-vlen256-retry-3
- if: steps.codecov-vlen256-retry-2.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-4
- continue-on-error: true
- id: codecov-vlen256-retry-4
- if: steps.codecov-vlen256-retry-3.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-5
- continue-on-error: true
- id: codecov-vlen256-retry-5
- if: steps.codecov-vlen256-retry-4.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: set the status
- if: always()
- run: |
- if ${{ steps.codecov.outcome=='success' || steps.codecov-vlen256-retry-1.outcome=='success' || steps.codecov-vlen256-retry-2.outcome=='success' || steps.codecov-vlen256-retry-3.outcome=='success' || steps.codecov-vlen256-retry-4.outcome=='success' || steps.codecov-vlen256-retry-5.outcome=='success' }}; then
- echo fine
- else
- exit 1
- fi
-
- linux-gcc-x64:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - name: lcov
- run: sudo apt-get install lcov
- - name: build-sse2
- run: |
- mkdir build-sse2 && cd build-sse2
- cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_AVX=OFF -DNCNN_AVX2=OFF -DNCNN_AVX512=OFF -DNCNN_XOP=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- cmake --build . -j 2
- - name: test-sse2
- run: cd build-sse2 && ctest --output-on-failure -j 2
- - name: lcov-collect
- run: |
- cd build-sse2
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build-sse2/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov-sse2
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build-sse2/lcov.info
-
- - name: build-avx
- run: |
- mkdir build-avx && cd build-avx
- cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_AVX2=OFF -DNCNN_AVX=ON -DNCNN_AVX512=OFF -DNCNN_XOP=OFF -DNCNN_OPENMP=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- cmake --build . -j 2
- - name: test-avx
- run: cd build-avx && ctest --output-on-failure -j 2
- - name: lcov-collect
- run: |
- cd build-avx
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build-avx/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov-avx
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build-avx/lcov.info
-
- - name: build-avx2
- run: |
- mkdir build-avx2 && cd build-avx2
- cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_AVX2=ON -DNCNN_AVX512=OFF -DNCNN_XOP=OFF -DNCNN_OPENMP=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- cmake --build . -j 2
- - name: test-avx2
- run: cd build-avx2 && ctest --output-on-failure -j 2
- - name: lcov-collect
- run: |
- cd build-avx2
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build-avx2/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov-avx2
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build-avx2/lcov.info
-
- linux-gcc-x64-avx512:
- runs-on: [self-hosted, linux, t4]
- steps:
- - uses: actions/checkout@v3
- - name: build
- env:
- CC: gcc
- CXX: g++
- LD_LIBRARY_PATH: /data/action/install/lib64
- run: |
- mkdir build && cd build
- cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_AVX2=ON -DNCNN_XOP=OFF -DNCNN_AVXVNNI=OFF -DNCNN_AVX512=ON -DNCNN_AVX512VNNI=ON -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- cmake --build . -j 4
- - name: test
- env:
- LD_LIBRARY_PATH: /data/action/install/lib64
- run: cd build && ctest --output-on-failure -j 4
- - name: lcov-collect
- run: |
- cd build
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/install/*' -o lcov.info
- lcov -r lcov.info '*/build/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov
- id: codecov
- continue-on-error: true
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-1
- continue-on-error: true
- id: codecov-vlen256-retry-1
- if: steps.codecov.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-2
- continue-on-error: true
- id: codecov-vlen256-retry-2
- if: steps.codecov-vlen256-retry-1.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-3
- continue-on-error: true
- id: codecov-vlen256-retry-3
- if: steps.codecov-vlen256-retry-2.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-4
- continue-on-error: true
- id: codecov-vlen256-retry-4
- if: steps.codecov-vlen256-retry-3.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-5
- continue-on-error: true
- id: codecov-vlen256-retry-5
- if: steps.codecov-vlen256-retry-4.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: set the status
- if: always()
- run: |
- if ${{ steps.codecov.outcome=='success' || steps.codecov-vlen256-retry-1.outcome=='success' || steps.codecov-vlen256-retry-2.outcome=='success' || steps.codecov-vlen256-retry-3.outcome=='success' || steps.codecov-vlen256-retry-4.outcome=='success' || steps.codecov-vlen256-retry-5.outcome=='success' }}; then
- echo fine
- else
- exit 1
- fi
-
- linux-gcc-x64-avx512-spr:
- runs-on: ubuntu-22.04
- steps:
- - uses: actions/checkout@v3
- - name: update
- run: sudo apt-get update
- - name: gcc12
- run: sudo apt-get install gcc-12 g++-12
- - name: lcov
- run: sudo apt-get install lcov
- - name: Setup SDE binaries
- uses: petarpetrovt/setup-sde@v2
- - name: build-avx512-spr
- env:
- CC: gcc-12
- CXX: g++-12
- run: |
- mkdir build-avx512-spr && cd build-avx512-spr
- cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_AVX2=ON -DNCNN_AVX512=ON -DNCNN_AVX512VNNI=ON -DNCNN_AVX512BF16=ON -DNCNN_AVX512FP16=ON -DNCNN_XOP=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- cmake --build . -j 2
- - name: test-avx512-spr
- run: |
- cd build-avx512-spr
- TESTS_EXECUTABLE_LOADER=$SDE_PATH/sde64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-spr;--" ctest --output-on-failure -j 2
- - name: lcov-collect
- run: |
- cd build-avx512-spr
- lcov --gcov-tool gcov-12 -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build-avx512-spr/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov-avx512-spr
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build-avx512-spr/lcov.info
-
- linux-gcc-armhf-vfpv3-d16:
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@v3
- - name: lcov
- run: sudo apt-get install lcov
-
- - name: cache-qemu
- id: cache-qemu
- uses: actions/cache@v3
- with:
- path: qemu-install
- key: qemu-arm-install-20220502
- - name: install-qemu-build-deps
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- sudo apt-get update
- sudo apt-get install autoconf automake autotools-dev ninja-build
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=arm-linux-user --disable-system
- make -j2
- make install
-
- - name: arm-gnu-toolchain
- run: |
- sudo apt-get update
- sudo apt-get install g++-arm-linux-gnueabihf
-
- - name: configure
- run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabihf-vfpv3-d16.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_VFPV4=OFF -DNCNN_ARM82=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- - name: build
- run: cmake --build build -j 2
-
- - name: test
- run: |
- export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
- cd build
- TESTS_EXECUTABLE_LOADER=qemu-arm TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/arm-linux-gnueabihf" ctest --output-on-failure -j 2
-
- - name: lcov-collect
- run: |
- cd build
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
-
- linux-gcc-arm:
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@v3
- - name: lcov
- run: sudo apt-get install lcov
-
- - name: cache-qemu
- id: cache-qemu
- uses: actions/cache@v3
- with:
- path: qemu-install
- key: qemu-arm-install-20220502
- - name: install-qemu-build-deps
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- sudo apt-get update
- sudo apt-get install autoconf automake autotools-dev ninja-build
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=arm-linux-user --disable-system
- make -j2
- make install
-
- - name: arm-gnu-toolchain
- run: |
- sudo apt-get update
- sudo apt-get install g++-arm-linux-gnueabi
-
- - name: configure
- run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabi.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_VFPV4=ON -DNCNN_ARM82=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- - name: build
- run: cmake --build build -j 2
-
- - name: test
- run: |
- export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
- cd build
- TESTS_EXECUTABLE_LOADER=qemu-arm TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/arm-linux-gnueabi" ctest --output-on-failure -j 2
-
- - name: lcov-collect
- run: |
- cd build
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
-
- linux-gcc-aarch64:
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@v3
- - name: lcov
- run: sudo apt-get install lcov
-
- - name: cache-qemu
- id: cache-qemu
- uses: actions/cache@v3
- with:
- path: qemu-install
- key: qemu-aarch64-install-20220502
- - name: install-qemu-build-deps
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- sudo apt-get update
- sudo apt-get install autoconf automake autotools-dev ninja-build
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=aarch64-linux-user --disable-system
- make -j2
- make install
-
- - name: aarch64-gnu-toolchain
- run: |
- sudo apt-get update
- sudo apt-get install g++-aarch64-linux-gnu
-
- - name: configure
- run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_ARM82=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- - name: build
- run: cmake --build build -j 2
-
- - name: test
- run: |
- export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
- cd build
- TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j 2
-
- - name: lcov-collect
- run: |
- cd build
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
-
- linux-gcc-arm82:
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@v3
-
- - name: lcov
- run: sudo apt-get install lcov
- - name: cache-qemu
- id: cache-qemu
- uses: actions/cache@v3
- with:
- path: qemu-install
- key: qemu-aarch64-install-20220502
- - name: install-qemu-build-deps
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- sudo apt-get update
- sudo apt-get install autoconf automake autotools-dev ninja-build
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=aarch64-linux-user --disable-system
- make -j2
- make install
-
- - name: aarch64-gnu-toolchain
- run: |
- sudo apt-get update
- sudo apt-get install g++-aarch64-linux-gnu
-
- - name: build-arm82
- run: |
- mkdir build-arm82 && cd build-arm82
- cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_ARM82=ON -DNCNN_ARM82FP16FML=OFF -DNCNN_ARM84BF16=OFF -DNCNN_ARM84I8MM=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- cmake --build . -j 2
- - name: test
- run: |
- export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
- cd build-arm82
- TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j 2
- - name: lcov-collect
- run: |
- cd build-arm82
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build-arm82/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build-arm82/lcov.info
-
- linux-gcc-arm82-omp:
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@v3
-
- - name: lcov
- run: sudo apt-get install lcov
- - name: cache-qemu
- id: cache-qemu
- uses: actions/cache@v3
- with:
- path: qemu-install
- key: qemu-aarch64-install-20220502
- - name: install-qemu-build-deps
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- sudo apt-get update
- sudo apt-get install autoconf automake autotools-dev ninja-build
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=aarch64-linux-user --disable-system
- make -j2
- make install
-
- - name: aarch64-gnu-toolchain
- run: |
- sudo apt-get update
- sudo apt-get install g++-aarch64-linux-gnu
-
- - name: build-arm82-omp
- run: |
- mkdir build-arm82-omp && cd build-arm82-omp
- cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_ARM82=ON -DNCNN_ARM82FP16FML=OFF -DNCNN_ARM84BF16=OFF -DNCNN_ARM84I8MM=OFF -DNCNN_OPENMP=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- cmake --build . -j 2
- - name: test
- run: |
- export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
- cd build-arm82-omp
- TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j 2
- - name: lcov-collect
- run: |
- cd build-arm82-omp
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build-arm82-omp/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build-arm82-omp/lcov.info
-
- linux-gcc-arm82dot-omp:
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@v3
-
- - name: lcov
- run: sudo apt-get install lcov
- - name: cache-qemu
- id: cache-qemu
- uses: actions/cache@v3
- with:
- path: qemu-install
- key: qemu-aarch64-install-20220502
- - name: install-qemu-build-deps
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- sudo apt-get update
- sudo apt-get install autoconf automake autotools-dev ninja-build
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=aarch64-linux-user --disable-system
- make -j2
- make install
-
- - name: aarch64-gnu-toolchain
- run: |
- sudo apt-get update
- sudo apt-get install g++-aarch64-linux-gnu
-
- - name: build-arm82dot-omp
- run: |
- mkdir build-arm82dot-omp && cd build-arm82dot-omp
- cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=ON -DNCNN_ARM82=ON -DNCNN_ARM82DOT=ON -DNCNN_ARM82FP16FML=OFF -DNCNN_ARM84BF16=OFF -DNCNN_ARM84I8MM=OFF -DNCNN_OPENMP=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- cmake --build . -j 2
- - name: test
- run: |
- export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
- cd build-arm82dot-omp
- TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j 2
- - name: lcov-collect
- run: |
- cd build-arm82dot-omp
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build-arm82dot-omp/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build-arm82dot-omp/lcov.info
-
- linux-gcc-arm84:
- runs-on: ubuntu-22.04
- steps:
- - uses: actions/checkout@v3
-
- - name: lcov
- run: sudo apt-get install lcov
- - name: cache-qemu
- id: cache-qemu
- uses: actions/cache@v3
- with:
- path: qemu-install
- key: qemu-aarch64-install-20220502
- - name: install-qemu-build-deps
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- sudo apt-get update
- sudo apt-get install autoconf automake autotools-dev ninja-build
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=aarch64-linux-user --disable-system
- make -j2
- make install
-
- - name: aarch64-gnu-toolchain
- run: |
- sudo apt-get update
- sudo apt-get install g++-aarch64-linux-gnu
-
- - name: build-arm84
- run: |
- mkdir build-arm84 && cd build-arm84
- cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=ON -DNCNN_ARM82=ON -DNCNN_ARM82DOT=ON -DNCNN_ARM82FP16FML=ON -DNCNN_ARM84BF16=ON -DNCNN_ARM84I8MM=ON -DNCNN_OPENMP=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- cmake --build . -j 2
- - name: test
- run: |
- export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
- cd build-arm84
- TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j 2
- - name: lcov-collect
- run: |
- cd build-arm84
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build-arm84/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build-arm84/lcov.info
-
- linux-gcc-mipsisa32r6el:
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@v3
-
- - name: lcov
- run: sudo apt-get install lcov
- - name: cache-qemu
- id: cache-qemu
- uses: actions/cache@v3
- with:
- path: qemu-install
- key: qemu-mipsel-install-20220502
- - name: install-qemu-build-deps
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- sudo apt-get update
- sudo apt-get install autoconf automake autotools-dev ninja-build
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=mipsel-linux-user --disable-system
- make -j2
- make install
-
- - name: mipsisa32r6el-gnu-toolchain
- run: |
- sudo apt-get update
- sudo apt-get install g++-mipsisa32r6el-linux-gnu
-
- - name: configure
- run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mipsisa32r6el-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_MSA=OFF -DNCNN_MMI=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- - name: build
- run: cmake --build build -j 2
-
- - name: test
- run: |
- export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
- cd build
- TESTS_EXECUTABLE_LOADER=qemu-mipsel TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mipsisa32r6el-linux-gnu" ctest --output-on-failure -j 2
-
- - name: lcov-collect
- run: |
- cd build
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
-
- linux-gcc-mipsisa64r6el:
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@v3
-
- - name: lcov
- run: sudo apt-get install lcov
- - name: cache-qemu
- id: cache-qemu
- uses: actions/cache@v3
- with:
- path: qemu-install
- key: qemu-mips64el-install-20220502-3
- - name: install-qemu-build-deps
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- sudo apt-get update
- sudo apt-get install autoconf automake autotools-dev ninja-build
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0001-target-mips-Fix-SAT_S-trans-helper.patch
- wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0002-target-mips-Fix-df_extract_val-and-df_extract_df-dfe.patch
- wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0003-target-mips-Fix-msa-checking-condition-in-trans_msa_.patch
- wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0004-target-mips-Do-not-treat-msa-INSERT-as-NOP-when-wd-i.patch
- wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0005-target-mips-Fix-FTRUNC_S-and-FTRUNC_U-trans-helper.patch
- wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0006-target-mips-Fix-store-adress-of-high-64bit-in-helper.patch
- patch -p1 -i 0001-target-mips-Fix-SAT_S-trans-helper.patch
- patch -p1 -i 0002-target-mips-Fix-df_extract_val-and-df_extract_df-dfe.patch
- patch -p1 -i 0003-target-mips-Fix-msa-checking-condition-in-trans_msa_.patch
- patch -p1 -i 0004-target-mips-Do-not-treat-msa-INSERT-as-NOP-when-wd-i.patch
- patch -p1 -i 0005-target-mips-Fix-FTRUNC_S-and-FTRUNC_U-trans-helper.patch
- patch -p1 -i 0006-target-mips-Fix-store-adress-of-high-64bit-in-helper.patch
- ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=mips64el-linux-user --disable-system
- make -j2
- make install
-
- - name: mipsisa64r6el-gnuabi64-toolchain
- run: |
- sudo apt-get update
- sudo apt-get install g++-mipsisa64r6el-linux-gnuabi64
-
- - name: configure
- run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mipsisa64r6el-linux-gnuabi64.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_MSA=ON -DNCNN_MMI=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- - name: build
- run: cmake --build build -j 2
-
- - name: test
- run: |
- export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
- cd build
- TESTS_EXECUTABLE_LOADER=qemu-mips64el TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mipsisa64r6el-linux-gnuabi64" ctest --output-on-failure -j 2
-
- - name: lcov-collect
- run: |
- cd build
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
-
- linux-gcc-riscv64:
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@v3
-
- - name: lcov
- run: sudo apt-get install lcov
-
- - name: cache-qemu
- id: cache-qemu
- uses: actions/cache@v3
- with:
- path: qemu-install
- key: qemu-riscv64-install-20220502-3
- - name: install-qemu-build-deps
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- sudo apt-get update
- sudo apt-get install autoconf automake autotools-dev ninja-build
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0007-linux-user-Expose-risc-v-V-isa-bit-in-get_elf_hwcap.patch
- patch -p1 -i 0007-linux-user-Expose-risc-v-V-isa-bit-in-get_elf_hwcap.patch
- ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=riscv64-linux-user --disable-system
- make -j2
- make install
-
- - name: riscv64-gnu-toolchain
- run: |
- sudo apt-get update
- sudo apt-get install g++-riscv64-linux-gnu
-
- - name: configure
- run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/riscv64-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- - name: build
- run: cmake --build build -j 2
-
- - name: test
- run: |
- export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
- cd build
- TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/riscv64-linux-gnu" ctest --output-on-failure -j 2
-
- - name: lcov-collect
- run: |
- cd build
- lcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
-
- linux-gcc-riscv64-rvv:
- runs-on: [self-hosted, linux, centos]
- steps:
- - uses: actions/checkout@v3
-
- #- name: lcov
- #run: sudo apt-get install lcov
-
- #- name: cache-qemu
- #id: cache-qemu
- #uses: actions/cache@v3
- #with:
- #path: qemu-install
- #key: qemu-riscv64-install-20220502-3
- #- name: install-qemu-build-deps
- #if: steps.cache-qemu.outputs.cache-hit != 'true'
- #run: |
- #sudo apt-get update
- #sudo apt-get install autoconf automake autotools-dev ninja-build
- #- name: checkout-qemu
- #if: steps.cache-qemu.outputs.cache-hit != 'true'
- #uses: actions/checkout@v3
- #with:
- #repository: qemu/qemu
- #path: qemu
- #ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
- #- name: qemu
- #if: steps.cache-qemu.outputs.cache-hit != 'true'
- #run: |
- #cd qemu
- #wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0007-linux-user-Expose-risc-v-V-isa-bit-in-get_elf_hwcap.patch
- #patch -p1 -i 0007-linux-user-Expose-risc-v-V-isa-bit-in-get_elf_hwcap.patch
- #./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=riscv64-linux-user --disable-system
- #make -j2
- #make install
-
- #- name: cache-riscv
- #id: cache-riscv
- #uses: actions/cache@v3
- #with:
- #path: rv64gcv-install
- #key: rv64gcv-linux-install-20210504
-
- #- name: install-riscv-build-deps
- #if: steps.cache-riscv.outputs.cache-hit != 'true'
- #run: |
- #sudo apt-get update
- #sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev device-tree-compiler
-
- #- name: checkout-riscv-gnu-toolchain
- #if: steps.cache-riscv.outputs.cache-hit != 'true'
- #uses: actions/checkout@v3
- #with:
- #repository: riscv/riscv-gnu-toolchain
- #path: riscv-gnu-toolchain
- #ref: 28271f03bb538d926ad2889dc8ad1b0cb1b3b45c
- #- name: checkout-riscv-gnu-toolchain-submodules
- #if: steps.cache-riscv.outputs.cache-hit != 'true'
- #run: |
- #cd riscv-gnu-toolchain
- #git submodule update --init --recursive --depth 1 riscv-binutils
- #git submodule update --init --recursive --depth 1 riscv-gcc
- #git submodule update --init --recursive --depth 1 riscv-glibc
- #git submodule update --init --recursive --depth 1 riscv-dejagnu
- #git submodule update --init --recursive --depth 1 riscv-newlib
- #git submodule update --init --recursive --depth 1 riscv-gdb
- #- name: riscv-gnu-toolchain
- #if: steps.cache-riscv.outputs.cache-hit != 'true'
- #run: |
- #cd riscv-gnu-toolchain
- #sed -i '/__OBSOLETE_MATH/d' riscv-newlib/newlib/libm/common/math_errf.c
- #./configure --prefix=$GITHUB_WORKSPACE/rv64gcv-install --with-arch=rv64gcv_zfh
- #make linux
-
- #- name: riscv-strip-install
- #if: steps.cache-riscv.outputs.cache-hit != 'true'
- #run: find $GITHUB_WORKSPACE/rv64gcv-install -type f | xargs -i strip -g {} || true
-
- - name: configure
- run: export RISCV_ROOT_PATH=/data/action/osd/rv64gcv-install && mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/riscv64-unknown-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DCMAKE_C_FLAGS="-O1" -DCMAKE_CXX_FLAGS="-O1" -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_RVV=ON -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
- - name: build
- run: cmake --build build -j 4
-
- - name: test-vlen128
- run: |
- export PATH=/data/action/osd/qemu-install/bin:$PATH
- cd build
- TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;rv64,v=true,Zfh=true,vlen=128,elen=64,vext_spec=v1.0;-L;/data/action/osd/rv64gcv-install/sysroot" ctest --output-on-failure -j 4
-
- - name: lcov-collect-vlen128
- run: |
- cd build
- lcov --gcov-tool /data/action/osd/rv64gcv-install/bin/riscv64-unknown-linux-gnu-gcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build/*' -o lcov.info
- lcov -r lcov.info '*/rv64gcv-install/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov-vlen128
- id: codecov-vlen128
- continue-on-error: true
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen128-retry-1
- continue-on-error: true
- id: codecov-vlen128-retry-1
- if: steps.codecov-vlen128.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen128-retry-2
- continue-on-error: true
- id: codecov-vlen128-retry-2
- if: steps.codecov-vlen128-retry-1.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen128-retry-3
- continue-on-error: true
- id: codecov-vlen128-retry-3
- if: steps.codecov-vlen128-retry-2.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen128-retry-4
- continue-on-error: true
- id: codecov-vlen128-retry-4
- if: steps.codecov-vlen128-retry-3.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen128-retry-5
- continue-on-error: true
- id: codecov-vlen128-retry-5
- if: steps.codecov-vlen128-retry-4.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: set codecov-vlen128 status
- if: always()
- run: |
- if ${{ steps.codecov-vlen128.outcome=='success' || steps.codecov-vlen128-retry-1.outcome=='success' || steps.codecov-vlen128-retry-2.outcome=='success' || steps.codecov-vlen128-retry-3.outcome=='success' || steps.codecov-vlen128-retry-4.outcome=='success' || steps.codecov-vlen128-retry-5.outcome=='success' }}; then
- echo fine
- else
- exit 1
- fi
-
- - name: test-vlen256
- run: |
- export PATH=/data/action/osd/qemu-install/bin:$PATH
- cd build
- TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;rv64,v=true,Zfh=true,vlen=256,elen=64,vext_spec=v1.0;-L;/data/action/osd/rv64gcv-install/sysroot" ctest --output-on-failure -j 4
-
- - name: lcov-collect-vlen256
- run: |
- cd build
- lcov --gcov-tool /data/action/osd/rv64gcv-install/bin/riscv64-unknown-linux-gnu-gcov -d ./src -c -o lcov.info
- lcov -r lcov.info '/usr/*' -o lcov.info
- lcov -r lcov.info '*/build/*' -o lcov.info
- lcov -r lcov.info '*/rv64gcv-install/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov-vlen256
- id: codecov-vlen256
- continue-on-error: true
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-1
- continue-on-error: true
- id: codecov-vlen256-retry-1
- if: steps.codecov-vlen256.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-2
- continue-on-error: true
- id: codecov-vlen256-retry-2
- if: steps.codecov-vlen256-retry-1.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-3
- continue-on-error: true
- id: codecov-vlen256-retry-3
- if: steps.codecov-vlen256-retry-2.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-4
- continue-on-error: true
- id: codecov-vlen256-retry-4
- if: steps.codecov-vlen256-retry-3.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: codecov-vlen256-retry-5
- continue-on-error: true
- id: codecov-vlen256-retry-5
- if: steps.codecov-vlen256-retry-4.outcome=='failure'
- uses: codecov/codecov-action@v3
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
- - name: set codecov-vlen256 status
- if: always()
- run: |
- if ${{ steps.codecov-vlen256.outcome=='success' || steps.codecov-vlen256-retry-1.outcome=='success' || steps.codecov-vlen256-retry-2.outcome=='success' || steps.codecov-vlen256-retry-3.outcome=='success' || steps.codecov-vlen256-retry-4.outcome=='success' || steps.codecov-vlen256-retry-5.outcome=='success' }}; then
- echo fine
- else
- exit 1
- fi
|