| @@ -96,13 +96,19 @@ jobs: | |||
| 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/${{ 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 .. | |||
| - 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: | | |||
| @@ -110,6 +116,52 @@ jobs: | |||
| cd build | |||
| TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;${{ matrix.QEMU_CPU }}" ctest --output-on-failure -j 8 | |||
| 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: build-gcc | |||
| run: | | |||
| 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: build-llvm | |||
| run: | | |||
| 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] | |||
| steps: | |||
| @@ -0,0 +1,40 @@ | |||
| set(CMAKE_SYSTEM_NAME Linux) | |||
| set(CMAKE_SYSTEM_PROCESSOR riscv64) | |||
| if(DEFINED ENV{RISCV_ROOT_PATH}) | |||
| file(TO_CMAKE_PATH $ENV{RISCV_ROOT_PATH} RISCV_ROOT_PATH) | |||
| else() | |||
| message(FATAL_ERROR "RISCV_ROOT_PATH env must be defined") | |||
| endif() | |||
| set(RISCV_ROOT_PATH ${RISCV_ROOT_PATH} CACHE STRING "root path to riscv toolchain") | |||
| set(CMAKE_C_COMPILER "${RISCV_ROOT_PATH}/bin/clang") | |||
| set(CMAKE_CXX_COMPILER "${RISCV_ROOT_PATH}/bin/clang++") | |||
| set(CMAKE_SYSROOT "${RISCV_ROOT_PATH}/sysroot") | |||
| set(CMAKE_C_COMPILER_TARGET "riscv64-unknown-linux-gnu") | |||
| set(CMAKE_CXX_COMPILER_TARGET "riscv64-unknown-linux-gnu") | |||
| if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) | |||
| set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) | |||
| endif() | |||
| if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY) | |||
| set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) | |||
| endif() | |||
| if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE) | |||
| set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) | |||
| endif() | |||
| if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE) | |||
| set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) | |||
| endif() | |||
| set(CMAKE_C_FLAGS "-march=rv64gc_zba_zbb_zbc_zbs_zicbop -mabi=lp64d -mtune=spacemit-x60 -static") | |||
| set(CMAKE_CXX_FLAGS "-march=rv64gc_zba_zbb_zbc_zbs_zicbop -mabi=lp64d -mtune=spacemit-x60 -static") | |||
| # cache flags | |||
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags") | |||
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags") | |||
| # export RISCV_ROOT_PATH=/home/nihui/osd/spacemit-toolchain-linux-glibc-x86_64-v1.0.5 | |||
| # cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/k1.llvm.toolchain.cmake -DCMAKE_BUILD_TYPE=release -DNCNN_BUILD_TESTS=ON -DNCNN_OPENMP=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_RVV=ON -DNCNN_XTHEADVECTOR=OFF -DNCNN_ZFH=ON -DNCNN_ZVFH=ON -DNCNN_SIMPLEOCV=ON -DNCNN_BUILD_EXAMPLES=ON .. | |||
| @@ -0,0 +1,40 @@ | |||
| set(CMAKE_SYSTEM_NAME Linux) | |||
| set(CMAKE_SYSTEM_PROCESSOR riscv64) | |||
| if(DEFINED ENV{RISCV_ROOT_PATH}) | |||
| file(TO_CMAKE_PATH $ENV{RISCV_ROOT_PATH} RISCV_ROOT_PATH) | |||
| else() | |||
| message(FATAL_ERROR "RISCV_ROOT_PATH env must be defined") | |||
| endif() | |||
| set(RISCV_ROOT_PATH ${RISCV_ROOT_PATH} CACHE STRING "root path to riscv toolchain") | |||
| set(CMAKE_C_COMPILER "${RISCV_ROOT_PATH}/bin/riscv64-unknown-linux-gnu-gcc") | |||
| set(CMAKE_CXX_COMPILER "${RISCV_ROOT_PATH}/bin/riscv64-unknown-linux-gnu-g++") | |||
| set(CMAKE_FIND_ROOT_PATH "${RISCV_ROOT_PATH}/riscv64-unknown-linux-gnu") | |||
| set(CMAKE_SYSROOT "${RISCV_ROOT_PATH}/sysroot") | |||
| if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) | |||
| set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) | |||
| endif() | |||
| if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY) | |||
| set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) | |||
| endif() | |||
| if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE) | |||
| set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) | |||
| endif() | |||
| if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE) | |||
| set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) | |||
| endif() | |||
| set(CMAKE_C_FLAGS "-march=rv64gc_zba_zbb_zbc_zbs_zicbop -mabi=lp64d -mtune=spacemit-x60 -static") | |||
| set(CMAKE_CXX_FLAGS "-march=rv64gc_zba_zbb_zbc_zbs_zicbop -mabi=lp64d -mtune=spacemit-x60 -static") | |||
| # cache flags | |||
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags") | |||
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags") | |||
| # export RISCV_ROOT_PATH=/home/nihui/osd/spacemit-toolchain-linux-glibc-x86_64-v1.0.5 | |||
| # cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/k1.toolchain.cmake -DCMAKE_BUILD_TYPE=release -DNCNN_BUILD_TESTS=ON -DNCNN_OPENMP=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_RVV=ON -DNCNN_XTHEADVECTOR=OFF -DNCNN_ZFH=ON -DNCNN_ZVFH=ON -DNCNN_SIMPLEOCV=ON -DNCNN_BUILD_EXAMPLES=ON .. | |||