4.1. SAIL¶
SAIL (Sophon Artificial Intelligent Library)是 Sophon Inference 中的核心模块。 SAIL对 BMNNSDK 中的 BMLib、BMDecoder、BMCV、BMRuntime 进行了封装, 将 BMNNSDK 中原有的 “加载 bmodel 并驱动 TPU 推理”、“驱动 TPU 做图像处理”、“驱动 VPU 做图像和视频解码”等功能抽象成更为简单的 C++ 接口对外提供; 并且使用 pybind11 再次封装,提供简洁易用的 python 接口。
目前,SAIL 模块中所有的类、枚举、函数都在 “sail” 命名空间下, 本单元中的文档将向您深入介绍可能用到的 SAIL 中的模块和类。 核心的类包括:
Handle:
BMNNSDK 中 BMLib 的 bm_handle_t 的包装类,设备句柄,上下文信息,用来和内核驱动交互信息。
Tensor:
BMNNSDK 中 BMLib 的包装类,封装了对 device memory 的管理以及与 system memory 的同步。
Engine:
BMNNSDK 中 BMRuntime 的包装类,可以加载 bmodel 并驱动 TPU 进行推理。 一个 Engine 实例可以加载一个任意的 bmodel, 自动地管理输入张量与输出张量对应的内存。
Decoder
使用VPU解码视频,JPU解码图像,均为硬件解码。
Bmcv:
BMNNSDK 中 BMCV 的包装类,封装了一系列的图像处理函数,可以驱动 TPU 进行图像处理。