Skip to content

Commit

Permalink
Merge branch 'master' into riscv-xtheadvector
Browse files Browse the repository at this point in the history
  • Loading branch information
nihui authored Jan 3, 2025
2 parents 0d0099b + 488c292 commit 03f2386
Show file tree
Hide file tree
Showing 14 changed files with 2,633 additions and 199 deletions.
1 change: 1 addition & 0 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ jobs:
NCNN_CMAKE_OPTIONS: |
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake \
-DANDROID_PLATFORM=android-21 \
-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON \
-DCMAKE_INSTALL_PREFIX=install \
-DCMAKE_BUILD_TYPE=Release \
-DNCNN_VULKAN=ON \
Expand Down
76 changes: 59 additions & 17 deletions .github/workflows/linux-riscv64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,43 +82,85 @@ jobs:
cd build
TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/riscv64-linux-gnu" ctest --output-on-failure -j $(nproc)
c906:
xuantie:
name: xuantie-${{ matrix.cpu }}
runs-on: [self-hosted, linux, ubuntu]
strategy:
fail-fast: false
matrix:
include:
- { cpu: c906, QEMU_CPU: c906fdv, OPENMP: OFF, RVV: OFF, XTHEADVECTOR: ON, ZFH: ON, ZVFH: OFF }
- { cpu: c910, QEMU_CPU: c910v, OPENMP: ON, RVV: OFF, XTHEADVECTOR: ON, ZFH: ON, ZVFH: OFF }
- { cpu: c908, QEMU_CPU: c908v, OPENMP: ON, RVV: ON, XTHEADVECTOR: OFF, ZFH: ON, ZVFH: ON }

steps:
- uses: actions/checkout@v4

- name: configure
- name: build
run: |
export RISCV_ROOT_PATH=/data/action/osd/Xuantie-900-gcc-linux-6.6.0-glibc-x86_64-V3.0.1
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/c906-v301.toolchain.cmake -DCMAKE_BUILD_TYPE=release -DNCNN_OPENMP=OFF -DNCNN_THREADS=OFF -DNCNN_RUNTIME_CPU=OFF -DNCNN_RVV=OFF -DNCNN_XTHEADVECTOR=ON -DNCNN_ZFH=ON -DNCNN_SIMPLEOCV=ON -DNCNN_BUILD_EXAMPLES=ON -DNCNN_BUILD_TESTS=ON ..
- name: build
run: cmake --build build -j 8
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/${{ matrix.cpu }}-v301.toolchain.cmake -DCMAKE_BUILD_TYPE=release \
-DNCNN_OPENMP=${{ matrix.OPENMP }} -DNCNN_THREADS=${{ matrix.OPENMP }} \
-DNCNN_RUNTIME_CPU=OFF \
-DNCNN_RVV=${{ matrix.RVV }} \
-DNCNN_XTHEADVECTOR=${{ matrix.XTHEADVECTOR }} \
-DNCNN_ZFH=${{ matrix.ZFH }} \
-DNCNN_ZVFH=${{ matrix.ZVFH }} \
-DNCNN_SIMPLEOCV=ON -DNCNN_BUILD_EXAMPLES=ON -DNCNN_BUILD_TESTS=ON ..
cmake --build . -j 8
- name: test
run: |
export PATH=/data/action/osd/Xuantie-qemu-x86_64-Ubuntu-20.04-V5.0.4-B20241127-1130/bin:$PATH
cd build
TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;c906fdv" ctest --output-on-failure -j 8
TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;${{ matrix.QEMU_CPU }}" ctest --output-on-failure -j 8
c910:
spacemit:
name: spacemit-${{ matrix.cpu }}
runs-on: [self-hosted, linux, ubuntu]
strategy:
fail-fast: false
matrix:
include:
- { cpu: x60, QEMU_CPU: rv64, OPENMP: ON, RVV: ON, XTHEADVECTOR: OFF, ZFH: ON, ZVFH: ON }

steps:
- uses: actions/checkout@v4

- name: configure
- name: build-gcc
run: |
export RISCV_ROOT_PATH=/data/action/osd/Xuantie-900-gcc-linux-6.6.0-glibc-x86_64-V3.0.1
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/c910-v301.toolchain.cmake -DCMAKE_BUILD_TYPE=release -DNCNN_OPENMP=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_RVV=OFF -DNCNN_XTHEADVECTOR=ON -DNCNN_ZFH=ON -DNCNN_SIMPLEOCV=ON -DNCNN_BUILD_EXAMPLES=ON -DNCNN_BUILD_TESTS=ON ..
- name: build
run: cmake --build build -j 8
export RISCV_ROOT_PATH=/data/action/osd/spacemit-toolchain-linux-glibc-x86_64-v1.0.5
mkdir build-gcc && cd build-gcc
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/k1.toolchain.cmake -DCMAKE_BUILD_TYPE=release \
-DNCNN_OPENMP=${{ matrix.OPENMP }} -DNCNN_THREADS=${{ matrix.OPENMP }} \
-DNCNN_RUNTIME_CPU=OFF \
-DNCNN_RVV=${{ matrix.RVV }} \
-DNCNN_XTHEADVECTOR=${{ matrix.XTHEADVECTOR }} \
-DNCNN_ZFH=${{ matrix.ZFH }} \
-DNCNN_ZVFH=${{ matrix.ZVFH }} \
-DNCNN_SIMPLEOCV=ON -DNCNN_BUILD_EXAMPLES=ON -DNCNN_BUILD_TESTS=ON ..
cmake --build . -j 8
- name: test
- name: build-llvm
run: |
export PATH=/data/action/osd/Xuantie-qemu-x86_64-Ubuntu-20.04-V5.0.4-B20241127-1130/bin:$PATH
cd build
TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;c910v" ctest --output-on-failure -j 8
export RISCV_ROOT_PATH=/data/action/osd/spacemit-toolchain-linux-glibc-x86_64-v1.0.5
mkdir build-llvm && cd build-llvm
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/k1.llvm.toolchain.cmake -DCMAKE_BUILD_TYPE=release \
-DNCNN_OPENMP=${{ matrix.OPENMP }} -DNCNN_THREADS=${{ matrix.OPENMP }} \
-DNCNN_RUNTIME_CPU=OFF \
-DNCNN_RVV=${{ matrix.RVV }} \
-DNCNN_XTHEADVECTOR=${{ matrix.XTHEADVECTOR }} \
-DNCNN_ZFH=${{ matrix.ZFH }} \
-DNCNN_ZVFH=${{ matrix.ZVFH }} \
-DNCNN_SIMPLEOCV=ON -DNCNN_BUILD_EXAMPLES=ON -DNCNN_BUILD_TESTS=ON ..
cmake --build . -j 8
# - name: test-gcc
# run: |
# export PATH=/data/action/osd/spacemit-ai-sdk.v1.1.0/spacemit-qemu/bin:$PATH
# cd build-gcc
# TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;${{ matrix.QEMU_CPU }}" ctest --output-on-failure -j 8

gcc-rvv:
runs-on: [self-hosted, linux, ubuntu]
Expand Down
18 changes: 13 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1916,14 +1916,15 @@ jobs:
PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-${{ matrix.opt.id }}
NCNN_CMAKE_OPTIONS: |
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake \
-DANDROID_PLATFORM=android-21 \
-DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False \
-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=install \
-DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \
-DNCNN_BUILD_BENCHMARK=OFF \
-DNCNN_VULKAN=${{ matrix.opt.vulkan }} \
-DNCNN_SHARED_LIB=${{ matrix.opt.shared-lib }} \
-DNCNN_AVX512BF16=OFF \
steps:
- uses: actions/checkout@v4
Expand All @@ -1934,25 +1935,31 @@ jobs:
- name: build-armeabi-v7a
run: |
mkdir build-armeabi-v7a && cd build-armeabi-v7a
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON -DANDROID_PLATFORM=android-14 ..
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON ..
cmake --build . -j $(nproc)
cmake --build . --target install/strip
- name: build-arm64-v8a
run: |
mkdir build-arm64-v8a && cd build-arm64-v8a
cmake ${{ env.NCNN_CMAKE_OPTIONS }}-DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-21 ..
cmake ${{ env.NCNN_CMAKE_OPTIONS }}-DANDROID_ABI="arm64-v8a" ..
cmake --build . -j $(nproc)
cmake --build . --target install/strip
- name: build-x86
run: |
mkdir build-x86 && cd build-x86
cmake ${{ env.NCNN_CMAKE_OPTIONS }}-DANDROID_ABI="x86" -DANDROID_PLATFORM=android-14 ..
cmake ${{ env.NCNN_CMAKE_OPTIONS }}-DANDROID_ABI="x86" ..
cmake --build . -j $(nproc)
cmake --build . --target install/strip
- name: build-x86_64
run: |
mkdir build-x86_64 && cd build-x86_64
cmake ${{ env.NCNN_CMAKE_OPTIONS }}-DANDROID_ABI="x86_64" -DANDROID_PLATFORM=android-21 ..
cmake ${{ env.NCNN_CMAKE_OPTIONS }}-DANDROID_ABI="x86_64" ..
cmake --build . -j $(nproc)
cmake --build . --target install/strip
- name: build-riscv64
run: |
mkdir build-riscv64 && cd build-riscv64
cmake ${{ env.NCNN_CMAKE_OPTIONS }}-DANDROID_ABI="riscv64" ..
cmake --build . -j $(nproc)
cmake --build . --target install/strip
- name: package
Expand All @@ -1963,6 +1970,7 @@ jobs:
cp -a build-arm64-v8a/install ${{ env.PACKAGENAME }}/arm64-v8a
cp -a build-x86/install ${{ env.PACKAGENAME }}/x86
cp -a build-x86_64/install ${{ env.PACKAGENAME }}/x86_64
cp -a build-riscv64/install ${{ env.PACKAGENAME }}/riscv64
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -y -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
- name: upload-zip
Expand Down
Loading

0 comments on commit 03f2386

Please sign in to comment.