summaryrefslogtreecommitdiff
path: root/.ci
diff options
context:
space:
mode:
authorWook Song <wook16.song@samsung.com>2024-01-02 15:44:47 +0900
committerWook Song <wook16.song@samsung.com>2024-01-02 15:44:47 +0900
commitd29facf659495142bf96fc34cf77092b119bf5a4 (patch)
tree73e1c386dd5d0430198fae51bf63fae81994103f /.ci
parent1df4c5bff4ef6ddfef49c080af49b764080f1fe4 (diff)
downloadncnn-d29facf659495142bf96fc34cf77092b119bf5a4.tar.gz
ncnn-d29facf659495142bf96fc34cf77092b119bf5a4.tar.bz2
ncnn-d29facf659495142bf96fc34cf77092b119bf5a4.zip
Imported Upstream version 20240102upstream/20240102upstream
Diffstat (limited to '.ci')
-rw-r--r--.ci/linux-x64-cpu-gcc.yml127
-rw-r--r--.ci/pnnx.yml138
-rw-r--r--.ci/test-coverage.yml1112
3 files changed, 1377 insertions, 0 deletions
diff --git a/.ci/linux-x64-cpu-gcc.yml b/.ci/linux-x64-cpu-gcc.yml
new file mode 100644
index 0000000..f0bf4ce
--- /dev/null
+++ b/.ci/linux-x64-cpu-gcc.yml
@@ -0,0 +1,127 @@
+name: linux-x64-cpu-gcc
+on:
+ push:
+ branches: [master]
+ paths:
+ - '.ci/linux-x64-cpu-gcc.yml'
+ - 'CMakeLists.txt'
+ - 'cmake/**'
+ - 'src/*'
+ - 'src/layer/*'
+ - 'src/layer/x86/**'
+ - 'tests/**'
+ - 'tools/**'
+ - '!tools/pnnx/**'
+ - 'examples/**'
+ mr:
+ target-branches: [master]
+ paths:
+ - '.ci/linux-x64-cpu-gcc.yml'
+ - 'CMakeLists.txt'
+ - 'cmake/**'
+ - 'src/*'
+ - 'src/layer/*'
+ - 'src/layer/x86/**'
+ - 'tests/**'
+ - 'tools/**'
+ - '!tools/pnnx/**'
+ - 'examples/**'
+concurrency:
+ group: linux-x64-cpu-gcc-${{ ci.head_ref }}
+
+jobs:
+ linux-gcc:
+ name: linux-gcc
+ strategy:
+ matrix:
+ include:
+ - { SSE2: 'OFF', AVX: 'OFF', AVX2: 'OFF', AVX512: 'OFF' }
+ - { SSE2: 'ON', AVX: 'OFF', AVX2: 'OFF', AVX512: 'OFF' }
+ - { SSE2: 'ON', AVX: 'ON', AVX2: 'OFF', AVX512: 'OFF' }
+ - { SSE2: 'ON', AVX: 'ON', AVX2: 'ON', AVX512: 'OFF' }
+ - { SSE2: 'ON', AVX: 'ON', AVX2: 'ON', AVX512: 'ON' }
+
+ runs-on:
+ pool-name: docker
+ container:
+ image: bkci/ci:ubuntu
+ steps:
+ - name: checkout
+ checkout: self
+ with:
+ strategy: FRESH_CHECKOUT
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: install-deps
+ run: |
+ apt-get update
+ apt-get install -y libprotobuf-dev protobuf-compiler libopencv-dev
+
+ - name: build
+ run: |
+ mkdir build && cd build
+ cmake -DNCNN_SSE2=${{matrix.SSE2}} -DNCNN_AVX=${{matrix.AVX}} -DNCNN_AVX2=${{matrix.AVX2}} -DNCNN_AVX512=${{matrix.AVX512}} -DNCNN_BUILD_TESTS=ON ..
+ cmake --build . -j $(nproc)
+ - name: test
+ run: cd build && ctest --output-on-failure -j $(nproc)
+ - name: build-shared
+ run: |
+ mkdir build-shared && cd build-shared
+ cmake -DNCNN_SSE2=${{matrix.SSE2}} -DNCNN_AVX=${{matrix.AVX}} -DNCNN_AVX2=${{matrix.AVX2}} -DNCNN_AVX512=${{matrix.AVX512}} -DNCNN_SHARED_LIB=ON ..
+ cmake --build . -j $(nproc)
+ - name: build-noint8
+ run: |
+ mkdir build-noint8 && cd build-noint8
+ cmake -DNCNN_SSE2=${{matrix.SSE2}} -DNCNN_AVX=${{matrix.AVX}} -DNCNN_AVX2=${{matrix.AVX2}} -DNCNN_AVX512=${{matrix.AVX512}} -DNCNN_INT8=OFF -DNCNN_BUILD_TESTS=ON ..
+ cmake --build . -j $(nproc)
+ - name: test-noint8
+ run: cd build-noint8 && ctest --output-on-failure -j $(nproc)
+
+ linux-gcc-cpp03-nostdio-nostring-simplestl:
+ runs-on:
+ pool-name: docker
+ container:
+ image: bkci/ci:ubuntu
+ steps:
+ - name: checkout
+ checkout: self
+ with:
+ strategy: FRESH_CHECKOUT
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: build-nostdio
+ run: |
+ mkdir build-nostdio && cd build-nostdio
+ cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host.gcc-c++03.toolchain.cmake -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
+ cmake --build . -j $(nproc)
+ - name: test-nostdio
+ run: cd build-nostdio && ctest --output-on-failure -j $(nproc)
+ - name: build-nostdio-nostring
+ run: |
+ mkdir build-nostdio-nostring && cd build-nostdio-nostring
+ cmake -DNCNN_STDIO=OFF -DNCNN_STRING=OFF -DNCNN_BUILD_TESTS=OFF -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
+ cmake --build . -j $(nproc)
+ - name: build-simplestl
+ run: |
+ mkdir build-simplestl && cd build-simplestl
+ cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host-c.gcc.toolchain.cmake -DNCNN_STDIO=ON -DNCNN_STRING=ON -DNCNN_SIMPLESTL=ON -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
+ cmake --build . -j $(nproc)
+ - name: test-simplestl
+ run: cd build-simplestl && ctest --output-on-failure -j $(nproc)
+ - name: build-simplestl-simpleomp
+ run: |
+ mkdir build-simplestl-simpleomp && cd build-simplestl-simpleomp
+ cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host-c.gcc.toolchain.cmake -DNCNN_STDIO=ON -DNCNN_STRING=ON -DNCNN_SIMPLESTL=ON -DNCNN_SIMPLEOMP=ON -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
+ cmake --build . -j $(nproc)
+ - name: test-simplestl-simpleomp
+ run: cd build-simplestl-simpleomp && ctest --output-on-failure -j $(nproc)
+ - name: build-simplestl-simplemath
+ run: |
+ mkdir build-simplestl-simplemath && cd build-simplestl-simplemath
+ cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host-c.gcc.toolchain.cmake -DNCNN_STDIO=ON -DNCNN_STRING=ON -DNCNN_SIMPLESTL=ON -DNCNN_SIMPLEMATH=ON -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
+ cmake --build . -j $(nproc)
+ - name: test-simplestl-simplemath
+ run: cd build-simplestl-simplemath && ctest --output-on-failure -j $(nproc)
+
diff --git a/.ci/pnnx.yml b/.ci/pnnx.yml
new file mode 100644
index 0000000..1660262
--- /dev/null
+++ b/.ci/pnnx.yml
@@ -0,0 +1,138 @@
+name: pnnx
+on:
+ push:
+ branches: [master]
+ paths:
+ - '.ci/pnnx.yml'
+ - 'tools/pnnx/**'
+ - '!tools/pnnx/README.md'
+ mr:
+ target-branches: [master]
+ paths:
+ - '.ci/pnnx.yml'
+ - 'tools/pnnx/**'
+ - '!tools/pnnx/README.md'
+concurrency:
+ group: pnnx-${{ ci.head_ref }}
+
+jobs:
+ ubuntu:
+ strategy:
+ matrix:
+ include:
+ - torch-version: 1.8.1
+ torchvision-version: 0.9.1
+ torchvision-cache-key: '0_9_1'
+
+ - torch-version: 1.9.1
+ torchvision-version: 0.10.1
+ torchvision-cache-key: '0_10_1'
+
+ - torch-version: 1.10.0
+ torchvision-version: 0.11.1
+ torchvision-cache-key: '0_11_1'
+
+ - torch-version: 1.11.0
+ torchvision-version: 0.12.0
+ torchvision-cache-key: '0_12_0'
+
+ - torch-version: 1.12.0
+ torchvision-version: 0.13.0
+ torchvision-cache-key: '0_13_0'
+
+ - torch-version: 1.13.0
+ torchvision-version: 0.14.0
+ torchvision-cache-key: '0_14_0'
+
+ - torch-version: 2.0.0
+ torchvision-version: 0.15.1
+ torchvision-cache-key: '0_15_1'
+
+ - torch-version: 2.1.0
+ torchvision-version: 0.16.0
+ torchvision-cache-key: '0_16_0'
+
+ runs-on:
+ pool-name: docker
+ container:
+ image: bkci/ci:ubuntu
+ steps:
+ - name: checkout
+ checkout: self
+ with:
+ strategy: FRESH_CHECKOUT
+ enableGitLfs: false
+
+ - name: install-deps
+ run: |
+ apt-get update
+ apt-get install -y python3-pip libjpeg-dev libpng-dev libprotobuf-dev protobuf-compiler
+ python3 -m pip install --upgrade pip
+ apt-get remove -y python3-setuptools
+ pip3 install -U setuptools
+ pip3 install -U pytest wheel twine requests einops
+
+ - name: setup pytorch
+ run: |
+ export PYTHONUSERBASE=${{ci.workspace}}/torch-${{matrix.torch-version}}
+ pip3 install --user torch==${{matrix.torch-version}}+cpu torchvision==${{matrix.torchvision-version}}+cpu -f https://download.pytorch.org/whl/torch_stable.html
+
+ - name: cache-torchvision
+ id: cache-torchvision
+ uses: cache@1.*
+ with:
+ cachePaths: torchvision-${{matrix.torchvision-version}}-install
+ cacheKey: torchvision-${{matrix.torchvision-cache-key}}-linux-install-20211228
+ - name: checkout-torchvision
+ if: steps.cache-torchvision.outputs.cacheHit != 'true'
+ checkout: https://github.com/pytorch/vision.git
+ with:
+ pullType: TAG
+ refName: v${{matrix.torchvision-version}}
+ localPath: vision
+ enableSubmodule: false
+ enableGitLfs: false
+ - name: torchvision
+ if: steps.cache-torchvision.outputs.cacheHit != 'true'
+ run: |
+ cd vision
+ mkdir -p build; cd build
+ cmake -DCMAKE_INSTALL_PREFIX=${{ci.workspace}}/torchvision-${{matrix.torchvision-version}}-install -DTorch_DIR=${{ci.workspace}}/torch-${{matrix.torch-version}}/lib/python3.9/site-packages/torch/share/cmake/Torch -DCMAKE_BUILD_TYPE=Release ..
+ cmake --build . -j $(nproc)
+ cmake --build . --target install
+
+ - name: build-ncnn
+ run: |
+ export PYTHONUSERBASE=${{ci.workspace}}/torch-${{matrix.torch-version}}
+ mkdir build && cd build
+ cmake -DCMAKE_BUILD_TYPE=Release -DNCNN_PYTHON=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
+ cmake --build . -j $(nproc)
+ cd ..
+ export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc)
+ pip3 install --user .
+
+ - name: build-pnnx
+ run: |
+ export PYTHONUSERBASE=${{ci.workspace}}/torch-${{matrix.torch-version}}
+ cd tools/pnnx
+ mkdir build && cd build
+ cmake -DCMAKE_BUILD_TYPE=Release -DTorchVision_INSTALL_DIR=${{ci.workspace}}/torchvision-${{matrix.torchvision-version}}-install ..
+ cmake --build . -j 16
+
+ - name: test
+ run: |
+ export PYTHONUSERBASE=${{ci.workspace}}/torch-${{matrix.torch-version}}
+ export OMP_NUM_THREADS=1
+ export MKL_NUM_THREADS=1
+ export MKL_ENABLE_INSTRUCTIONS=SSE4_2
+ cd tools/pnnx
+ cd build && ctest --output-on-failure -j 16
+
+ - name: python-pnnx
+ run: |
+ export PYTHONUSERBASE=${{ci.workspace}}/torch-${{matrix.torch-version}}
+ export PNNX_WHEEL_WITHOUT_BUILD=ON
+ cd tools/pnnx
+ cp build/src/pnnx python/pnnx/
+ python3 setup.py install --user
+ pytest python/tests/
diff --git a/.ci/test-coverage.yml b/.ci/test-coverage.yml
new file mode 100644
index 0000000..0b016be
--- /dev/null
+++ b/.ci/test-coverage.yml
@@ -0,0 +1,1112 @@
+name: test-coverage
+on:
+ push:
+ branches: [master]
+ paths:
+ - '.ci/test-coverage.yml'
+ - 'CMakeLists.txt'
+ - 'cmake/**'
+ - 'src/**'
+ - 'tests/**'
+ - 'toolchains/**'
+ mr:
+ target-branches: [master]
+ paths:
+ - '.ci/test-coverage.yml'
+ - 'CMakeLists.txt'
+ - 'cmake/**'
+ - 'src/**'
+ - 'tests/**'
+ - 'toolchains/**'
+concurrency:
+ group: test-coverage-${{ ci.head_ref }}
+
+jobs:
+ linux-gcc-gpu:
+ name: linux-gcc-gpu
+ runs-on:
+ pool-name: docker
+ container:
+ image: bkci/ci:ubuntu
+ steps:
+ - name: checkout
+ checkout: self
+ with:
+ strategy: FRESH_CHECKOUT
+ enableGitLfs: false
+
+ - name: install-deps
+ run: |
+ apt-get update
+ apt-get install -y lcov libvulkan-dev
+ curl https://uploader.codecov.io/verification.gpg | gpg --no-default-keyring --keyring trustedkeys.gpg --import
+ curl -Os https://uploader.codecov.io/latest/linux/codecov
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig
+ gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
+ shasum -a 256 -c codecov.SHA256SUM
+ chmod +x codecov
+
+ - name: cache-swiftshader
+ id: cache-swiftshader
+ uses: cache@1.*
+ with:
+ cachePaths: swiftshader-install
+ cacheKey: swiftshader-linux-install-20230420-1
+
+ - name: checkout-swiftshader
+ if: steps.cache-swiftshader.outputs.cacheHit != 'true'
+ checkout: https://github.com/google/swiftshader.git
+ with:
+ pullType: COMMIT_ID
+ refName: dd55e592406dc0bae219df11adec6363840aff4a
+ localPath: swiftshader
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: swiftshader
+ if: steps.cache-swiftshader.outputs.cacheHit != 'true'
+ run: |
+ cd swiftshader
+ git -c submodule."third_party/git-hooks".update=none submodule update --init --recursive
+ mkdir -p build; cd build
+ cmake -DCMAKE_INSTALL_PREFIX=install -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 $(nproc)
+ mkdir ${{ci.workspace}}/swiftshader-install
+ cp Linux/* ${{ci.workspace}}/swiftshader-install
+
+ - name: build
+ 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 ..
+ cmake --build . -j $(nproc)
+ - name: test
+ run: |
+ printf "[Processor]\nThreadCount=4\n" > build/tests/SwiftShader.ini
+ export VK_ICD_FILENAMES="${{ci.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
+ run: ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build/lcov.info
+
+ linux-gcc-gpu-lavapipe:
+ name: linux-gcc-gpu-lavapipe
+ runs-on:
+ pool-name: docker
+ container:
+ image: bkci/ci:ubuntu
+ steps:
+ - name: checkout
+ checkout: self
+ with:
+ strategy: FRESH_CHECKOUT
+ enableGitLfs: false
+
+ - name: install-deps
+ run: |
+ apt-get update
+ apt-get install -y lcov libvulkan-dev libxcb-shm0
+ curl https://uploader.codecov.io/verification.gpg | gpg --no-default-keyring --keyring trustedkeys.gpg --import
+ curl -Os https://uploader.codecov.io/latest/linux/codecov
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig
+ gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
+ shasum -a 256 -c codecov.SHA256SUM
+ chmod +x codecov
+
+ - name: cache-lavapipe
+ id: cache-lavapipe
+ uses: cache@1.*
+ with:
+ cachePaths: lavapipe-install
+ cacheKey: lavapipe-linux-install-20211127-4
+
+ - name: checkout-lavapipe
+ if: steps.cache-lavapipe.outputs.cacheHit != 'true'
+ checkout: https://github.com/mesa3d/mesa.git
+ with:
+ pullType: COMMIT_ID
+ refName: cd39180cfab20734744b379b085cc3b5c2cecd3a
+ localPath: mesa
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: lavapipe
+ if: steps.cache-lavapipe.outputs.cacheHit != 'true'
+ run: |
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye main' | tee -a /etc/apt/sources.list
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye-updates main' | tee -a /etc/apt/sources.list
+ apt-get update
+ apt-get build-dep -y mesa
+ mkdir -p "${{ci.workspace}}/lavapipe-install"
+ cd mesa
+ mkdir build
+ cd build
+ meson -Dprefix="${{ci.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 -j$(nproc)
+ ninja install
+ find ${{ci.workspace}}/lavapipe-install
+ cat ${{ci.workspace}}/lavapipe-install/share/vulkan/icd.d/lvp_icd.x86_64.json
+
+ - name: build
+ 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 ..
+ cmake --build . -j $(nproc)
+ - name: test
+ run: |
+ export LP_NUM_THREADS=4
+ export VK_ICD_FILENAMES="${{ci.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
+ run: ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build/lcov.info
+
+ linux-gcc-x64:
+ name: linux-gcc-x64
+ strategy:
+ matrix:
+ # openmp: ['OFF', 'ON']
+ include:
+ - { SSE2: 'OFF', AVX: 'OFF', XOP: 'OFF', F16C: 'OFF', FMA: 'OFF', AVX2: 'OFF', AVX512: 'OFF', AVX512VNNI: 'OFF', AVXVNNI: 'OFF', AVX512BF16: 'OFF', AVX512FP16: 'OFF'}
+ - { SSE2: 'ON', AVX: 'OFF', XOP: 'OFF', F16C: 'OFF', FMA: 'OFF', AVX2: 'OFF', AVX512: 'OFF', AVX512VNNI: 'OFF', AVXVNNI: 'OFF', AVX512BF16: 'OFF', AVX512FP16: 'OFF'}
+ - { SSE2: 'ON', AVX: 'ON', XOP: 'OFF', F16C: 'OFF', FMA: 'OFF', AVX2: 'OFF', AVX512: 'OFF', AVX512VNNI: 'OFF', AVXVNNI: 'OFF', AVX512BF16: 'OFF', AVX512FP16: 'OFF'}
+ - { SSE2: 'ON', AVX: 'ON', XOP: 'OFF', F16C: 'ON', FMA: 'ON', AVX2: 'ON', AVX512: 'OFF', AVX512VNNI: 'OFF', AVXVNNI: 'OFF', AVX512BF16: 'OFF', AVX512FP16: 'OFF'}
+ - { SSE2: 'ON', AVX: 'ON', XOP: 'OFF', F16C: 'ON', FMA: 'ON', AVX2: 'ON', AVX512: 'ON', AVX512VNNI: 'ON', AVXVNNI: 'OFF', AVX512BF16: 'OFF', AVX512FP16: 'OFF'}
+
+ runs-on:
+ pool-name: docker
+ container:
+ image: bkci/ci:ubuntu
+ steps:
+ - name: checkout
+ checkout: self
+ with:
+ strategy: FRESH_CHECKOUT
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: install-deps
+ run: |
+ apt-get update
+ apt-get install -y lcov
+ curl https://uploader.codecov.io/verification.gpg | gpg --no-default-keyring --keyring trustedkeys.gpg --import
+ curl -Os https://uploader.codecov.io/latest/linux/codecov
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig
+ gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
+ shasum -a 256 -c codecov.SHA256SUM
+ chmod +x codecov
+
+ - name: build
+ run: |
+ mkdir build && cd build
+ 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 \
+ -DNCNN_SSE2=${{matrix.SSE2}} \
+ -DNCNN_AVX=${{matrix.AVX}} \
+ -DNCNN_XOP=${{matrix.XOP}} \
+ -DNCNN_F16C=${{matrix.F16C}} \
+ -DNCNN_FMA=${{matrix.FMA}} \
+ -DNCNN_AVX2=${{matrix.AVX2}} \
+ -DNCNN_AVX512=${{matrix.AVX512}} \
+ -DNCNN_AVXVNNI=${{matrix.AVXVNNI}} \
+ -DNCNN_AVX512VNNI=${{matrix.AVX512VNNI}} \
+ -DNCNN_AVX512BF16=${{matrix.AVX512BF16}} \
+ -DNCNN_AVX512FP16=${{matrix.AVX512FP16}} \
+ ..
+ cmake --build . -j $(nproc)
+ - name: test
+ run: cd build && ctest --output-on-failure -j $(nproc)
+ - 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
+ run: ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build/lcov.info
+
+ linux-gcc-arm:
+ name: linux-gcc-arm
+ strategy:
+ matrix:
+ # openmp: ['OFF', 'ON']
+ include:
+ - { GNU_INLINE_ASM: 'ON'}
+ - { GNU_INLINE_ASM: 'OFF'}
+
+ runs-on:
+ pool-name: docker
+ container:
+ image: bkci/ci:ubuntu
+ steps:
+ - name: checkout
+ checkout: self
+ with:
+ strategy: FRESH_CHECKOUT
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: install-deps
+ run: |
+ apt-get update
+ apt-get install -y lcov g++-arm-linux-gnueabi g++-arm-linux-gnueabihf libcapstone4 libglib2.0-0
+ curl https://uploader.codecov.io/verification.gpg | gpg --no-default-keyring --keyring trustedkeys.gpg --import
+ curl -Os https://uploader.codecov.io/latest/linux/codecov
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig
+ gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
+ shasum -a 256 -c codecov.SHA256SUM
+ chmod +x codecov
+
+ - name: cache-qemu
+ id: cache-qemu
+ uses: cache@1.*
+ with:
+ cachePaths: qemu-install
+ cacheKey: qemu-arm-install-20220831-1
+
+ - name: checkout-qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ checkout: https://github.com/qemu/qemu.git
+ with:
+ pullType: COMMIT_ID
+ refName: 621da7789083b80d6f1ff1c0fb499334007b4f51
+ localPath: qemu
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ run: |
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye main' | tee -a /etc/apt/sources.list
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye-updates main' | tee -a /etc/apt/sources.list
+ apt-get update
+ apt-get build-dep -y qemu
+ cd qemu
+ ./configure --prefix=${{ci.workspace}}/qemu-install --target-list=arm-linux-user --disable-system
+ make -j$(nproc)
+ make install
+
+ - name: build
+ 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_GNU_INLINE_ASM=${{matrix.GNU_INLINE_ASM}} -DNCNN_VFPV4=ON -DNCNN_ARM82=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
+ cmake --build . -j $(nproc)
+ - name: test
+ run: |
+ export PATH=${{ci.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 $(nproc)
+ - 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: build-armhf-vfpv3-d16
+ run: |
+ mkdir build-armhf-vfpv3-d16 && cd build-armhf-vfpv3-d16
+ cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabihf-vfpv3-d16.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_GNU_INLINE_ASM=${{matrix.GNU_INLINE_ASM}} -DNCNN_VFPV4=OFF -DNCNN_ARM82=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
+ cmake --build . -j $(nproc)
+ - name: test-armhf-vfpv3-d16
+ run: |
+ export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
+ cd build-armhf-vfpv3-d16
+ TESTS_EXECUTABLE_LOADER=qemu-arm TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/arm-linux-gnueabihf" ctest --output-on-failure -j $(nproc)
+ - name: lcov-collect-armhf-vfpv3-d16
+ run: |
+ cd build-armhf-vfpv3-d16
+ lcov -d ./src -c -o lcov.info
+ lcov -r lcov.info '/usr/*' -o lcov.info
+ lcov -r lcov.info '*/build-armhf-vfpv3-d16/*' -o lcov.info
+ lcov --list lcov.info
+
+ - name: codecov
+ run: |
+ ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build/lcov.info
+ ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build-armhf-vfpv3-d16/lcov.info
+
+ linux-gcc-aarch64:
+ name: linux-gcc-aarch64
+ strategy:
+ matrix:
+ # openmp: ['OFF', 'ON']
+ include:
+ - { GNU_INLINE_ASM: 'ON', ARM82: 'OFF', ARM82DOT: 'OFF', ARM82FP16FML: 'OFF', ARM84BF16: 'OFF', ARM84I8MM: 'OFF', ARM86SVE: 'OFF'}
+ - { GNU_INLINE_ASM: 'ON', ARM82: 'ON', ARM82DOT: 'OFF', ARM82FP16FML: 'OFF', ARM84BF16: 'OFF', ARM84I8MM: 'OFF', ARM86SVE: 'OFF'}
+ - { GNU_INLINE_ASM: 'ON', ARM82: 'ON', ARM82DOT: 'ON', ARM82FP16FML: 'ON', ARM84BF16: 'OFF', ARM84I8MM: 'OFF', ARM86SVE: 'OFF'}
+ - { GNU_INLINE_ASM: 'ON', ARM82: 'ON', ARM82DOT: 'ON', ARM82FP16FML: 'ON', ARM84BF16: 'ON', ARM84I8MM: 'ON', ARM86SVE: 'OFF'}
+ - { GNU_INLINE_ASM: 'OFF', ARM82: 'ON', ARM82DOT: 'ON', ARM82FP16FML: 'ON', ARM84BF16: 'ON', ARM84I8MM: 'ON', ARM86SVE: 'OFF'}
+
+ runs-on:
+ pool-name: docker
+ container:
+ image: bkci/ci:ubuntu
+ steps:
+ - name: checkout
+ checkout: self
+ with:
+ strategy: FRESH_CHECKOUT
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: install-deps
+ run: |
+ apt-get update
+ apt-get install -y lcov g++-aarch64-linux-gnu libcapstone4 libglib2.0-0
+ curl https://uploader.codecov.io/verification.gpg | gpg --no-default-keyring --keyring trustedkeys.gpg --import
+ curl -Os https://uploader.codecov.io/latest/linux/codecov
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig
+ gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
+ shasum -a 256 -c codecov.SHA256SUM
+ chmod +x codecov
+
+ - name: cache-qemu
+ id: cache-qemu
+ uses: cache@1.*
+ with:
+ cachePaths: qemu-install
+ cacheKey: qemu-aarch64-install-20220831-1
+
+ - name: checkout-qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ checkout: https://github.com/qemu/qemu.git
+ with:
+ pullType: COMMIT_ID
+ refName: 621da7789083b80d6f1ff1c0fb499334007b4f51
+ localPath: qemu
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ run: |
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye main' | tee -a /etc/apt/sources.list
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye-updates main' | tee -a /etc/apt/sources.list
+ apt-get update
+ apt-get build-dep -y qemu
+ cd qemu
+ ./configure --prefix=${{ci.workspace}}/qemu-install --target-list=aarch64-linux-user --disable-system
+ make -j$(nproc)
+ make install
+
+ - name: build
+ 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_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON \
+ -DNCNN_GNU_INLINE_ASM=${{matrix.GNU_INLINE_ASM}} \
+ -DNCNN_ARM82=${{matrix.ARM82}} \
+ -DNCNN_ARM82DOT=${{matrix.ARM82DOT}} \
+ -DNCNN_ARM82FP16FML=${{matrix.ARM82FP16FML}} \
+ -DNCNN_ARM84BF16=${{matrix.ARM84BF16}} \
+ -DNCNN_ARM84I8MM=${{matrix.ARM84I8MM}} \
+ ..
+ cmake --build . -j $(nproc)
+ - name: test
+ run: |
+ export PATH=${{ci.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 $(nproc)
+ - 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
+ run: ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build/lcov.info
+
+ linux-gcc-mipsisa32r6el:
+ name: linux-gcc-mipsisa32r6el
+ strategy:
+ matrix:
+ OPENMP: ['OFF', 'ON']
+
+ runs-on:
+ pool-name: docker
+ container:
+ image: bkci/ci:ubuntu
+ steps:
+ - name: checkout
+ checkout: self
+ with:
+ strategy: FRESH_CHECKOUT
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: install-deps
+ run: |
+ apt-get update
+ apt-get install -y lcov g++-mipsisa32r6el-linux-gnu libcapstone4 libglib2.0-0
+ curl https://uploader.codecov.io/verification.gpg | gpg --no-default-keyring --keyring trustedkeys.gpg --import
+ curl -Os https://uploader.codecov.io/latest/linux/codecov
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig
+ gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
+ shasum -a 256 -c codecov.SHA256SUM
+ chmod +x codecov
+
+ - name: cache-qemu
+ id: cache-qemu
+ uses: cache@1.*
+ with:
+ cachePaths: qemu-install
+ cacheKey: qemu-mipsel-install-20220831-1
+
+ - name: checkout-qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ checkout: https://github.com/qemu/qemu.git
+ with:
+ pullType: COMMIT_ID
+ refName: 621da7789083b80d6f1ff1c0fb499334007b4f51
+ localPath: qemu
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ run: |
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye main' | tee -a /etc/apt/sources.list
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye-updates main' | tee -a /etc/apt/sources.list
+ apt-get update
+ apt-get build-dep -y qemu
+ cd qemu
+ ./configure --prefix=${{ci.workspace}}/qemu-install --target-list=mipsel-linux-user --disable-system
+ make -j$(nproc)
+ make install
+
+ - name: build
+ 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_OPENMP=${{matrix.OPENMP}} -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
+ cmake --build . -j $(nproc)
+ - name: test
+ run: |
+ export PATH=${{ci.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 $(nproc)
+ - 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
+ run: ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build/lcov.info
+
+ linux-gcc-mipsisa64r6el:
+ name: linux-gcc-mipsisa64r6el
+ strategy:
+ matrix:
+ OPENMP: ['OFF', 'ON']
+
+ runs-on:
+ pool-name: docker
+ container:
+ image: bkci/ci:ubuntu
+ steps:
+ - name: checkout
+ checkout: self
+ with:
+ strategy: FRESH_CHECKOUT
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: install-deps
+ run: |
+ apt-get update
+ apt-get install -y lcov g++-mipsisa64r6el-linux-gnuabi64 libcapstone4 libglib2.0-0
+ curl https://uploader.codecov.io/verification.gpg | gpg --no-default-keyring --keyring trustedkeys.gpg --import
+ curl -Os https://uploader.codecov.io/latest/linux/codecov
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig
+ gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
+ shasum -a 256 -c codecov.SHA256SUM
+ chmod +x codecov
+
+ - name: cache-qemu
+ id: cache-qemu
+ uses: cache@1.*
+ with:
+ cachePaths: qemu-install
+ cacheKey: qemu-mips64el-install-20220831-1
+
+ - name: checkout-qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ checkout: https://github.com/qemu/qemu.git
+ with:
+ pullType: COMMIT_ID
+ refName: 621da7789083b80d6f1ff1c0fb499334007b4f51
+ localPath: qemu
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ run: |
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye main' | tee -a /etc/apt/sources.list
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye-updates main' | tee -a /etc/apt/sources.list
+ apt-get update
+ apt-get build-dep -y qemu
+ cd qemu
+ ./configure --prefix=${{ci.workspace}}/qemu-install --target-list=mips64el-linux-user --disable-system
+ make -j$(nproc)
+ make install
+
+ - name: build
+ 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=${{matrix.OPENMP}} -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
+ cmake --build . -j $(nproc)
+ - name: test
+ run: |
+ export PATH=${{ci.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 $(nproc)
+ - 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
+ run: ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build/lcov.info
+
+ linux-gcc-powerpc:
+ name: linux-gcc-powerpc
+ strategy:
+ matrix:
+ OPENMP: ['OFF', 'ON']
+
+ runs-on:
+ pool-name: docker
+ container:
+ image: bkci/ci:ubuntu
+ steps:
+ - name: checkout
+ checkout: self
+ with:
+ strategy: FRESH_CHECKOUT
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: install-deps
+ run: |
+ apt-get update
+ apt-get install -y lcov g++-powerpc-linux-gnu libcapstone4 libglib2.0-0
+ curl https://uploader.codecov.io/verification.gpg | gpg --no-default-keyring --keyring trustedkeys.gpg --import
+ curl -Os https://uploader.codecov.io/latest/linux/codecov
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig
+ gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
+ shasum -a 256 -c codecov.SHA256SUM
+ chmod +x codecov
+
+ - name: cache-qemu
+ id: cache-qemu
+ uses: cache@1.*
+ with:
+ cachePaths: qemu-install
+ cacheKey: qemu-ppc-install-20220831-1
+
+ - name: checkout-qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ checkout: https://github.com/qemu/qemu.git
+ with:
+ pullType: COMMIT_ID
+ refName: 621da7789083b80d6f1ff1c0fb499334007b4f51
+ localPath: qemu
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ run: |
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye main' | tee -a /etc/apt/sources.list
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye-updates main' | tee -a /etc/apt/sources.list
+ apt-get update
+ apt-get build-dep -y qemu
+ cd qemu
+ ./configure --prefix=${{ci.workspace}}/qemu-install --target-list=ppc-linux-user --disable-system
+ make -j$(nproc)
+ make install
+
+ - name: build
+ run: |
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/powerpc-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_OPENMP=${{matrix.OPENMP}} -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
+ cmake --build . -j $(nproc)
+ - name: test
+ run: |
+ export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
+ cd build
+ TESTS_EXECUTABLE_LOADER=qemu-ppc TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/powerpc-linux-gnu" ctest --output-on-failure -j $(nproc)
+ - 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
+ run: ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build/lcov.info
+
+ linux-gcc-powerpc64le:
+ name: linux-gcc-powerpc64le
+ strategy:
+ matrix:
+ OPENMP: ['OFF', 'ON']
+
+ runs-on:
+ pool-name: docker
+ container:
+ image: bkci/ci:ubuntu
+ steps:
+ - name: checkout
+ checkout: self
+ with:
+ strategy: FRESH_CHECKOUT
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: install-deps
+ run: |
+ apt-get update
+ apt-get install -y lcov g++-powerpc64le-linux-gnu libcapstone4 libglib2.0-0
+ curl https://uploader.codecov.io/verification.gpg | gpg --no-default-keyring --keyring trustedkeys.gpg --import
+ curl -Os https://uploader.codecov.io/latest/linux/codecov
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig
+ gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
+ shasum -a 256 -c codecov.SHA256SUM
+ chmod +x codecov
+
+ - name: cache-qemu
+ id: cache-qemu
+ uses: cache@1.*
+ with:
+ cachePaths: qemu-install
+ cacheKey: qemu-ppc64le-install-20220831-1
+
+ - name: checkout-qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ checkout: https://github.com/qemu/qemu.git
+ with:
+ pullType: COMMIT_ID
+ refName: 621da7789083b80d6f1ff1c0fb499334007b4f51
+ localPath: qemu
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ run: |
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye main' | tee -a /etc/apt/sources.list
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye-updates main' | tee -a /etc/apt/sources.list
+ apt-get update
+ apt-get build-dep -y qemu
+ cd qemu
+ ./configure --prefix=${{ci.workspace}}/qemu-install --target-list=ppc64le-linux-user --disable-system
+ make -j$(nproc)
+ make install
+
+ - name: build
+ run: |
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/powerpc64le-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_OPENMP=${{matrix.OPENMP}} -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
+ cmake --build . -j $(nproc)
+ - name: test
+ run: |
+ export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
+ cd build
+ TESTS_EXECUTABLE_LOADER=qemu-ppc64le TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/powerpc64le-linux-gnu" ctest --output-on-failure -j $(nproc)
+ - 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
+ run: ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build/lcov.info
+
+ linux-gcc-riscv64:
+ name: linux-gcc-riscv64
+ strategy:
+ matrix:
+ OPENMP: ['OFF', 'ON']
+
+ runs-on:
+ pool-name: docker
+ container:
+ image: bkci/ci:ubuntu
+ steps:
+ - name: checkout
+ checkout: self
+ with:
+ strategy: FRESH_CHECKOUT
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: install-deps
+ run: |
+ apt-get update
+ apt-get install -y lcov g++-riscv64-linux-gnu libcapstone4 libglib2.0-0
+ curl https://uploader.codecov.io/verification.gpg | gpg --no-default-keyring --keyring trustedkeys.gpg --import
+ curl -Os https://uploader.codecov.io/latest/linux/codecov
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig
+ gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
+ shasum -a 256 -c codecov.SHA256SUM
+ chmod +x codecov
+
+ - name: cache-qemu
+ id: cache-qemu
+ uses: cache@1.*
+ with:
+ cachePaths: qemu-install
+ cacheKey: qemu-riscv64-install-20230624-1
+
+ - name: checkout-qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ checkout: https://github.com/qemu/qemu.git
+ with:
+ pullType: COMMIT_ID
+ refName: b455ce4c2f300c8ba47cba7232dd03261368a4cb
+ localPath: qemu
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ run: |
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye main' | tee -a /etc/apt/sources.list
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye-updates main' | tee -a /etc/apt/sources.list
+ apt-get update
+ apt-get build-dep -y qemu
+ apt-get install -y python3-pip
+ python3 -m pip install --upgrade pip
+ apt-get remove -y python3-setuptools
+ pip3 install -U setuptools
+ 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=${{ci.workspace}}/qemu-install --target-list=riscv64-linux-user --disable-system
+ make -j$(nproc)
+ make install
+
+ - name: build
+ 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=${{matrix.OPENMP}} -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
+ cmake --build . -j $(nproc)
+ - name: test
+ run: |
+ export PATH=${{ci.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 $(nproc)
+ - 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
+ run: ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build/lcov.info
+
+ linux-gcc-riscv64-rvv:
+ name: linux-gcc-riscv64-rvv
+ strategy:
+ matrix:
+ OPENMP: ['OFF', 'ON']
+
+ runs-on:
+ pool-name: docker
+ container:
+ image: bkci/ci:ubuntu
+ steps:
+ - name: checkout
+ checkout: self
+ with:
+ strategy: FRESH_CHECKOUT
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: install-deps
+ run: |
+ apt-get update
+ apt-get install -y lcov libcapstone4 libglib2.0-0
+ curl https://uploader.codecov.io/verification.gpg | gpg --no-default-keyring --keyring trustedkeys.gpg --import
+ curl -Os https://uploader.codecov.io/latest/linux/codecov
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig
+ gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
+ shasum -a 256 -c codecov.SHA256SUM
+ chmod +x codecov
+
+ - name: cache-qemu
+ id: cache-qemu
+ uses: cache@1.*
+ with:
+ cachePaths: qemu-install
+ cacheKey: qemu-riscv64-install-20230624-1
+
+ - name: checkout-qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ checkout: https://github.com/qemu/qemu.git
+ with:
+ pullType: COMMIT_ID
+ refName: b455ce4c2f300c8ba47cba7232dd03261368a4cb
+ localPath: qemu
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ run: |
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye main' | tee -a /etc/apt/sources.list
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye-updates main' | tee -a /etc/apt/sources.list
+ apt-get update
+ apt-get build-dep -y qemu
+ apt-get install -y python3-pip
+ python3 -m pip install --upgrade pip
+ apt-get remove -y python3-setuptools
+ pip3 install -U setuptools
+ 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=${{ci.workspace}}/qemu-install --target-list=riscv64-linux-user --disable-system
+ make -j$(nproc)
+ make install
+
+ - name: cache-rv64gcv
+ id: cache-rv64gcv
+ uses: cache@1.*
+ with:
+ cachePaths: rv64gcv-install
+ cacheKey: rv64gcv-linux-install-20221029-1
+
+ - name: checkout-riscv-gnu-toolchain
+ if: steps.cache-rv64gcv.outputs.cacheHit != 'true'
+ checkout: https://github.com/riscv/riscv-gnu-toolchain.git
+ with:
+ pullType: COMMIT_ID
+ refName: da01ba455ce3802ffa84fdca3a089079996dbfc3
+ localPath: riscv-gnu-toolchain
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: riscv-gnu-toolchain
+ if: steps.cache-rv64gcv.outputs.cacheHit != 'true'
+ run: |
+ apt-get update
+ apt-get install -y 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
+ cd riscv-gnu-toolchain
+ git submodule update --init --recursive --depth 1 glibc
+ git submodule update --init --recursive --depth 1 newlib
+ #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-dejagnu
+ git submodule update --init --recursive --depth 1 riscv-gdb
+ rm -rf riscv-binutils
+ git clone -b binutils-2_39-branch https://sourceware.org/git/binutils-gdb.git riscv-binutils
+ rm -rf riscv-gcc
+ git clone -b riscv-gcc-rvv-next https://github.com/riscv-collab/riscv-gcc.git riscv-gcc
+ cd riscv-gcc
+ git checkout 8a0c1b106f01c455a8fb478cfe52d859a69020fd
+ cd ..
+ sed -i '/__OBSOLETE_MATH/d' newlib/newlib/libm/common/math_errf.c
+ ./configure --prefix=${{ci.workspace}}/rv64gcv-install --with-arch=rv64gcv_zfh
+ make linux -j$(nproc)
+ find ${{ci.workspace}}/rv64gcv-install -type f | xargs -i strip -g {} || true
+
+ - name: build
+ run: |
+ export RISCV_ROOT_PATH=${{ci.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=${{matrix.OPENMP}} -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
+ cmake --build . -j $(nproc)
+ - name: test-vlen128
+ run: |
+ export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
+ cd build
+ TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;rv64,v=true,Zfh=true,x-zvfh=true,vlen=128,elen=64,vext_spec=v1.0;-L;${{ci.workspace}}/rv64gcv-install/sysroot" ctest --output-on-failure -j $(nproc)
+ - name: lcov-collect-vlen128
+ run: |
+ cd build
+ lcov --gcov-tool ${{ci.workspace}}/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
+ run: ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build/lcov.info
+ - name: test-vlen256
+ run: |
+ export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
+ cd build
+ TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;rv64,v=true,Zfh=true,x-zvfh=true,vlen=256,elen=64,vext_spec=v1.0;-L;${{ci.workspace}}/rv64gcv-install/sysroot" ctest --output-on-failure -j $(nproc)
+ - name: lcov-collect-vlen256
+ run: |
+ cd build
+ lcov --gcov-tool ${{ci.workspace}}/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
+ run: ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build/lcov.info
+
+ linux-gcc-loongarch64:
+ name: linux-gcc-loongarch64
+ strategy:
+ matrix:
+ OPENMP: ['OFF', 'ON']
+
+ runs-on:
+ pool-name: docker
+ container:
+ image: bkci/ci:ubuntu
+ steps:
+ - name: checkout
+ checkout: self
+ with:
+ strategy: FRESH_CHECKOUT
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: install-deps
+ run: |
+ apt-get update
+ apt-get install -y lcov libcapstone4 libglib2.0-0 python3-venv
+ curl https://uploader.codecov.io/verification.gpg | gpg --no-default-keyring --keyring trustedkeys.gpg --import
+ curl -Os https://uploader.codecov.io/latest/linux/codecov
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig
+ gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
+ shasum -a 256 -c codecov.SHA256SUM
+ chmod +x codecov
+ wget https://github.com/sunhaiyong1978/CLFS-for-LoongArch/releases/download/8.0/loongarch64-clfs-8.0-cross-tools-gcc-full.tar.xz
+ tar -xf loongarch64-clfs-8.0-cross-tools-gcc-full.tar.xz
+
+ - name: cache-qemu
+ id: cache-qemu
+ uses: cache@1.*
+ with:
+ cachePaths: qemu-install
+ cacheKey: qemu-loongarch64-install-20230524-1
+
+ - name: checkout-qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ checkout: https://github.com/qemu/qemu.git
+ with:
+ pullType: COMMIT_ID
+ refName: 1c12355b31046a6b35a4f50c85c4f01afb1bd728
+ localPath: qemu
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: qemu
+ if: steps.cache-qemu.outputs.cacheHit != 'true'
+ run: |
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye main' | tee -a /etc/apt/sources.list
+ echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye-updates main' | tee -a /etc/apt/sources.list
+ apt-get update
+ apt-get build-dep -y qemu
+ cd qemu
+ wget https://github.com/nihui/ncnn-assets/raw/master/qemu-patches/0001-linux-user-Expose-loongarch-lsx-isa-bit-in-get_elf_hwcap.patch
+ patch -p1 -i 0001-linux-user-Expose-loongarch-lsx-isa-bit-in-get_elf_hwcap.patch
+ ./configure --prefix=${{ci.workspace}}/qemu-install --target-list=loongarch64-linux-user --disable-system
+ make -j$(nproc)
+ make install
+
+ - name: build
+ run: |
+ export LOONGARCH64_ROOT_PATH=${{ci.workspace}}/cross-tools
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/loongarch64-unknown-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_LSX=ON -DNCNN_LASX=OFF -DNCNN_OPENMP=${{matrix.OPENMP}} -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
+ cmake --build . -j $(nproc)
+ - name: test
+ run: |
+ export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
+ cd build
+ TESTS_EXECUTABLE_LOADER=qemu-loongarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;${{ci.workspace}}/cross-tools/target" ctest --output-on-failure -j $(nproc)
+ - name: lcov-collect
+ run: |
+ cd build
+ lcov --gcov-tool ${{ci.workspace}}/cross-tools/bin/loongarch64-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 '*/cross-tools/*' -o lcov.info
+ lcov --list lcov.info
+ - name: codecov
+ run: ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build/lcov.info
+
+ linux-gcc-x64-simplemath:
+ name: linux-gcc-x64-simplemath
+
+ runs-on:
+ pool-name: docker
+ container:
+ image: bkci/ci:ubuntu
+ steps:
+ - name: checkout
+ checkout: self
+ with:
+ strategy: FRESH_CHECKOUT
+ enableSubmodule: false
+ enableGitLfs: false
+
+ - name: install-deps
+ run: |
+ apt-get update
+ apt-get install -y lcov
+ curl https://uploader.codecov.io/verification.gpg | gpg --no-default-keyring --keyring trustedkeys.gpg --import
+ curl -Os https://uploader.codecov.io/latest/linux/codecov
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM
+ curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig
+ gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
+ shasum -a 256 -c codecov.SHA256SUM
+ chmod +x codecov
+
+ - name: build
+ run: |
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host-c.gcc.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_STDIO=ON -DNCNN_STRING=ON -DNCNN_SIMPLESTL=ON -DNCNN_SIMPLEMATH=ON -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
+ cmake --build . -j $(nproc)
+ - name: test
+ run: cd build && ctest --output-on-failure -j $(nproc)
+ - 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
+ run: ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build/lcov.info