跳转至

Tengine支持

Tengine简介

​ Tengine 是 OPEN AI LAB 推出的边缘 AI 计算框架,致力于解决 AIoT 产业链碎片化问题,加速 AI 产业化落地。Tengine 为了解决 AIoT 应用落地问题,重点关注嵌入式设备上的边缘 AI 计算推理,为海量 AIoT 应用和设备提供高性能 AI 推理的技术赋能。

​ 一方面Tengine通过异构计算技术同时调用 CPU、GPU、DSP、NPU 等不同计算单元来完成 AI 网络计算,另一方面,它支持 TensorFlow、Caffe、MXNet、PyTorch、MegEngine、DarkNet、ONNX、ncnn 等业内主流框架,简化并加速面向场景的 AI 算法在嵌入式边缘设备上快速迁移,以及实际应用部署落地,提升十倍基础开发的效率。

​ Tengine 向下几乎兼容所有主流国产 AI 芯片;向上则支撑所有主流训练框架及网络模型,包括 TensorFlow、PyTorch、Caffe、PaddlePaddle等。是国际上为数不多的通过 ONNX 官方认证的战略合作伙伴之一。在 CSDN 发布的《中国 AI 应用开发者报告》上,被评为“开发者最喜爱的本土 AI 框架工具”。

​ Tengine 与 OpenCV 合作共同加速边缘智能,成为 OpenCV 的全球合作伙伴。Tengine 还与老牌跨平台计算机视觉库 OpenCV 进一步深入合作,共同加速边缘智能,成为其全球合作伙伴。

​ Tengine 示例使用说明见:https://github.com/OAID/Tengine

下载

【威力加强包】Tengine D1哪吒开发板Demo:https://www.aw-ol.com/downloads?cat=9

版本文件目录说明

$ tree ./sample
sample/
├── README.md
└── console
    ├── CMakeLists.txt
    ├── apps
    │   ├── CMakeLists.txt
    │   ├── common
    │   │   ├── common.h
    │   │   ├── compiler_fp16.h
    │   │   ├── msc_getopt.h
    │   │   ├── stb_image.h
    │   │   ├── stb_image_write.h
    │   │   ├── tengine_operations.c
    │   │   └── tengine_operations.h
    │   ├── test_classification.cpp
    │   └── test_yolofastest.cpp
    ├── cmake
    │   ├── check.cmake
    │   └── summary.cmake
    ├── data
    │   ├── cat.jpg
    │   ├── mobilenet_v1.tmfile
    │   ├── squeezenet.tmfile
    │   ├── ssd_dog.jpg
    │   └── yolo-fastest-1.1.tmfile
    ├── tengine
    │   └── linux-rv64
    │       ├── include
    │       │   └── tengine
    │       │       └── c_api.h
    │       └── lib
    │           ├── libtengine-lite-static.a
    │           └── libtengine-lite.so
    └── toolchains
        └── rv64-c906.toolchain.cmake

运行示例

交叉工具链准备

依赖的交叉工具链压缩包:

riscv64-glibc-gcc-thead_20200702.tar.gz

gcc 版本信息:

$ riscv64-unknown-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=riscv64-unknown-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/mnt/d/ubuntu/riscv64-glibc-gcc-thead_20200702/bin/../libexec/gcc/riscv64-unknown-linux-gnu/8.1.0/lto-wrapper
Target: riscv64-unknown-linux-gnu
Configured with: /ldhome/software/toolsbuild/slave/workspace/riscv64_build_linux_x86_64/build/../source/riscv/riscv-gcc/configure --target=riscv64-unknown-linux-gnu --with-mpc=/ldhome/software/toolsbuild/slave/workspace/riscv64_build_linux_x86_64/lib-for-gcc-x86_64-linux/ --with-mpfr=/ldhome/software/toolsbuild/slave/workspace/riscv64_build_linux_x86_64/lib-for-gcc-x86_64-linux/ --with-gmp=/ldhome/software/toolsbuild/slave/workspace/riscv64_build_linux_x86_64/lib-for-gcc-x86_64-linux/ --prefix=/ldhome/software/toolsbuild/slave/workspace/riscv64_build_linux_x86_64/install --with-sysroot=/ldhome/software/toolsbuild/slave/workspace/riscv64_build_linux_x86_64/install/sysroot --with-system-zlib --enable-shared --enable-tls --enable-languages=c,c++,fortran --disable-libmudflap --disable-libssp --disable-libquadmath --disable-nls --disable-bootstrap --src=../../source/riscv/riscv-gcc --enable-checking=yes --with-pkgversion='C-SKY RISCV Tools V1.8.4 B20200702' --enable-multilib --with-abi=lp64d --with-arch=rv64gcxthead 'CFLAGS_FOR_TARGET=-O2  -mcmodel=medany' 'CXXFLAGS_FOR_TARGET=-O2  -mcmodel=medany' CC=gcc CXX=g++
Thread model: posix
gcc version 8.1.0 (C-SKY RISCV Tools V1.8.4 B20200702)

示例编译

$ cd sample/console
$ mkdir build && cd build
$ cmake ..
$ make -j4

$ export LD_LIBRARY_PATH=<project root>/tengine/linux-rv64/lib/

示例运行

$ ./apps/test_classification -m <your/sample/path>/tengine/squeezenet.tmfile -i <your/sample/path>/tengine/data/cat.jpg

image-20210517160806523

$ ./apps/test_yolofastest -m <your/sample/path>/tengine/data/yolo-fastest-1.1.tmfile -i <your/sample/path>/tengine/data/ssd_dog.jpg

注意事项

模型支持限制

本次发布是 Allwinner D1 技术预览版 ,建议运行较小模型,例如 MobileNet v1、MobileNet v2、 ResNet18、SqueezeNet v1.1、YOLO-Fastest。

矢量计算支持

Allwinner D1 开发板预装的系统不支持 RSIC-V 的指令集代码运行,需要将工具链 sysroot/lib64vxthread 中的库文件拷贝到 D1 根目录下。

Tengine技术支持

Tengine 开源社区:https://github.com/OAID/Tengine