> For the complete documentation index, see [llms.txt](https://sophgo-doc.gitbook.io/sophonsdk3/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sophgo-doc.gitbook.io/sophonsdk3/get_started/overview.md).

# 2.1 移植开发综述

### 2.1.1 算法移植流程

​基于Sophon BM168X芯片进行产品开发会经历如下几个阶段：

1. **评测选型：**&#x6839;据应用场景，确定使用的产品形态。
2. **模型迁移：**&#x5C06;原始深度学习框架下训练生成的模型转换为BM168x平台运行的FP32 BModel，必要时使用BMLang开发不支持的算子；使用量化集量化生成INT8 BModel，并测试调优确保INT8 BModel精度符合要求（推荐使用4N Batch BModel以获得最佳性能）。
3. **算法移植：**&#x57FA;于BM168X硬件加速接口，对模型的前后处理及推理现有算法进行移植。
4. **程序移植：**&#x79FB;植任务管理、资源调度等算法引擎代码及逻辑处理、结果展示、数据推送等业务代码。
5. **测试调优：**&#x7F51;络性能与精度测试、压力测试，基于网络编译、量化工具、多卡多芯、任务流水线等方面的深度优化。
6. **部署联调：**&#x5C06;算法服务打包(如Docker)部署到BM168X硬件产品上，并在实际场景中与业务平台或集成平台进行功能联调；必要时在生产环境中调整参数配置并收集数据进一步优化模型。

**在移植工作开始前，请先确保已经按照第一节的内容下载并安装配置好所需环境：**

* [x] 主机及硬件环境已经准备好
* [x] SDK及docker基础开发镜像已经下载好
* [x] docker开发镜像已加载完毕
* [x] *SDK压缩包已解压好*
* [x] *若使用PCIE加速卡，则已安装好驱动，并正常发现设备*

### 2.1.2 典型视频AI分析任务

一个典型的AI视频分析任务pipeline，通常包括：视频源 > 视频解码 > 预处理 > 推理 > 后处理 > 业务逻辑 > 视频/图片编码等环节。Sophon设备对各环节的硬件加速支持情况如下：

|   算法步骤   | 支持硬件加速 | BM-OpenCV | BM-FFmpeg |    Native接口    |
| :------: | :----: | :-------: | :-------: | :------------: |
| 视频/图片编解码 |   支持   |     Y     |     Y     |  BMCV（图片）/SAIL |
|   输入预处理  |   支持   |     Y     |     N     |    BMCV/SAIL   |
|   模型推理   |   支持   |     N     |     N     | BMRuntime/SAIL |
|   输出后处理  |  部分支持  |     N     |     N     |      BMCV      |

* 对于不支持的层或者算子可使用BMLang或者ARM CPU开发，然后融合到BModel中，参考《BMLang》开发手册&#x20;
* 对于其他需要使用TPU加速的算法可使用基于TPU原子操作接口的TPUKernel(BMKernel/OKKernel)开发
* 算子支持情况和已经测试的模型情况，请参见《NNToolchian用户开发手册》
* 样例代码见[github examples仓库](https://github.com/sophon-ai-algo/examples)，关于使用多线程构建多模型推理任务pipeline，可参考examples/inference目录下的示例代码
