mirror of
https://github.com/Tencent/ncnn.git
synced 2026-10-16 20:32:33 +08:00
add support for riscv32+rvv1.0 (rv32 and rv64ilp32) with c907 support (#6280)
* add support for riscv32+rvv1.0 (rv32 and rv64ilp32) with c907 support * add new action linux rv32 and some fix 1. add new action linux rv32 2. add new toolchains c907-v310 for lp64d 3. fix action paths check
This commit is contained in:
@@ -81,7 +81,7 @@ jobs:
|
||||
run: |
|
||||
export RISCV_ROOT_PATH=/data/action/osd/riscv32-elf
|
||||
mkdir build && cd build
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/riscv32-unknown-elf.toolchain.cmake -DNCNN_THREADS=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TESTS=ON ..
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/riscv32-unknown-elf.toolchain.cmake -DNCNN_THREADS=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TESTS=ON -DNCNN_RVV=OFF -DNCNN_XTHEADVECTOR=OFF -DNCNN_ZFH=OFF -DNCNN_ZVFH=OFF ..
|
||||
cmake --build . -j 4
|
||||
|
||||
- name: test
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
name: linux-riscv32
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
paths:
|
||||
- '.github/workflows/linux-riscv32.yml'
|
||||
- 'toolchains/c907-rv32-v310.toolchain.cmake'
|
||||
- 'CMakeLists.txt'
|
||||
- 'cmake/**'
|
||||
- 'src/*'
|
||||
- 'src/layer/*'
|
||||
- 'src/layer/riscv/**'
|
||||
- 'tests/**'
|
||||
pull_request:
|
||||
branches: [master]
|
||||
paths:
|
||||
- '.github/workflows/linux-riscv32.yml'
|
||||
- 'toolchains/c907-rv32-v310.toolchain.cmake'
|
||||
- 'CMakeLists.txt'
|
||||
- 'cmake/**'
|
||||
- 'src/*'
|
||||
- 'src/layer/*'
|
||||
- 'src/layer/riscv/**'
|
||||
- 'tests/**'
|
||||
concurrency:
|
||||
group: linux-riscv32-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
xuantie:
|
||||
name: xuantie-${{ matrix.cpu }}
|
||||
runs-on: [self-hosted, linux, ubuntu]
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- { cpu: c907-rv32, QEMU_CPU: c907fdv-rv32, OPENMP: ON, RVV: ON, XTHEADVECTOR: OFF, ZFH: ON, ZVFH: ON }
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: build
|
||||
run: |
|
||||
export RISCV_ROOT_PATH=/data/action/osd/Xuantie-900-gcc-linux-6.6.0-glibc-x86_64-V3.1.0
|
||||
mkdir build && cd build
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/${{ matrix.cpu }}-v310.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.2.6-B20250415-1115/bin:$PATH
|
||||
cd build
|
||||
TESTS_EXECUTABLE_LOADER=qemu-riscv32 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;${{ matrix.QEMU_CPU }}" ctest --output-on-failure -j 8
|
||||
@@ -7,9 +7,9 @@ on:
|
||||
- 'toolchains/riscv64-linux-gnu.toolchain.cmake'
|
||||
- 'toolchains/riscv64-unknown-linux-gnu.toolchain.cmake'
|
||||
- 'toolchains/riscv64-unknown-linux-gnu.llvm-toolchain.cmake'
|
||||
- 'toolchains/c906-v301.toolchain.cmake'
|
||||
- 'toolchains/c908-v301.toolchain.cmake'
|
||||
- 'toolchains/c910-v301.toolchain.cmake'
|
||||
- 'toolchains/c906-v310.toolchain.cmake'
|
||||
- 'toolchains/c908-v310.toolchain.cmake'
|
||||
- 'toolchains/c910-v310.toolchain.cmake'
|
||||
- 'toolchains/k1.toolchain.cmake'
|
||||
- 'toolchains/k1.llvm.toolchain.cmake'
|
||||
- 'CMakeLists.txt'
|
||||
@@ -25,9 +25,9 @@ on:
|
||||
- 'toolchains/riscv64-linux-gnu.toolchain.cmake'
|
||||
- 'toolchains/riscv64-unknown-linux-gnu.toolchain.cmake'
|
||||
- 'toolchains/riscv64-unknown-linux-gnu.llvm-toolchain.cmake'
|
||||
- 'toolchains/c906-v301.toolchain.cmake'
|
||||
- 'toolchains/c908-v301.toolchain.cmake'
|
||||
- 'toolchains/c910-v301.toolchain.cmake'
|
||||
- 'toolchains/c906-v310.toolchain.cmake'
|
||||
- 'toolchains/c908-v310.toolchain.cmake'
|
||||
- 'toolchains/c910-v310.toolchain.cmake'
|
||||
- 'toolchains/k1.toolchain.cmake'
|
||||
- 'toolchains/k1.llvm.toolchain.cmake'
|
||||
- 'CMakeLists.txt'
|
||||
@@ -102,6 +102,7 @@ jobs:
|
||||
- { 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 }
|
||||
- { cpu: c907, QEMU_CPU: c907fdv-rv64, OPENMP: ON, RVV: ON, XTHEADVECTOR: OFF, ZFH: ON, ZVFH: ON }
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
@@ -465,6 +465,46 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(riscv)")
|
||||
message(WARNING "The compiler does not support risc-v zfh extension. NCNN_ZFH will be OFF.")
|
||||
endif()
|
||||
|
||||
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
set(CMAKE_REQUIRED_FLAGS "-march=rv32gcv")
|
||||
check_cxx_source_compiles("#include <riscv_vector.h>\nvfloat32m8_t test(vfloat32m8_t s, vfloat32m8_t w, float v, size_t vl) { return __riscv_vfmacc_vf_f32m8(s, v, w, vl); }\nvfloat32m1x2_t test2(vfloat32m1_t x) { return __riscv_vcreate_v_f32m1x2(x, x); }" NCNN_COMPILER_SUPPORT_RISCV_V)
|
||||
|
||||
set(CMAKE_REQUIRED_FLAGS "-march=rv32gc_zfh -D__fp16=_Float16")
|
||||
check_cxx_source_compiles("__fp16 test(__fp16 a) { return a * a; }" NCNN_COMPILER_SUPPORT_RISCV_ZFH)
|
||||
|
||||
set(CMAKE_REQUIRED_FLAGS "-march=rv32gcv_zfh_zvfh -D__fp16=_Float16")
|
||||
check_cxx_source_compiles("#include <riscv_vector.h>\nvfloat16m8_t test(vfloat16m8_t s, vfloat16m8_t w, __fp16 v, size_t vl) { return __riscv_vfmacc_vf_f16m8(s, v, w, vl); }\nvfloat16m1x2_t test2(vfloat16m1_t x){ return __riscv_vcreate_v_f16m1x2(x, x); }" NCNN_COMPILER_SUPPORT_RISCV_ZVFH)
|
||||
|
||||
set(CMAKE_REQUIRED_FLAGS "-march=rv32gc_zfh_xtheadvector -D__fp16=_Float16")
|
||||
check_cxx_source_compiles("#include <riscv_vector.h>\nvfloat16m8_t test(vfloat16m8_t s, vfloat16m8_t w, __fp16 v, size_t vl) { return __riscv_vfmacc_vf_f16m8(s, v, w, vl); }\nvfloat16m1x2_t test2(vfloat16m1_t x){ return __riscv_vcreate_v_f16m1x2(x, x); }" NCNN_COMPILER_SUPPORT_RISCV_XTHEADVECTOR)
|
||||
|
||||
unset(CMAKE_REQUIRED_FLAGS)
|
||||
|
||||
if(NCNN_COMPILER_SUPPORT_RISCV_V OR NCNN_COMPILER_SUPPORT_RISCV_XTHEADVECTOR)
|
||||
option(NCNN_RVV "optimize risc-v platform with v extension" ON)
|
||||
else()
|
||||
message(WARNING "The compiler does not support risc-v v or xtheadvector extension. NCNN_RVV will be OFF.")
|
||||
endif()
|
||||
|
||||
if(NCNN_COMPILER_SUPPORT_RISCV_XTHEADVECTOR)
|
||||
option(NCNN_XTHEADVECTOR "optimize risc-v platform with xtheadvector extension" ON)
|
||||
else()
|
||||
message(WARNING "The compiler does not support risc-v xtheadvector extension. NCNN_XTHEADVECTOR will be OFF.")
|
||||
endif()
|
||||
|
||||
if(NCNN_COMPILER_SUPPORT_RISCV_ZFH)
|
||||
option(NCNN_ZFH "optimize risc-v platform with zfh extension" ON)
|
||||
if(NCNN_COMPILER_SUPPORT_RISCV_ZVFH OR NCNN_COMPILER_SUPPORT_RISCV_XTHEADVECTOR)
|
||||
if(NCNN_RVV AND NCNN_ZFH)
|
||||
option(NCNN_ZVFH "optimize risc-v platform with zvfh extension" ON)
|
||||
endif()
|
||||
else()
|
||||
message(WARNING "The compiler does not support zvfh extension. NCNN_ZVFH will be OFF.")
|
||||
endif()
|
||||
else()
|
||||
message(WARNING "The compiler does not support risc-v zfh extension. NCNN_ZFH will be OFF.")
|
||||
endif()
|
||||
|
||||
endif()
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
|
||||
set(NCNN_TARGET_ARCH powerpc)
|
||||
|
||||
+42
-19
@@ -415,26 +415,49 @@ macro(ncnn_add_layer class)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NCNN_TARGET_ARCH STREQUAL "riscv" AND CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
if(NCNN_RUNTIME_CPU AND NCNN_RVV)
|
||||
ncnn_add_arch_opt_layer(${class} rvv "-march=rv64gcv")
|
||||
endif()
|
||||
if(NCNN_ZFH)
|
||||
if(NOT NCNN_RUNTIME_CPU AND NCNN_ZVFH)
|
||||
ncnn_add_arch_opt_source(${class} zfh "-march=rv64gcv_zfh_zvfh -D__fp16=_Float16")
|
||||
elseif(NOT NCNN_RUNTIME_CPU AND NCNN_XTHEADVECTOR)
|
||||
ncnn_add_arch_opt_source(${class} zfh "-march=rv64gc_zfh_xtheadvector -D__riscv_zvfh=1 -D__fp16=_Float16")
|
||||
else()
|
||||
ncnn_add_arch_opt_source(${class} zfh "-march=rv64gc_zfh -D__fp16=_Float16")
|
||||
if(NCNN_TARGET_ARCH STREQUAL "riscv")
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
if(NCNN_RUNTIME_CPU AND NCNN_RVV)
|
||||
ncnn_add_arch_opt_layer(${class} rvv "-march=rv64gcv")
|
||||
endif()
|
||||
if(NCNN_ZFH)
|
||||
if(NOT NCNN_RUNTIME_CPU AND NCNN_ZVFH)
|
||||
ncnn_add_arch_opt_source(${class} zfh "-march=rv64gcv_zfh_zvfh -D__fp16=_Float16")
|
||||
elseif(NOT NCNN_RUNTIME_CPU AND NCNN_XTHEADVECTOR)
|
||||
ncnn_add_arch_opt_source(${class} zfh "-march=rv64gc_zfh_xtheadvector -D__riscv_zvfh=1 -D__fp16=_Float16")
|
||||
else()
|
||||
ncnn_add_arch_opt_source(${class} zfh "-march=rv64gc_zfh -D__fp16=_Float16")
|
||||
endif()
|
||||
endif()
|
||||
if(NCNN_RUNTIME_CPU AND NCNN_XTHEADVECTOR)
|
||||
# linker complains the conflict of v and xtheadvector, so disable generating any riscv attributes
|
||||
ncnn_add_arch_opt_layer(${class} xtheadvector "-march=rv64gc_xtheadvector -mno-riscv-attribute -Wa,-mno-arch-attr")
|
||||
ncnn_add_arch_opt_layer_source(${class} zfh xtheadvector "-march=rv64gc_zfh_xtheadvector -mno-riscv-attribute -Wa,-mno-arch-attr -D__fp16=_Float16")
|
||||
endif()
|
||||
if(NCNN_RUNTIME_CPU AND NCNN_ZVFH)
|
||||
ncnn_add_arch_opt_layer_source(${class} zfh rvv "-march=rv64gcv_zfh_zvfh -D__fp16=_Float16")
|
||||
endif()
|
||||
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
if(NCNN_RUNTIME_CPU AND NCNN_RVV)
|
||||
ncnn_add_arch_opt_layer(${class} rvv "-march=rv32gcv")
|
||||
endif()
|
||||
if(NCNN_ZFH)
|
||||
if(NOT NCNN_RUNTIME_CPU AND NCNN_ZVFH)
|
||||
ncnn_add_arch_opt_source(${class} zfh "-march=rv32gcv_zfh_zvfh -D__fp16=_Float16")
|
||||
elseif(NOT NCNN_RUNTIME_CPU AND NCNN_XTHEADVECTOR)
|
||||
ncnn_add_arch_opt_source(${class} zfh "-march=rv32gc_zfh_xtheadvector -D__riscv_zvfh=1 -D__fp16=_Float16")
|
||||
else()
|
||||
ncnn_add_arch_opt_source(${class} zfh "-march=rv32gc_zfh -D__fp16=_Float16")
|
||||
endif()
|
||||
endif()
|
||||
if(NCNN_RUNTIME_CPU AND NCNN_XTHEADVECTOR)
|
||||
# linker complains the conflict of v and xtheadvector, so disable generating any riscv attributes
|
||||
ncnn_add_arch_opt_layer(${class} xtheadvector "-march=rv32gc_xtheadvector -mno-riscv-attribute -Wa,-mno-arch-attr")
|
||||
ncnn_add_arch_opt_layer_source(${class} zfh xtheadvector "-march=rv32gc_zfh_xtheadvector -mno-riscv-attribute -Wa,-mno-arch-attr -D__fp16=_Float16")
|
||||
endif()
|
||||
if(NCNN_RUNTIME_CPU AND NCNN_ZVFH)
|
||||
ncnn_add_arch_opt_layer_source(${class} zfh rvv "-march=rv32gcv_zfh_zvfh -D__fp16=_Float16")
|
||||
endif()
|
||||
endif()
|
||||
if(NCNN_RUNTIME_CPU AND NCNN_XTHEADVECTOR)
|
||||
# linker complains the conflict of v and xtheadvector, so disable generating any riscv attributes
|
||||
ncnn_add_arch_opt_layer(${class} xtheadvector "-march=rv64gc_xtheadvector -mno-riscv-attribute -Wa,-mno-arch-attr")
|
||||
ncnn_add_arch_opt_layer_source(${class} zfh xtheadvector "-march=rv64gc_zfh_xtheadvector -mno-riscv-attribute -Wa,-mno-arch-attr -D__fp16=_Float16")
|
||||
endif()
|
||||
if(NCNN_RUNTIME_CPU AND NCNN_ZVFH)
|
||||
ncnn_add_arch_opt_layer_source(${class} zfh rvv "-march=rv64gcv_zfh_zvfh -D__fp16=_Float16")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
+35
-15
@@ -671,24 +671,44 @@ if(NCNN_TARGET_ARCH STREQUAL "loongarch")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NCNN_TARGET_ARCH STREQUAL "riscv" AND CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT C906)
|
||||
if(NOT NCNN_RUNTIME_CPU AND NCNN_RVV)
|
||||
set(RISCV_MARCH_FLAG "-march=rv64gcv")
|
||||
if(NCNN_ZFH)
|
||||
set(RISCV_MARCH_FLAG "${RISCV_MARCH_FLAG}_zfh")
|
||||
target_compile_options(ncnn PRIVATE -D__fp16=_Float16)
|
||||
if(NCNN_TARGET_ARCH STREQUAL "riscv" AND NOT C906)
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
if(NOT NCNN_RUNTIME_CPU AND NCNN_RVV)
|
||||
set(RISCV_MARCH_FLAG "-march=rv64gcv")
|
||||
if(NCNN_ZFH)
|
||||
set(RISCV_MARCH_FLAG "${RISCV_MARCH_FLAG}_zfh")
|
||||
target_compile_options(ncnn PRIVATE -D__fp16=_Float16)
|
||||
endif()
|
||||
if(NCNN_ZVFH)
|
||||
set(RISCV_MARCH_FLAG "${RISCV_MARCH_FLAG}_zvfh")
|
||||
endif()
|
||||
elseif(NOT NCNN_RUNTIME_CPU AND NCNN_XTHEADVECTOR)
|
||||
set(RISCV_MARCH_FLAG "-march=rv64gc_xtheadvector")
|
||||
if(NCNN_ZFH)
|
||||
set(RISCV_MARCH_FLAG "${RISCV_MARCH_FLAG}_zfh")
|
||||
target_compile_options(ncnn PRIVATE -D__riscv_zvfh=1 -D__fp16=_Float16)
|
||||
endif()
|
||||
endif()
|
||||
if(NCNN_ZVFH)
|
||||
set(RISCV_MARCH_FLAG "${RISCV_MARCH_FLAG}_zvfh")
|
||||
endif()
|
||||
elseif(NOT NCNN_RUNTIME_CPU AND NCNN_XTHEADVECTOR)
|
||||
set(RISCV_MARCH_FLAG "-march=rv64gc_xtheadvector")
|
||||
if(NCNN_ZFH)
|
||||
set(RISCV_MARCH_FLAG "${RISCV_MARCH_FLAG}_zfh")
|
||||
target_compile_options(ncnn PRIVATE -D__riscv_zvfh=1 -D__fp16=_Float16)
|
||||
target_compile_options(ncnn PRIVATE ${RISCV_MARCH_FLAG})
|
||||
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
if(NOT NCNN_RUNTIME_CPU AND NCNN_RVV)
|
||||
set(RISCV_MARCH_FLAG "-march=rv32gcv")
|
||||
if(NCNN_ZFH)
|
||||
set(RISCV_MARCH_FLAG "${RISCV_MARCH_FLAG}_zfh")
|
||||
target_compile_options(ncnn PRIVATE -D__fp16=_Float16)
|
||||
endif()
|
||||
if(NCNN_ZVFH)
|
||||
set(RISCV_MARCH_FLAG "${RISCV_MARCH_FLAG}_zvfh")
|
||||
endif()
|
||||
elseif(NOT NCNN_RUNTIME_CPU AND NCNN_XTHEADVECTOR)
|
||||
set(RISCV_MARCH_FLAG "-march=rv32gc_xtheadvector")
|
||||
if(NCNN_ZFH)
|
||||
set(RISCV_MARCH_FLAG "${RISCV_MARCH_FLAG}_zfh")
|
||||
target_compile_options(ncnn PRIVATE -D__riscv_zvfh=1 -D__fp16=_Float16)
|
||||
endif()
|
||||
endif()
|
||||
target_compile_options(ncnn PRIVATE ${RISCV_MARCH_FLAG})
|
||||
endif()
|
||||
target_compile_options(ncnn PRIVATE ${RISCV_MARCH_FLAG})
|
||||
endif()
|
||||
|
||||
if(NCNN_PPC64LE_VSX)
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR riscv32)
|
||||
|
||||
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_FIND_LIBRARY_SUFFIXES_INIT ".a")
|
||||
set(CMAKE_C_FLAGS "-march=rv32gcv_zicbom_zicbop_zicboz_zihintpause_zfh_zvfh_zba_zbb_zbc_zbs_svinval_svnapot_svpbmt_xtheadc_xtheadvdot -mabi=ilp32d -mtune=c907 -static")
|
||||
set(CMAKE_CXX_FLAGS "-march=rv32gcv_zicbom_zicbop_zicboz_zihintpause_zfh_zvfh_zba_zbb_zbc_zbs_svinval_svnapot_svpbmt_xtheadc_xtheadvdot -mabi=ilp32d -mtune=c907 -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/yuzuki/SDK/Xuantie-900-gcc-linux-6.6.0-glibc-x86_64-V3.1.0
|
||||
# cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/c907-rv32-v310.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,41 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR riscv32)
|
||||
|
||||
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_FIND_LIBRARY_SUFFIXES_INIT ".a")
|
||||
set(CMAKE_C_FLAGS "-march=rv64gcv_zicbom_zicbop_zicboz_zihintpause_zfh_zvfh_zba_zbb_zbc_zbs_svinval_svnapot_svpbmt_xtheadc_xtheadvdot -mabi=lp64d -mtune=c907 -static")
|
||||
set(CMAKE_CXX_FLAGS "-march=rv64gcv_zicbom_zicbop_zicboz_zihintpause_zfh_zvfh_zba_zbb_zbc_zbs_svinval_svnapot_svpbmt_xtheadc_xtheadvdot -mabi=lp64d -mtune=c907 -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/yuzuki/SDK/Xuantie-900-gcc-linux-6.6.0-glibc-x86_64-V3.1.0
|
||||
# cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/c907-v310.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 ..
|
||||
Reference in New Issue
Block a user