|
- 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
- jobs:
- linux-gcc-gpu:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- with:
- submodules: true
- - name: lcov
- run: sudo apt-get install lcov
- - name: cache-vulkansdk
- id: cache-vulkansdk
- uses: actions/cache@v2.1.7
- with:
- path: "1.2.189.0"
- key: vulkansdk-linux-x86_64-1.2.189.0
- - name: vulkansdk
- if: steps.cache-vulkansdk.outputs.cache-hit != 'true'
- run: |
- wget https://sdk.lunarg.com/sdk/download/1.2.189.0/linux/vulkansdk-linux-x86_64-1.2.189.0.tar.gz?Human=true -O vulkansdk-linux-x86_64-1.2.189.0.tar.gz
- tar -xf vulkansdk-linux-x86_64-1.2.189.0.tar.gz
- rm -rf 1.2.189.0/source 1.2.189.0/samples
- find 1.2.189.0 -type f | grep -v -E 'vulkan|glslang' | xargs rm
- - name: cache-swiftshader
- id: cache-swiftshader
- uses: actions/cache@v2.1.7
- 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 2
- mkdir $GITHUB_WORKSPACE/swiftshader-install
- cp Linux/* $GITHUB_WORKSPACE/swiftshader-install
- - name: configure
- run: export VULKAN_SDK=`pwd`/1.2.189.0/x86_64 && 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 2
- - name: test
- run: |
- export VK_ICD_FILENAMES="$GITHUB_WORKSPACE/swiftshader-install/vk_swiftshader_icd.json"
- cd build && 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 -r lcov.info '*/glslang/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov
- uses: codecov/codecov-action@v2.1.0
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
-
- linux-gcc-gpu-lavapipe:
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@v3
- with:
- submodules: true
- - name: lcov
- run: sudo apt-get install lcov
-
- - name: vulkansdk
- run: |
- sudo apt-get update
- sudo apt install -y libvulkan-dev vulkan-utils libxcb-randr0
-
- - name: cache-lavapipe
- id: cache-lavapipe
- uses: actions/cache@v2.1.7
- with:
- path: lavapipe-install
- key: lavapipe-linux-install-20211127
- - 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"
- echo 'deb-src http://azure.archive.ubuntu.com/ubuntu focal main' | sudo tee -a /etc/apt/sources.list
- echo 'deb-src http://azure.archive.ubuntu.com/ubuntu focal-updates main' | sudo tee -a /etc/apt/sources.list
- sudo apt-get update
- sudo apt-get build-dep mesa
- 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
- ninja 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 2
- - 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 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 -r lcov.info '*/glslang/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov
- uses: codecov/codecov-action@v2.1.0
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
-
- 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@v2.1.0
- 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@v2.1.0
- 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@v2.1.0
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build-avx2/lcov.info
-
- linux-gcc-x64-avx512:
- runs-on: [self-hosted, linux]
- 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_AVX512=OFF -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
- uses: codecov/codecov-action@v2.1.0
- 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@v2.1.7
- with:
- path: qemu-install
- key: qemu-arm-install-1
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: 8746309137ba470d1b2e8f5ce86ac228625db940
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- ./configure --prefix=install --target-list=arm-linux-user --disable-system
- make -j2
- make install
- cp -r arm-linux-user/install $GITHUB_WORKSPACE/qemu-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_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@v2.1.0
- 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@v2.1.7
- with:
- path: qemu-install
- key: qemu-aarch64-install-1
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: 8746309137ba470d1b2e8f5ce86ac228625db940
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- ./configure --prefix=install --target-list=aarch64-linux-user --disable-system
- make -j2
- make install
- cp -r aarch64-linux-user/install $GITHUB_WORKSPACE/qemu-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@v2.1.0
- 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@v2.1.7
- with:
- path: qemu-install
- key: qemu-aarch64-install-1
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: 8746309137ba470d1b2e8f5ce86ac228625db940
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- ./configure --prefix=install --target-list=aarch64-linux-user --disable-system
- make -j2
- make install
- cp -r aarch64-linux-user/install $GITHUB_WORKSPACE/qemu-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_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@v2.1.0
- 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@v2.1.7
- with:
- path: qemu-install
- key: qemu-aarch64-install-1
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: 8746309137ba470d1b2e8f5ce86ac228625db940
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- ./configure --prefix=install --target-list=aarch64-linux-user --disable-system
- make -j2
- make install
- cp -r aarch64-linux-user/install $GITHUB_WORKSPACE/qemu-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_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@v2.1.0
- 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@v2.1.7
- with:
- path: qemu-install
- key: qemu-aarch64-install-1
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: 8746309137ba470d1b2e8f5ce86ac228625db940
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- ./configure --prefix=install --target-list=aarch64-linux-user --disable-system
- make -j2
- make install
- cp -r aarch64-linux-user/install $GITHUB_WORKSPACE/qemu-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_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@v2.1.0
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build-arm82dot-omp/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@v2.1.7
- with:
- path: qemu-install
- key: qemu-mipsel-install-1
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: 8746309137ba470d1b2e8f5ce86ac228625db940
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- ./configure --prefix=install --target-list=mipsel-linux-user --disable-system
- make -j2
- make install
- cp -r mipsel-linux-user/install $GITHUB_WORKSPACE/qemu-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@v2.1.0
- 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@v2.1.7
- with:
- path: qemu-install
- key: qemu-mips64el-install-1
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: 8746309137ba470d1b2e8f5ce86ac228625db940
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- ./configure --prefix=install --target-list=mips64el-linux-user --disable-system
- make -j2
- make install
- cp -r mips64el-linux-user/install $GITHUB_WORKSPACE/qemu-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@v2.1.0
- 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@v2.1.7
- with:
- path: qemu-install
- key: qemu-riscv64-install-1
- - name: checkout-qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- uses: actions/checkout@v3
- with:
- repository: qemu/qemu
- path: qemu
- ref: 8746309137ba470d1b2e8f5ce86ac228625db940
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- cd qemu
- ./configure --prefix=install --target-list=riscv64-linux-user --disable-system
- make -j2
- make install
- cp -r riscv64-linux-user/install $GITHUB_WORKSPACE/qemu-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@v2.1.0
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
-
- linux-gcc-riscv64-rvv:
- 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@v2.1.7
- with:
- path: qemu-install
- key: qemu-riscv64-rvv-install-20210610
-
- - 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: sifive/qemu
- path: qemu
- ref: 7a3e8e23b4cf1422ec48e9d4b4009337a05a635d
- - name: qemu
- if: steps.cache-qemu.outputs.cache-hit != 'true'
- run: |
- wget https://download.qemu.org/qemu-6.0.0.tar.xz
- tar -xf qemu-6.0.0.tar.xz
- cp -r qemu/fpu qemu-6.0.0/
- cp -r qemu/include/fpu qemu-6.0.0/include/
- cp -r qemu/target/riscv qemu-6.0.0/target/
- cp -r qemu/linux-user/elfload.c qemu-6.0.0/linux-user/
- cd qemu-6.0.0
- mkdir build
- cd build
- ../configure --prefix=`pwd`/install --target-list=riscv64-linux-user --disable-system
- make -j2
- make install
- cp -r install $GITHUB_WORKSPACE/qemu-install
-
- - name: cache-riscv
- id: cache-riscv
- uses: actions/cache@v2.1.7
- 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=$GITHUB_WORKSPACE/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 2
-
- - name: test-vlen128
- run: |
- export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
- cd build
- TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;rv64,x-v=true,x-Zfh=true,vlen=128,elen=64,vext_spec=v1.0;-L;$GITHUB_WORKSPACE/rv64gcv-install/sysroot" ctest --output-on-failure -j 2
-
- - name: lcov-collect-vlen128
- 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 '*/rv64gcv-install/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov-vlen128
- uses: codecov/codecov-action@v2.1.0
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
-
- - name: test-vlen256
- run: |
- export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
- cd build
- TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;rv64,x-v=true,x-Zfh=true,vlen=256,elen=64,vext_spec=v1.0;-L;$GITHUB_WORKSPACE/rv64gcv-install/sysroot" ctest --output-on-failure -j 2
-
- - name: lcov-collect-vlen256
- 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 '*/rv64gcv-install/*' -o lcov.info
- lcov --list lcov.info
- - name: codecov-vlen256
- uses: codecov/codecov-action@v2.1.0
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- file: build/lcov.info
|