SHL 2.2.x
|
English | 简体中文
SHL 是 T-HEAD 提供的一组针对玄铁 CPU 平台的神经网络库 API。抽象了各种常用的网络层的接口,并且提供一系列已优化的二进制库。
SHL 的特性:
SHL 提供了完成的接口声明和接口的参考实现,各个设备提供商可以依此针对性的完成各个接口的优化工作。
SHL 的预编译库可以通过 PyPi 安装 hhb 时,一起安装。
二进制库的安装目录在 /usr/local/lib/python3.6/dist-packages/tvm/install_nn2/
以 Ubuntu 上编译 c906 优化为例。
编译 C906 需要用到 T-HEAD RISC-V GCC, 从 OCC 下载 GCC 2.6 版本,解压并设置路径。
下载源码
编译 c906
安装 c906
以玄铁 CPU C906 执行 mobilenetv1 为例,可以参考 example 中的示例,示例中以较简易的方式描述了如何调用 SHL 的接口。
编译命令如下:
完成后会生成 c906_mobilenetv1_f16.elf 文件。将其复制到带 C906 CPU 的开发板【比如 D1】后,执行:
NOTE: 原始 mobilenetv1 中每层 conv2d 后接一层 batch norm,示例中假设已经通过部署工具将其融合进 conv2d。关于如何使用部署工具融合 batch norm,以及生成对应的权重数值,可以参考 HHB 的使用。
SHL 参考、借鉴了下列项目: