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-H哪吒开发板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
$ ./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-H 技术预览版 ,建议运行较小模型,例如 MobileNet v1、MobileNet v2、 ResNet18、SqueezeNet v1.1、YOLO-Fastest。
矢量计算支持
Allwinner D1-H 开发板预装的系统不支持 RSIC-V 的指令集代码运行,需要将工具链 sysroot/lib64vxthread
中的库文件拷贝到 D1-H 根目录下。
Tengine技术支持
Tengine 开源社区:https://github.com/OAID/Tengine