3.6. SDK更新记录

3.0.0

SDK

middleware

bm168x

bmcompiler与bmruntime

  • 增加BM1684X的支持

Quantization量化工具

Sophon-inference

  • 添加保存输入输出的接口 set_dump_io_flag (python/c++)

  • Handle添加get_sn接口 (python/c++)

  • 添加多卡推理引擎MultiEngine(python)

  • 添加putText和putText_接口(python/c++)

  • 添加image_add_weighted接口 (python/c++)

  • 添加image_copy_to接口(python/c++)

  • 添加image_copy_to_padding接口 (python/c++)

  • 添加set_decoder_env接口(python/c++),用来自定义ffmpeg参数

  • PaddingAttr添加构造函数(python/c++)

  • Engine添加 create_input_tensors_map接口(python/c++),根据bmodel创建input tensor map

  • Engine添加 create_output_tensors_map接口(python/c++),根据bmodel创建output tensor map

  • Engine对输入数据格式为fortran的numpy进行优化,优化了fortran转换为contiguous的时间,在普通PC机上对于640*640的彩色图像在普通pc机上时间由40ms,缩短为3.5ms

  • 添加nms接口(python/c++)

SoC固件

2.7.0

middleware

  • 支持bmcpu opencv,即pcie模式下,在卡上cpu执行opencv的相应函数,已支持函数列表见《多媒体用户手册》文档

  • bmcv jpeg decoder接口当遇到硬件不支持的格式的时候,自动切换到turbojpeg软解码

  • 增加opencv capture.read_record接口,解码同时提供码流录制功能

  • 提供opencv imread的解码鲁棒性,当图像存在错误的时,仍然尽可能输出可解码部分的图像。由IMREAD_RETRY_SOFTDEC标志位控制

  • 将gb28181中的sip协议库由GPL协议的osip库替换为自研的sip库

  • 增加opencv capture中的fourcc支持

  • opencv在x86下增加abi0/1两套库,abi0针对centos等低于gcc5的编译器,abi1针对ubntu系统

  • 修定部分4k视频下因为secondary axi ram不够导致的解码失败问题

  • 丰富vidmulti例子,融合了多路编码的命令行选项

  • bmcv::toBMI增加了8SC3/8SC1类型的转换

  • bmcv::dumpMat增加对视频压缩格式的支持

  • 增强错误码流的鲁棒性处理,当码流错误导致底层堵塞的时候,avcodec_decode_video2或者send_packet/receive_frame接口会返回-1,以便上层应用重新连接或者做相应处理

  • 一些bug修订

bm168x

  • PCIE加载驱动的时候默认使能A53。

  • 支持PCIE虚拟网卡功能。

  • bm-smi

  • a53 使能时,bm-smi recovery重新加载a53

  • 支持PCIE MIX MODE ,pcie 模式下,使能完整的soc 功能,推理,视频图像编解码任务在soc 环境下完成,pcie 只作为通信通道。

bmcompiler与bmruntime

  • 增加了新的算子支持和优化

  • 改进了bmodel及bmruntime的内存分配机制,可以支持大模型运行,如BasicVSR

  • 增加了数据统计模式,通过export BMCOMPILER_STAT_ERR=1,可以在开比对情况下,会统计层数据的相似度,不会因为个别数据超过阈值而中断编译

  • 代码结构优化:与bmlib解耦、bmcompiler layer重构等

  • bug fix

Quantization量化工具

  • 支持新的ubuntu16.04+python3.7 docker

  • U-FrameWork优化制作lmdb程序接口,提供ufwio python安装包,易于嵌入用户开发环境制作lmdb。

  • 删除convert_imageset二进制工具,改用上述ufwio接口制作lmdb,提供制作python例程可以直接使用或者修改使用。

  • 量化工具增加MSE,PERCENTILE量化算法。

  • auto-cali整合到ufw whl包,便于依赖管理。代码进行了重构,优化一键量化调用接口,增加了更多的自动量化策略。推荐用户cv类量化优先使用一键量化。

  • 增加新版本可视化工具,旧版可视化工具暂时并存。新版工具展示网络结构,更加方便操作,推荐使用新版本可视化工具。

  • bug-fix

Sophon-inference

  • 重构头文件,隐藏实现细节,提高兼容性

  • 修复crop/resize/convert等接口会将传入的指定了输出格式的BMImage强制转换为BGR_PLANAR的问题

  • 增加了打印推理过程中主要耗时情况的开关接口set_print_flag()

  • Python中sail.Decoder删除了以bm_image为返回值的read_接口

  • BMImageArray中增加了从BMImage中copy和attach数据的接口copy_from()和attach_from()

  • 修改了Python中sail.Tensor的初始化方法,添加own_sys_data标志位,支持创建只包含设备内存的Tensor

  • Bmcv中增加了适用于bm_image的图片保存接口imwrite_

  • Python中sail.Bmcv增加了适用于bm_image的绘制矩形接口rectangle_()

  • Python中sail.Bmcv增加了接口vpp_convert_format()

  • Python中sail.Bmcv增加了接口convert_format()

  • Python中sail.Bmcv增加了接口crop_and_resize_padding()

  • 增加了Python开发中的语法提示

  • 修复若干文档错误

SE5固件

  • SE5 v2支持

  • 解耦gate相关(预置的人脸抓拍识别应用)- 仅针对Ubuntu20.04版本

  • 把sophon system 这套界面和restful api 接口移植到全家桶box,以提供给客户一些系统信息(tpu/vpu/fan等)

  • 把gate 文件系统里 bm_bin的一些基本命令移植到全家桶box,提高用户体验

  • oemconfig.ini 生成

  • 增加升级命令(bm_upgrade_runtime),从官网下载最新升级包,并升级

  • qt5.14的lib 移植到box

  • SophUI(hdmi 显示界面),显示信息,修改ip

documents

之前随SDK发布的各个模块文档修改为统一在 官网文档中心 发布,可在线查看或下载PDF

2.6.0

bmlib&driver

  • 新增了loongarch64 平台的支持

  • 修正了firmware 超过1M 后会overflow的问题

bmvid / middleware、bmcv

  • 增加proc中vpu/jpu使用率信息

  • opencv videowrite增加对rtsp/rtmp的直接支持,并增加示例

  • 大幅更新multimedia_guide文档,增加multimedia_faq文档

  • 更新并完善ffmpeg中bm-scale filter的功能:增加更多色彩的csc转换,支持常规模式下的滤波用法

  • pcie opencv使能bmcpu功能,提供A53下的font/rectangle/line等基本drawing操作

  • bmcv/vpp增加对argb颜色的支持

  • ffmpeg bmcodec增加对loop-decoding的支持

  • 增加对loongarch64平台的支持

  • windows/mips64/sw64/loogarch64平台增加x86 linux下的sample用例

  • 增加opencv/ffmpeg的各种示例,展示ffmpeg+bmcv之间的切换调用

  • bug修正:支持crop图像的jpeg编码,减少opencv下视频解码的内存占用空间,移除libbm_x264,opencvModule.cmake中移除绝对路径等

Sophon-inference

  • 修复bugs,增强稳定性

  • 增加了帧率获取接口

  • 支持int32模型输入类型

  • 增加多进程Demo

  • 文档修改

nntc

  • 增加了bmneto,支持onnx模型编译

  • bmnett支持tensorflow 2.x, saved_model模型格式

  • 增加了conv3d、deconv3d等3d算子及相关优化,支持slowfast和3dunet等3d模型

  • 增加了strideslice、transpose、depth2space等优化,提升yolov5相关模型性能

  • 优化timestep过程,减少编译时间

  • 相关工具支持的python版本升级,支持python3.7

  • 修复若干bugs

cali

  • 文档修改

  • 图优化速度优化,c++实现代替python实现

  • reverse层量化支持,lstm,batchmatmul层量化设置为浮点推理

  • bugfix

ufw

  • 增加了支持onnx模型转umodel

  • 支持保留用户定义的输入输出名

  • 若干bug修复

bsp

  • 更新SM750驱动;增加XFS支持

  • 增加了pcie mixed mode支持;修正刷机包单个gz文件太大会越界的问题;升级开源sdk和newos打包脚本;增加lte modem service;修正ethtool工具版本问题

2.5.0

bmlib&driver

  • Windows SDK开发支持

  • 目前驱动可以在debug模式下安装,支持单芯卡和三芯卡

  • 支持bm-smi基本功能

  • 支持VPU/JPU编解码基本功能

  • 支持bm_opencv, ffmpeg库加速

  • 支持网络推理运行时库

  • 增加了vpu、jpu利用率的统计和显示

  • 在申威服务器上做了适配

  • 更改了Bm-smi的显示界面

  • 增加了执行Bm-smi recovery操作时的保护,防止系统崩溃

bmcv

  • 增加2个算子: bmcv_image_axpy, bmcv_image_lapacian

  • vpp padding 支持带有 stride。

bmvid / middleware

  • 支持SC5模式下A53 opencv运行模式,支持warp, affine, sobel, erode, dialet, morphologyEx, line, calcOpticalFlowPyrLK, OpticalFlowFarneback, calcHist, boxFitler, bilateralFilter, gaussianBlur,

  • 修正rtsp mjpeg解码的问题

  • 修正硬件编码下flv的打包问题

  • ffmpeg支持lame mp3解码

  • ffmpeg支持hls协议

  • ffmpeg命令行增加zero_copy选项,支持硬件解码的yuv输出

  • 扩展平台支持到龙芯,申威,以及windows系统

  • 增加vpu/jpu usage信息到proc输出

  • bug修正

Sophon-inference

  • bug fix

  • 文档修正

nntc

  • 增加用户自定义tpu layer插件,支持bmkernel编写某个layer并插入到网络

  • 增加用户自定义编译优化插件及demo

  • nms最大支持65536个检测框

  • bmnetu支持gru layer

  • bmcpu/bmruntime适配windows/mips64/sw64

  • int8模型动态编译支持conv3d/pooling3d

  • 性能优化及bug修复

  • 文档更新

cali

  • 合并leaky relu层等优化

  • 增加使用最大值量化选项

  • 文档更新

  • bug fix

ufw

  • 优化内存使用,有效减少50%内存占用

  • layer增加Tag功能,可以对Layer的功能进行归类和特性描述

  • 增加了对CFG语义分析

  • 修正部分bug

bsp

  • ATF增加a53 soft reboot功能;u-boot修复重启进入命令行后mcu watchdog timeout问题;linux增加efuse secure key保护等功能,修正tpll切换方式

  • kernel关闭errutam 843419,修正cpufreq bug

  • 支持kernel5.4和ubuntu20.04系统;兼容新旧两种命名的its node;为sm5增加了一种dts(不兼容!);debian增加ethtool、gate的设备发现工具等;修改lpddr4参数;改善u-boot usb兼容性;kernel4.9增加usb acm支持,删除重复的realtek config

  • 增加SE5 lite支持;修正memory layout工具;修正SM5 mini低配版配置

  • 更新SM750驱动;增加XFS支持

2.4.0

bmlib&driver

  • 增加板卡管理接口

  • 增加mips工具链和功能支持,达到给客户试用水平

  • 增加Windows SDK bmlib及部分测试用例cmakelist文件和驱动、Bmlib平台适配代码(尚未达到release水平)

  • 修复A53使能后无法重复装驱动的问题

  • 重构Linux下面proc下面文件的组织方式

  • 重构bm-smi代码和界面组织,支持以卡为单位显示

  • 增加了vpp模块hang后软复位功能

  • 增加了bmlib中获取memory heap信息的接口

  • 修复INTC iic2中断被mask导致的smbus读取温度失败问题

bmcv

  • 新增功能:put_text、draw_lines;

  • PCIe模式下支持使能A53,使用片上CPU完成部分操作。

bmvid / middleware

  • 增加mips64平台支持

  • 去除bmvid 自有API中的assert判断,返回错误值

  • 统一所有的jpeg解码输出到planar格式

  • 增加dumpBMImage对float32 int8等格式的支持

  • 更新osip库,提高gb28181的兼容性和稳定性

  • 调整底层调度,多路编解码时调度更加均匀

  • soc下去除8路限制,支持到24路视频编码

  • 修补问题,增强稳定性

Sophon-inference

  • Python功能添加base64支持

  • 增强Bmcv::imwrite功能,支持更多格式。

  • BMImage处理方面的一些优化

nntc

  • 【BMNETC】Power算子bugfix,支持L2Normalize算子

  • 【BMNETC】修复了rpnproposal算子计算出错的bug

  • 【BMNETP】pytorch版本升级到1.8.1

  • 【BMNETP】支持BERT模型

  • 【BMNETT】增加arcsin、arccos、arcsinh、arccosh、arctanh、cosh、sinh、tan等三角函数的支持

  • 【BMNETU】新layer支持:ShapeRange

  • 【BMNETU】python接口支持int8 umodel的拆分功能

  • 【BMNETU】增强了daily test

  • 【BMNETU】Tile layer支持两个输入

  • 【BMNETU】修复了包含reorg fix8b layer的动态网络bug

  • 【BMCOMPILER】重构graph filter优化器

  • 【BMCOMPILER】重构layer group优化器成pass结构

  • 【BMCOMPILER】优化了active SILU fix8b的性能,yolov5性能有提升

  • 【BMCOMPILER】增加了对active SIGN layer的支持

  • 【BMCOMPILER】增加了Timestep合并优化和修复了3IC优化问题,yolov3等检测网络性能有些提升

  • 【BMCOMPILER】TOPK算子使用TPU加速,包含TOPK的网络有性能提升

  • 【BMLANG】stride类计算性能优化和支持coeff输入

  • 【BMLANG】condition_select计算支持数据广播

  • 【BMLANG】支持Shape Tensor控制输入,并更新bmlang demo rgb2yuv支持crop区域可动态变化

  • 【BMLANG】多个使用相同mask的masked_select算子的性能优化

  • 【BMLANG】nms算子有数倍以上的性能提升

  • 【BMRUNTIME】去除了exit直接退出,使用c++ exception返回错误值

  • 【BMRUNTIME】对龙芯mips的支持

  • 【BMRUNTIME】包含FC层的网络也支持分辨率动态可变

  • 【BMPROFILE】修复了layer和GDMA显示错乱的问题

  • 【BMKERNEL】支持mips64

  • 【BMKERNEL】增加BMRT + BMKERNEL跑yolov3 backbone + 后处理的demo

  • 【BACKEND 1684】增加高性能分组topk的bmkernel demo

  • 【BACKEND 1684】修复了包含reduce的动态网络跑很多轮后会hang住的问题

  • 【BACKEND 1684】支持任意多算子的动态网络

  • 【BACKEND 1684】修复3d max pooling的一个计算错误bug

  • 【BACKEND 1684】优化了4N/1N转换的性能,一些网络性能会有提升

cali

  • 修复 batchnorm leakyrelu等layer的bug

  • 增加is_shape_layer标记更好地支持shape相关操作,增加shapeRange、expandDims、shapeAssign以及shapeCast等layer支持int32数据

  • 整理forward_with_float功能,增加稳定性

  • 增加用ADMM方式统计阈值

  • 完善auto_calib功能

ufw

  • 默认支持包含控制流的网络

  • 支持任意动态shape的网络,以及包含运行时推断shape的网络

  • 部分bugfix

  • 部分layer功能增强

bsp

  • 增加recovery mode下ramdisk size;增加usb刷机功能

  • 增加SM5 min宽温版支持;修正宽温版调频温度点和CPU调频机制;调整pcie rc初始化代码以支持没有refclk0的板卡;spacc secure key功能;u-boot和BL2瘦身;升级flash update工具;增大recovery分区以支持OTA;bind pcie中断到cpu7;增加fl2000重新枚举功能

  • ATF增加a53 soft reboot功能

2.3.2

bmlib&driver

  • 增加了对mips适配

  • 增加了一些mips体系结构的库

  • 修复若干SC5P的bug

  • 增加了一些支持Windows编译的cmake代码和脚本

  • 增加了对SM5-W的支持

bmcv

  • 修复几个corner case的bug;

  • 新增接口:absdiff、threshold、fft、max_min、calc-hist;

  • 整理后端代码存放位置,只有个别api放于itcm,以后新增的均放置于ddr。

bmvid

  • 支持龙芯平台编译

middleware

  • 扩展opencv支持到512路视频

  • ffmpeg osip库更新

  • 修正bug

  • 支持龙芯平台编译

Sophon-inference

  • 修正了文档中URL地址连不上的问题。

nntc

  • 【BMLANG】增加deconv的perchannel int8计算demo。

  • 【BMLANG】Select/Condition select支持int8。

  • 【BMLANG】优化了NMS的性能

  • 【BMNETC】增加CONV3D和POOLING3D的支持。

  • 【BMNETT】增加用户自定义输入数据和数据类型。

  • 【BMCOMPILER】修复了一些bug来支持客户模型。

  • 【BMCOMPILER】优化了跑INT8网络的等待时间。

  • 【BMNETP】增加BMM、LAYER NORM、EINSUM算子的支持。

  • 【BMNETU】完善的单元测试。

  • 【BMPROFILE】增加CSV的导出功能。

  • 【BMPROFILE】增加解析Global memory操作的功能。

  • 【BMRUNTIME】适配了龙芯。

  • 【BACKEND_1684】优化了GDMA GEN CMD的时间开销。

  • 【BACKEND_1684】修复了后端bug。

  • 【BACKEND_1684】优化后的分组topk和全库topk的demo。

cali

  • 修复batchnorm layer的bug

  • 增加auto_calib功能

ufw

  • 修复若干bug

  • 增强了analysis工具的稳定性

  • 支持了conv per-channel计算

  • 移除了部分ufw blob data的python API

bsp

  • ATF里的DDR数据拆出一个单独的bin文件

  • 换用MCU watchdog

  • SM5宽温板卡支持

  • BSP SDK开源相关

2.3.1

bmlib&driver

  • 增加设备管理接口并跟新文档

  • 增加MIPS体系结构工程

  • fix 编译中的warn信息

  • 增加对SC5P的适配

  • 重构了驱动中更新芯片和板级温度、tpu利用率的机制

bmcv

  • 新增sobel、gaussian-blur、add-weighted、dct、yuv2hsv、batch-topk算子;

  • 优化并扩展nms,使其最大可支持65535个box的输入,并提高其性能;

  • 扩展matmul,支持输出float32的类型;

  • bugfix

middleware

  • sobel接口的8UC1→8UC1,BORDER_DEFAULT case采用硬件加速实现

  • gaussion_blur接口的8UC1输入采用硬件加速实现

  • 增加对hikvision smart选项的支持

  • 优化opencv在yuv下的font字体渲染的效果

  • 更新multimedia文档

  • 提高稳定性,修补bug

Sophon-inference

  • 问题修正,稳定性提高

nntc

  • 【bmcompiler】对包含C axis CONCAT算子的网络有性能优化。

  • 【bmnetu】【bmnetp】增加3D Conv/Pooling的支持。

  • 【bmnetu】增加对多输入网络的支持。

  • 【bmnett】增加check ops的功能。

  • 【bmnetp】增加对Pytorch GRU/LSTM模型的支持。

  • 【bmnetp】升级到支持pytorch 1.7版本。

  • 【bmlang】Deconv算子支持16bit输出。

  • 【bmlang】增加性能优化后的分组topk业务程序demo。

  • 【bmlang】GEMM支持INT8输入/FP32输出,且支持perchannel的scale。

  • 【bmlang】增加deconv做perchannel量化计算的demo。

  • 【backend_1684】nms算子在大于1024 box时比2.3.0有性能提升。

  • 【backend_1684】1N、4N数据转换的性能提升。

  • 【all】BUGs修复,提高稳定性。

ufw

  • float计算支持了包含控制流的网络

  • UFW python blob 兼容numpy数据类型

  • UFW支持了部分空集输入和计算

bsp

  • 预装perfetto工具

  • 预装板上编译kernel module需要的deb包

  • VPP driver代码优化

  • 使能PMU

3.7. 发行说明

22.09.02 release note:

  • TPU-NNTC:bugfix

  • TPU-KERNEL:优化soc和cmodel测试;bugfix

  • TPU-MLIR:无

  • TPU-PERF:无

  • sophon-mw:bugfix

  • libsophon:完善bm1684 soc mode 支持;bugfix

  • sophon-img:bugfix

  • sophon-pipeline:无

22.10.01 release note:

  • TPU-NNTC:从nntoolchain直接发包

  • TPU-KERNEL:增加若干CV算子

  • TPU-MLIR:支持编译caffe模型

  • TPU-PERF:bugfix

  • sophon-mw:bugfix

  • libsophon:bmvid目录结构整理,添加ARM 架构的支持;bugfix

  • sophon-img:更新kernel版本为5.4.219,u-boot版本为2022.10;bugfix

  • sophon-pipeline:增加yolov5、video_stitch例程

  • sophon-sail:

  1. Python新增以下接口:

  1. BMImage添加转换成opencv Mat的接口:asmat()

  2. BMImage添加获取所属设备接口:get_device_id()

  3. BMImageArray添加获取所属设备接口:get_device_id()

  4. Bmcv添加BMImage画点接口:drawPoint()

  5. Bmcv添加bm_image画点接口:drawPoint_()

  1. C++新增以下接口

  1. BMImage添加获取所属设备接口:get_device_id()

  2. BMImageArray添加获取所属设备接口:get_device_id()

  3. Bmcv添加BMImage画点接口:drawPoint()

  4. Bmcv添加bm_image画点接口:drawPoint_()

  1. Decoder修复解码时未释放Python GIL的问题

  1. sophon-demo:首次发布,包括YOLOv5、ResNet等10个例程

  2. sophon-rpc:支持PCIe模式启动板卡上A53,通过配置udev规则支持重启后自动使能A53

  3. bmmonke

  4. bmpanda

22.11.01 release note:

  • TPU-NNTC:修复了一些bugs

  • TPU-KERNEL:增加了一些cv算子samples

  • TPU-MLIR:支持了混合量化

  • TPU-PERF:修复了一些 bug

  • sophon-mw:修复了一些bug,增加了bmlib的内存分配,删除了旧的ION LIB分配的方式

  • libsophon:centos rpm 包支持;centos abi0支持

  • sophon-img:修改内核为非抢占模式;bugfix;增加了客户定制化软件包使用方法和修改kernel内存布局的方法的文档描述

  • sophon-pipeline:添加retinaface例程

  • sophon-sail:

  1. crop_and_resize接口添加对 BMCV_INTER_LINEAR、BMCV_INTER_BICUBIC 方法的支持

  2. 删除vpp_crop_padding接口,原因是接口实现有问题。

  3. resize接口添加对BMCV_INTER_LINEAR、BMCV_INTER_BICUBIC 方法的支持

  4. crop_and_resize_padding接口添加对BMCV_INTER_LINEAR、BMCV_INTER_BICUBIC 方法的支持

  5. 添加通用预处理接口

  • sophon-demo:重构LPRNet的cpp/lprnet_bmcv例程

  • sophon-rpc:bugfix

  • bmmonkey

  • bmpanda

22.12.01 release note:

  • TPU-NNTC:bugfix

  • TPU-KERNEL:bugfix

  • TPU-MLIR:tflite支持inception/yolo网络

  • TPU-PERF:修复 mlir 模型运行报错;bugfix

  • sophon-mw: fixbug; 增加A53编码case;修改ffbmcv case

  • libsophon:bugfix

  • sophon-img:开启nfsd功能;bug fix

  • sophon-pipeline:添加face_recognition和multi例程

  • sophon-sail:

  1. crop_and_resize接口添加可配置最近邻算法、线性插值算法、双三次插值算法

  2. resize接口添加可配置最近邻算法、线性插值算法、双三次插值算法

  3. crop_and_resize_padding接口添加可配置最近邻算法、线性插值算法、双三次插值算法

  4. bugfix

  • sophon-demo:fixbug;LPRNet/cpp/lprnet_bmcv使用ff_decode替换opencv解码;重构SSD相关例程

  • sophon-rpc:支持卸载库功能;修复安装时的一些bugs

  • bmmonkey

  • bmpanda

3.8. SDK已知问题

本节主要给出已经发现但尚未解决的SDK的相关问题,给出临时解决方案,供用户参考。

暂无