Skip to content

Commit

Permalink
SHL: version 2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
zhangwm-pt committed Sep 6, 2022
1 parent 93e1589 commit e52dcc7
Show file tree
Hide file tree
Showing 1,652 changed files with 120,453 additions and 64,181 deletions.
160 changes: 112 additions & 48 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,26 @@ project(CSI-NN2)

enable_language(ASM)

option(USE_CSI_NN2_DEBUG "option for debug" ON)
option(USE_SHL_DEBUG "option for debug" ON)

option(BUILD_X86 "build x86" OFF)
option(BUILD_RISCV "build riscv" OFF)
option(BUILD_RISCV_ELF "build riscv elf" OFF)
option(BUILD_CSKY "build csky" OFF)
option(BUILD_CSKY_ELF "build csky elf" OFF)

if (NOT USE_COMPILER_PATH)

# riscv linux compiler
if (BUILD_RISCV)
if(IS_DIRECTORY $ENV{RISCV_GNU_GCC_PATH})
set(RISCV_GNU_GCC $ENV{RISCV_GNU_GCC_PATH})
else()
set(RISCV_GNU_GCC "${PROJECT_SOURCE_DIR}/tools/gcc-toolchain/bin")
endif()

set(CMAKE_C_COMPILER ${RISCV_GNU_GCC}/riscv64-unknown-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER ${RISCV_GNU_GCC}/riscv64-unknown-linux-gnu-g++)
set(CMAKE_C_COMPILER riscv64-unknown-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER riscv64-unknown-linux-gnu-g++)
set(CMAKE_ASM_COMPILER riscv64-unknown-linux-gnu-gcc)
endif()

# riscv elf compiler
if (BUILD_RISCV_ELF)
set(CMAKE_ASM_COMPILER riscv64-unknown-elf-gcc)
set(CMAKE_C_COMPILER riscv64-unknown-elf-gcc)
endif()

Expand All @@ -40,9 +38,11 @@ if (BUILD_CSKY_ELF)
set(CMAKE_ASM_COMPILER csky-abiv2-elf-gcc)
endif()

# CSI-NN2 debug module
if(USE_CSI_NN2_DEBUG)
add_definitions(-D CSI_DEBUG)
endif()

# SHL debug module
if(USE_SHL_DEBUG)
add_definitions(-D SHL_DEBUG)
endif()

# reduce elf size
Expand All @@ -55,78 +55,133 @@ file(GLOB_RECURSE NN2_SRCS source/nn2/*.c source/utils/*.c)
file(GLOB_RECURSE REF_SRCS source/reference/*.c)
file(GLOB_RECURSE GREF_SRCS source/graph_ref/*.c)
file(GLOB_RECURSE OPENVX_SRCS source/openvx/*.c)
file(GLOB_RECURSE C906_SRCS source/c906_opt/*.c)
file(GLOB_RECURSE C908_SRCS source/c908/*.c)
file(GLOB_RECURSE PNNA_SRCS source/pnna/*.c source/pnna/*.cpp)
file(GLOB_RECURSE C906_SRCS source/c906_opt/*.c source/c906_opt/*.S)
file(GLOB_RECURSE C908_SRCS source/c908_opt/*.c source/c908_opt/gemm_kernel/*.S)
file(GLOB_RECURSE THEAD_RVV_SRCS source/thead_rvv/*.c)
file(GLOB_RECURSE C860_SRCS source/c860_opt/*.S)
file(GLOB_RECURSE I805_REF_SRCS source/i805_ref/*.c)
file(GLOB_RECURSE I805_SRCS source/i805_opt/*.c source/i805_opt/*.S)
file(GLOB_RECURSE E804_SRCS source/e804_opt/*.c source/e804_opt/*.S)
file(GLOB_RECURSE ASP_SRCS source/asp/*.c)

include_directories(include)

option(CSINN_LAYER_BENCHMARK "Layer information and performance" OFF)
if(CSINN_LAYER_BENCHMARK)
add_definitions(-DCSINN_LAYER_BENCHMARK)
option(SHL_LAYER_BENCHMARK "Layer information and performance" OFF)
if(SHL_LAYER_BENCHMARK)
add_definitions(-DSHL_LAYER_BENCHMARK)
message(STATUS "Print the execution time of each layer - ON")
endif()

set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/install")

if(BUILD_X86)
# build x86_ref so
LIST(APPEND X86_LST ${NN2_SRCS} ${REF_SRCS} ${GREF_SRCS})
add_library(x86_share SHARED ${X86_LST})
SET_TARGET_PROPERTIES(x86_share PROPERTIES OUTPUT_NAME "csi_nn2_ref_x86")
set(X86_BUILD_FLAGS -DCSI_AVX_OPT -DCSI_BUILD_REF -DCSI_BUILD_GREF -mavx -mfma -fopenmp)
target_compile_options(x86_share PRIVATE ${X86_BUILD_FLAGS})

install(TARGETS x86_share DESTINATION lib)

add_library(x86_static STATIC ${X86_LST})
SET_TARGET_PROPERTIES(x86_static PROPERTIES OUTPUT_NAME "shl_ref_x86")
set(X86_BUILD_FLAGS -DSHL_AVX_OPT -DSHL_BUILD_REF -DSHL_BUILD_GREF -fPIC -mavx -mfma -fopenmp)
target_compile_options(x86_static PRIVATE ${X86_BUILD_FLAGS})

install(TARGETS x86_static DESTINATION lib)

# build pnna x86 simulate so
LIST(APPEND PNNA_LST ${NN2_SRCS} ${REF_SRCS} ${PNNA_SRCS})
add_library(pnna_share SHARED ${PNNA_LST})
SET_TARGET_PROPERTIES(pnna_share PROPERTIES OUTPUT_NAME "shl_pnna_x86")
set(PNNA_BUILD_FLAGS -DSHL_BUILD_PNNA)
target_compile_options(pnna_share PRIVATE ${PNNA_BUILD_FLAGS})
target_include_directories(pnna_share PRIVATE module/nna_ddk_install/include/)
set(PNNA_LINK_DIR ${CMAKE_CURRENT_SOURCE_DIR}/module/nna_ddk_install/x86/)
target_link_libraries(pnna_share PRIVATE -L${PNNA_LINK_DIR} -limgdnn_csim -lnnasession_csim)

install(TARGETS pnna_share DESTINATION lib)

# build heterogeneous pnna x86 simulate so
LIST(APPEND HLIGHT_LST ${NN2_SRCS} ${REF_SRCS} ${GREF_SRCS} ${PNNA_SRCS})
add_library(hlight_share SHARED ${HLIGHT_LST})
SET_TARGET_PROPERTIES(hlight_share PROPERTIES OUTPUT_NAME "shl_hlight_x86")
set(HLIGHT_BUILD_FLAGS -DSHL_BUILD_REF -DSHL_BUILD_GREF -DSHL_BUILD_PNNA)
target_compile_options(hlight_share PRIVATE ${HLIGHT_BUILD_FLAGS})
target_include_directories(hlight_share PRIVATE module/nna_ddk_install/include/)
set(PNNA_LINK_DIR ${CMAKE_CURRENT_SOURCE_DIR}/module/nna_ddk_install/x86/)
target_link_libraries(hlight_share PRIVATE -L${PNNA_LINK_DIR} -limgdnn_csim -lnnasession_csim)

install(TARGETS hlight_share DESTINATION lib)
endif()

if(BUILD_RISCV)
# build rvv a
LIST(APPEND RVV_LST ${NN2_SRCS} ${REF_SRCS} ${GREF_SRCS} ${THEAD_RVV_SRCS})
add_library(rvv_static STATIC ${RVV_LST})
SET_TARGET_PROPERTIES(rvv_static PROPERTIES OUTPUT_NAME "csi_nn2_rvv")
set(RVV_BUILD_FLAGS -march=rv64gcv0p7_zfh_xtheadc -mabi=lp64d -DCSI_BUILD_RVV -DCSI_BUILD_REF -DCSI_BUILD_GREF)
SET_TARGET_PROPERTIES(rvv_static PROPERTIES OUTPUT_NAME "shl_rvv")
set(RVV_BUILD_FLAGS -march=rv64gcv0p7_zfh_xtheadc -mabi=lp64d -DSHL_BUILD_RVV -DSHL_BUILD_REF -DSHL_BUILD_GREF)
target_compile_options(rvv_static PRIVATE ${RVV_BUILD_FLAGS})

install(TARGETS rvv_static DESTINATION lib)

# build c906 a
LIST(APPEND C906_LST ${NN2_SRCS} ${REF_SRCS} ${GREF_SRCS} ${THEAD_RVV_SRCS} ${C906_SRCS})
add_library(c906_static STATIC ${C906_LST})
SET_TARGET_PROPERTIES(c906_static PROPERTIES OUTPUT_NAME "csi_nn2_c906")
set(C906_BUILD_FLAGS -march=rv64gcv0p7_zfh_xtheadc -mabi=lp64d -DCSI_BUILD_C906 -DCSI_BUILD_REF -DCSI_BUILD_GREF)
SET_TARGET_PROPERTIES(c906_static PROPERTIES OUTPUT_NAME "shl_c906")
set(C906_BUILD_FLAGS -march=rv64gcv0p7_zfh_xtheadc -mabi=lp64d -DSHL_BUILD_C906 -DSHL_BUILD_REF -DSHL_BUILD_GREF -DSHL_BUILD_RVV)
target_compile_options(c906_static PRIVATE ${C906_BUILD_FLAGS})

install(TARGETS c906_static DESTINATION lib)

add_library(c906_share SHARED ${C906_LST})
SET_TARGET_PROPERTIES(c906_share PROPERTIES OUTPUT_NAME "csi_nn2_c906")
SET_TARGET_PROPERTIES(c906_share PROPERTIES OUTPUT_NAME "shl_c906")
target_compile_options(c906_share PRIVATE ${C906_BUILD_FLAGS})

install(TARGETS c906_share DESTINATION lib)

# build c908 a
LIST(APPEND C908_LST ${NN2_SRCS} ${REF_SRCS} ${GREF_SRCS} ${THEAD_RVV_SRCS} ${C908_SRCS})
add_library(c908_static STATIC ${C908_LST})
SET_TARGET_PROPERTIES(c908_static PROPERTIES OUTPUT_NAME "shl_c908")
set(C908_BUILD_FLAGS -march=rv64gcv_zfh_xtheadc_xtheadv -mabi=lp64d -DSHL_BUILD_C908 -DSHL_BUILD_REF -DSHL_BUILD_GREF -DSHL_BUILD_RVV)
target_compile_options(c908_static PRIVATE ${C908_BUILD_FLAGS})

install(TARGETS c908_static DESTINATION lib)

# build pnna so
LIST(APPEND PNNA_LST ${NN2_SRCS} ${REF_SRCS} ${PNNA_SRCS})
add_library(pnna_share SHARED ${PNNA_LST})
SET_TARGET_PROPERTIES(pnna_share PROPERTIES OUTPUT_NAME "shl_pnna")
set(PNNA_BUILD_FLAGS -DSHL_BUILD_PNNA)
target_compile_options(pnna_share PRIVATE ${PNNA_BUILD_FLAGS})
target_include_directories(pnna_share PRIVATE module/nna_ddk_install/include/)
set(PNNA_LINK_DIR ${CMAKE_CURRENT_SOURCE_DIR}/module/nna_ddk_install/light/)
target_link_libraries(pnna_share PRIVATE -L${PNNA_LINK_DIR} -limgdnn -lnnasession)

install(TARGETS pnna_share DESTINATION lib)

# build heterogeneous pnna so
LIST(APPEND HLIGHT_LST ${NN2_SRCS} ${REF_SRCS} ${GREF_SRCS} ${PNNA_SRCS})
add_library(hlight_share SHARED ${HLIGHT_LST})
SET_TARGET_PROPERTIES(hlight_share PROPERTIES OUTPUT_NAME "shl_hlight")
set(HLIGHT_BUILD_FLAGS -DSHL_BUILD_REF -DSHL_BUILD_GREF -DSHL_BUILD_PNNA)
target_compile_options(hlight_share PRIVATE ${HLIGHT_BUILD_FLAGS})
target_include_directories(hlight_share PRIVATE module/nna_ddk_install/include/)
set(PNNA_LINK_DIR ${CMAKE_CURRENT_SOURCE_DIR}/module/nna_ddk_install/light/)
target_link_libraries(hlight_share PRIVATE -L${PNNA_LINK_DIR} -limgdnn -lnnasession)

install(TARGETS hlight_share DESTINATION lib)
endif()

if(BUILD_RISCV_ELF)
# build c906 elf a
LIST(APPEND C906_LST ${NN2_SRCS} ${REF_SRCS} ${GREF_SRCS} ${THEAD_RVV_SRCS} ${C906_SRCS})
add_library(c906_elf_static STATIC ${C906_LST})
SET_TARGET_PROPERTIES(c906_elf_static PROPERTIES OUTPUT_NAME "csi_nn2_c906_rtos")
set(C906_BUILD_FLAGS -march=rv64gcv0p7_zfh_xtheadc -mabi=lp64d -DCSI_BUILD_C906 -DCSI_BUILD_REF -DCSI_BUILD_GREF -DCSI_BUILD_RTOS)
SET_TARGET_PROPERTIES(c906_elf_static PROPERTIES OUTPUT_NAME "shl_c906_rtos")
set(C906_BUILD_FLAGS -march=rv64gcv0p7_zfh_xtheadc -mabi=lp64d -mcmodel=medany -DSHL_BUILD_C906 -DSHL_BUILD_REF -DSHL_BUILD_GREF -DSHL_BUILD_RTOS)
target_compile_options(c906_elf_static PRIVATE ${C906_BUILD_FLAGS})

install(TARGETS c906_elf_static DESTINATION lib)

# build ASP elf a
LIST(APPEND ASP_LST ${NN2_SRCS} ${REF_SRCS} ${GREF_SRCS} ${ASP_SRCS})
add_library(asp_elf_static STATIC ${ASP_LST})
SET_TARGET_PROPERTIES(asp_elf_static PROPERTIES OUTPUT_NAME "csi_nn2_asp")
set(ASP_BUILD_FLAGS -march=rv32imafdcp -mabi=ilp32d -DCSI_BUILD_ASP -DCSI_BUILD_REF -DCSI_BUILD_GREF -DCSI_BUILD_RTOS)
SET_TARGET_PROPERTIES(asp_elf_static PROPERTIES OUTPUT_NAME "shl_asp")
set(ASP_BUILD_FLAGS -march=rv32imafdcp -mabi=ilp32d -DSHL_BUILD_ASP -DSHL_BUILD_REF -DSHL_BUILD_GREF -DSHL_USE_ATAT_MALLOC -DSHL_BUILD_RTOS)
target_compile_options(asp_elf_static PRIVATE ${ASP_BUILD_FLAGS})

install(TARGETS asp_elf_static DESTINATION lib)
Expand All @@ -136,8 +191,8 @@ if(BUILD_CSKY)
# build openvx so
LIST(APPEND OPENVX_LST ${NN2_SRCS} ${OPENVX_SRCS})
add_library(openvx_share SHARED ${OPENVX_LST})
SET_TARGET_PROPERTIES(openvx_share PROPERTIES OUTPUT_NAME "csi_nn2_openvx")
set(OPENVX_BUILD_FLAGS -mcpu=c860v -fPIC -DCSI_BUILD_OPENVX -mhard-float)
SET_TARGET_PROPERTIES(openvx_share PROPERTIES OUTPUT_NAME "shl_openvx")
set(OPENVX_BUILD_FLAGS -mcpu=c860v -fPIC -DSHL_BUILD_OPENVX -mhard-float)
target_compile_options(openvx_share PRIVATE ${OPENVX_BUILD_FLAGS})
set(OPENVX_LINK_DIR ${CMAKE_CURRENT_SOURCE_DIR}/module/acuity-driver/driver/build/sdk/drivers)
target_link_libraries(openvx_share PRIVATE -mcpu=c860v -fPIC -mhard-float -L${OPENVX_LINK_DIR} -lArchModelSw -lNNArchPerf -lOpenVX -lOpenVXU -lCLC -lVSC -lGAL -lNNGPUBinary -lovxlib -lOvx12VXCBinary)
Expand All @@ -149,8 +204,8 @@ if(BUILD_CSKY)
# build c860 a
LIST(APPEND C860_LST ${NN2_SRCS} ${REF_SRCS} ${C860_SRCS})
add_library(c860_static STATIC ${C860_LST})
SET_TARGET_PROPERTIES(c860_static PROPERTIES OUTPUT_NAME "csi_nn2_c860")
set(C860_BUILD_FLAGS -mcpu=c860v -DCSI_BUILD_REF)
SET_TARGET_PROPERTIES(c860_static PROPERTIES OUTPUT_NAME "shl_c860")
set(C860_BUILD_FLAGS -mcpu=c860v -DSHL_BUILD_REF)
target_compile_options(c860_static PRIVATE ${C860_BUILD_FLAGS})

install(TARGETS c860_static DESTINATION lib)
Expand All @@ -160,32 +215,41 @@ if(BUILD_CSKY_ELF)
# build i805 ref a
LIST(APPEND I805_REF_LST ${NN2_SRCS} ${REF_SRCS} ${I805_REF_SRCS})
add_library(i805_ref_static STATIC ${I805_REF_LST})
SET_TARGET_PROPERTIES(i805_ref_static PROPERTIES OUTPUT_NAME "csi_nn2_ref_i805")
set(I805_REF_BUILD_FLAGS -DCSI_BUILD_REF_I805 -DCSI_MATH_DSP -DCSI_BUILD_RTOS -mcpu=i805)
SET_TARGET_PROPERTIES(i805_ref_static PROPERTIES OUTPUT_NAME "shl_ref_i805")
set(I805_REF_BUILD_FLAGS -DSHL_BUILD_REF_I805 -DSHL_BUILD_RTOS -mcpu=i805)
target_compile_options(i805_ref_static PRIVATE ${I805_REF_BUILD_FLAGS})
target_include_directories(i805_ref_static PRIVATE include/include_xt800)
target_include_directories(i805_ref_static PRIVATE source/i805_ref)

install(TARGETS i805_ref_static DESTINATION lib)

# build i805 a
LIST(APPEND I805_LST ${NN2_SRCS} ${REF_SRCS} ${I805_SRCS})
add_library(i805_static STATIC ${I805_LST})
SET_TARGET_PROPERTIES(i805_static PROPERTIES OUTPUT_NAME "csi_nn2_i805")
set(I805_BUILD_FLAGS -DCSI_BUILD_I805 -DCSI_MATH_DSP -DCSI_BUILD_RTOS -mcpu=ck805ef -mhard-float)
SET_TARGET_PROPERTIES(i805_static PROPERTIES OUTPUT_NAME "shl_i805")
set(I805_BUILD_FLAGS -DSHL_BUILD_I805 -DSHL_BUILD_RTOS -mcpu=ck805ef -mhard-float)
target_compile_options(i805_static PRIVATE ${I805_BUILD_FLAGS})
target_include_directories(i805_static PRIVATE include/include_xt800)
target_include_directories(i805_static PRIVATE source/i805_opt)

install(TARGETS i805_static DESTINATION lib)

# build e804 a
LIST(APPEND E804_LST ${NN2_SRCS} ${REF_SRCS} ${E804_SRCS})
add_library(e804_static STATIC ${E804_LST})
SET_TARGET_PROPERTIES(e804_static PROPERTIES OUTPUT_NAME "csi_nn2_e804")
set(E804_BUILD_FLAGS -DCSI_BUILD_E804 -mcpu=e804d -DCSI_BUILD_RTOS -mno-required-attr-fpu-abi)
SET_TARGET_PROPERTIES(e804_static PROPERTIES OUTPUT_NAME "shl_e804")
set(E804_BUILD_FLAGS -DSHL_BUILD_E804 -mcpu=e804d -DSHL_BUILD_RTOS -mno-required-attr-fpu-abi)
target_compile_options(e804_static PRIVATE ${E804_BUILD_FLAGS})
target_include_directories(e804_static PRIVATE include/include_xt800)
target_include_directories(e804_static PRIVATE source/e804_opt)

install(TARGETS e804_static DESTINATION lib)
endif()

# coverage options
OPTION(ENABLE_GCOV "Enable gcov" OFF)
if(ENABLE_GCOV)
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage -lgcov")
endif()


install(DIRECTORY "include/." DESTINATION "include" FILES_MATCHING PATTERN "*.h")
26 changes: 22 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,37 @@ nn2_c906_so:
nn2_c906_elf:
mkdir -p riscv_elf_build; cd riscv_elf_build; cmake ../ -DBUILD_RISCV_ELF=ON -DCMAKE_BUILD_TYPE=Release; make c906_elf_static -j8; cd -

nn2_asp_elf:
mkdir -p riscv_elf_build; cd riscv_elf_build; cmake ../ -DBUILD_RISCV_ELF=ON -DCMAKE_BUILD_TYPE=Release; make asp_elf_static -j8; cd -

nn2_c908:
mkdir -p riscv_build; cd riscv_build; cmake ../ -DBUILD_RISCV=ON -DCMAKE_BUILD_TYPE=Release; make c908_static -j8; cd -

nn2_ref_x86:
mkdir -p x86_build; cd x86_build; cmake ../ -DBUILD_X86=ON -DCMAKE_BUILD_TYPE=Release; make x86_share -j8; cd -
mkdir -p x86_build; cd x86_build; cmake ../ -DBUILD_X86=ON -DCMAKE_BUILD_TYPE=Release; make x86_static -j8; cd -

nn2_openvx:
mkdir -p csky_build; cd csky_build; cmake ../ -DBUILD_CSKY=ON -DCMAKE_BUILD_TYPE=Release; make openvx_share -j8; cd -

nn2_pnna:
mkdir -p riscv_build; cd riscv_build; cmake ../ -DBUILD_RISCV=ON -DCMAKE_BUILD_TYPE=Release; make pnna_share -j8; cd -

nn2_pnna_x86:
mkdir -p x86_build; cd x86_build; cmake ../ -DBUILD_X86=ON -DCMAKE_BUILD_TYPE=Release; make pnna_share -j8; cd -

nn2_hlight_x86:
mkdir -p x86_build; cd x86_build; cmake ../ -DBUILD_X86=ON -DCMAKE_BUILD_TYPE=Release; make hlight_share -j8; cd -

nn2_hlight:
mkdir -p riscv_build; cd riscv_build; cmake ../ -DBUILD_RISCV=ON -DCMAKE_BUILD_TYPE=Release; make hlight_share -j8; cd -

.PHONY: install_nn2
install_nn2: include
mkdir -p install_nn2/lib
cp include install_nn2 -r
-cp riscv_build/libcsi_nn2_* install_nn2/lib -rf
-cp csky_build/libcsi_nn2_* install_nn2/lib -rf
-cp x86_build/libcsi_nn2_* install_nn2/lib -rf
-cp riscv_build/libshl_* install_nn2/lib -rf
-cp csky_build/libshl_* install_nn2/lib -rf
-cp x86_build/libshl_* install_nn2/lib -rf
cp version install_nn2/ -rf

clint:
Expand Down
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
## 简介

CSI-NN2 是 T-HEAD 提供的一组针对无剑 SoC 平台的神经网络库 API。抽象了各种常用的网络层的接口,并且提供一系列已优化的二进制库。
SHL(曾用名CSI-NN2) 是 T-HEAD 提供的一组针对玄铁 CPU 平台的神经网络库 API。抽象了各种常用的网络层的接口,并且提供一系列已优化的二进制库。

CSI-NN2 的特性:
SHL 的特性:

- C 代码版本的参考实现。
- 提供玄铁系列 CPU 的汇编优化实现。
- 支持对称量化和非对称量化。
- 支持8位定点,16位定点和16位浮点等数据类型。
- 兼容 NCHW 和 NHWC 格式。
- 搭配 [HHB](https://occ.t-head.cn/development/series/index?spm=a2cl5.14300690.0.0.4aca475a4yHCxV&id=3865005559921381376&type=kind) 实现代码自动调用。
- 覆盖 CPU,NPU 架构
- 附加一些辅助接口,参考使用
- 搭配 [HHB](https://www.yuque.com/za4k4z/oxlbxl) 实现代码自动调用。
- 覆盖 CPU,NPU 等不同体系结构
- 附加异构参考实现

CSI-NN2 提供了完成的接口声明和接口的参考实现,各个设备提供商可以依此针对性的完成各个接口的优化工作。
SHL 提供了完成的接口声明和接口的参考实现,各个设备提供商可以依此针对性的完成各个接口的优化工作。

## 文档说明

- [中文文档](https://www.yuque.com/za4k4z/isgz8o)

## 致谢

CSI-NN2 参考、借鉴了下列项目:
SHL 参考、借鉴了下列项目:
- [Caffe](https://github.com/BVLC/caffe)
- [Tensorflow](https://github.com/tensorflow/tensorflow)
- [ncnn](https://github.com/Tencent/ncnn)
Expand Down
Loading

0 comments on commit e52dcc7

Please sign in to comment.