2.2.2. SophonSDK

../../_images/SophonSDK_INFO.png

SophonSDK 是算能自研的软件包。 上图中提及的所有软件模块都包含在 SophonSDK 中, 包括了 BMDriver, BMLib, BMCompiler, BMRuntime, Quantization & Calibration Tool, Multimedia(BM_OpenCV & BM_FFmpeg), BMCV, Sophon Inference(SAIL).

具体信息请查看 SophonSDK 入门文档:https://sophgo-doc.gitbook.io/sophonsdk3/

BMDriver :是算丰 TPU 的驱动程序,将会通过 insmod 的方式安装到系统内核中,以源码形式提供。

源码位置:${SDK}/driver

BMLib :提供了一些基础接口,用来控制 TPU 与主机的内存交互。

BMCompiler & BMRuntime :目前多种模型编译工具,支持常见深度学习框架下模型的转换。其中: bmnetc 可以将 Caffe 下训练生成的模型编译成 fp32_bmodel; bmnett 可以将 TensorFlow 下训练生成的模型编译成 fp32_bmodel; bmnetm 可以将 MXNet 下训练生成的模型编译成 fp32_bmodel; bmnetp 可以将 PyTorch 下训练生成的模型编译成 fp32_bmodel; bmnetd 可以将 Darknet 下训练生成的模型编译成 fp32_bmodel; bmneto 可以将 ONNX 下训练生成的模型编译成 fp32_bmodel; bmnpaddle 可以将 PaddlePaddle 下训练生成的模型编译成 fp32_bmodel; bmnetu 可以将 Quantization & Calibration Tool 下生成的 int8_umodel 编译成 int8_bmodel; bmruntime提供了一些应用接口,用来驱动 TPU 加载 bmodel 并进行模型推理。

Quantization & Calibration Tool :该模块可以将 FP32 精度的模型转换成 INT8 精度的模型

BMMultimedia :提供了一些应用接口,用来驱动 TPU 上的硬件单元进行图像和视频的编解码。

BMCV :提供了一些应用接口,用来驱动 TPU 上的硬件单元进行张量计算和图像处理。

SAIL :提供了一些高级接口,主要是对 BMRuntime、BMCV、BMdecoder 等运行时模块的封装。

BMLang :BMLang 是一种面向 Sophon TPU 的上层编程语言,适用于编写高性能的深度学习、图像处理、矩阵运算等算法程序。