----------------------------------------------------------------------------------------------------------------------------
开发板 :ArmSoM-Sige7
开发板
eMMC
:64GB
LPDDR4
:8GB
显示屏 :15.6
英寸HDMI
接口显示屏
u-boot
:2017.09
linux
:5.10
----------------------------------------------------------------------------------------------------------------------------
在《Rockchip RK3588 - Rockchip Linux SDK Buildroot
文件系统构建》我们对Buildroot
文件系统进行了详细的介绍,不过不知道你有没有留意到在配置环节【配置Target packages
】中,需要配置Rockchip
板级支持包,这些板级支持包是由Rockchip
提供的,本节的目的实际上就是研究部分核心板级支持包,比如OpenGL ES
、rknpu
。
至于为什么去研究这些很简单,比如我们自己在做ubuntu
根文件系统的时候,我们通常需要移植适配于硬件的动态库,因此我们就需要参考Rockchip Linux SDK
文件系统的实现。
一、板级支持包回顾
回顾《Rockchip RK3588 - Rockchip Linux SDK Buildroot
文件系统构建》文章【配置Target packages
】小节中的配置:
Target packages --->
Hardware Platforms --->
[*] Rockchip Platform --->
Rockchip SoC (rk3588) --->
( ) rk3358 chip
(X) rk3588 chip
......
[*] Rockchip Camera Engine For ISP
Rockchip BSP packages ---> // Rockchip板级支持包,很重要
[*] Rockchip Camera Engine 3A service run in booting
Specify a directory to store xml speed up bin (disabled) --->
() Rockchip Camera Engine IQ xml file
[ ] rockchip common algorithm
[*] gstreamer1-rockchip
[*] A rockchip-mpp V4L2 wrapper plugin for chromium V4L2 VDA
[ ] Rockchip NPU power control for linux
[ ] Rockchip NPU power control combine for linux
[ ] rk n4 camera
[ ] Rockchip recovery for linux
[ ] rknpu
[ ] rknpu pcie
[ ] rknpu2
[ ] rknn_demo
[*] rockchip script
() default PCM
[ ] rkscript iodomain notice script
......
[ ] Rockchip rkupdate for linux
[*] rkwifibt
[ ] Enable static
[ ] rkwifibt wireless applicantion
[*] rockchip-alsa-config
[*] rockchip-rga
[*] prefer using rockchip-rga
[*] rockchip-mali
......
[*] wayland winsys
[*] GBM
[*] OpenGL EGL
[*] OpenGL EGL Wayland
[*] OpenGL ES
[*] OpenCL
[ ] Vulkan
[*] rockchip-mpp --->
......
除了我们在OTA
升级中介绍过的Rockchip recovery for linux
,还有一堆其它的编译选项,比如rknpu
、OpenGL ES
等,你可能好奇这些配置项是用来做什么的,但是请你按住性子往下看下去,我们会在后续文章一一介绍这些编译配置选项。
二、RKNPU
介绍
2.1 NPU
的由来
NPU
(Nerual Processing Unit
)是一种专门用于加速神经网络计算的处理器。
在深度学习技术刚开始流行的时候,人们主要使用通用计算设备,如CPU
和GPU
,来执行神经网络计算。但是,随着神经网络的复杂度和规模不断增加,传统的计算设备已经不能满足快速、高效地执行神经网络计算的需求。因此,研究人员开始探索如何设计一种专门用于加速神经网络计算的处理器,这就是NPU
的由来。
早期的NPU
主要是基于FPGA
(Field Programmable Gate Array
)实现的。FPGA
是一种可编程逻辑器件,可以通过编程实现各种不同的电路功能。由于FPGA
具有高度的灵活性和可编程 性,可以用于实现各种不同类型的神经网络处理器。
2010
年,斯坦福大学的研究人员提出了一种基于FPGA
的神经网络加速器,可以实现高效的神经网络计算。此后,越来越多的研究人员开始尝试使用FPGA
实现NPU
。
随着深度学习技术的不断发展和普及,NPU
的研究和开发也取得了越来越多的进展;
2013
年,Google
发布了一篇论文,介绍了一种名为Tensor Processing Unit
(TPU
)的定制芯片,专 门用于加速深度学习模型的训练和推理。TPU
采用了特定的硬件架构和优化算法,可以实现高效、低功耗的神经网络计算。TPU
的成功引起了业界的广泛关注,也促进了NPU
的发展。 随后,其他公司也开始研发自己的NPU
2015
年,华为发布了一款名为Kirin 950
的处理 器,集成了一种名为Neural Processing Unit
(NPU
)的模块,用于加速神经网络计算;2017
年,苹果公司在2017
年发布的A11
芯片中集成了神经网络处理器,用于支持人脸识别等功能;2018
年,华为推出了全新的昇腾(Ascend
)系列处理器,其中包括专门用于加速深度学习计算的NPU
模块。同年,英伟达推出了名为TensorCore
的加速器,用于加速深度学习模型的训练和推理;
随着NPU
技术的不断发展和普及,越来越多的公司开始将NPU
集成到自己的芯片中,以 速神经网络计算。瑞芯微为了满足人工智能的需要,瑞芯微的处理器也逐渐集成了NPU
,而瑞芯微处理器内置的NPU
,就被称之为RKNPU
。
2.2 RKNPU
介绍
到目前为止,RKNPU
已经经过了几代的发展,趋近成熟;
RK3399pro
和RK1808
初次引入了RKNPU
,相比传统的CPU
和GPU
,在深度学习运算能力上有比较大幅度的提升;- 接下来在
RV1109
和RV1126
上使用了第二代NPU
,提升了NPU
的利用 率; - 第三代
NPU
应用在RK3566
和RK3568
上,搭载全新NPU
自研架构; - 而
RK3588
搭载的 为第四代NPU
,提高了带宽利用率,支持了多核扩展。
RKNPU
具体发展过程如下图所示:
RKNPU1.0
和RKNPU2.0
被划分为了RKNPU
,而RKNPU3.0
、RKNPU4.0
和RKNPU5.0
被划分为了RKNPU2
,RKNPU
和RKNPU2
所使用的SDK
和工具套件不同。
RK3568
和RK3588
的NPU
具有的功能如下:
SoC类型 | NPU功能描述 |
---|---|
RK3588 | (1)拥有三个NPU核心 (2)支持三核协同工作,双核协同工作和独立工作 (3)使用AHB接口配置 NPU (4)使用AXI接口从内存中获取数据 (5)支持int4、int8、int16、float16、Bfloat16和tf32操作 (6)每个周期可进行1024x3 个int8 MAC操作 (7)每个周期可进行512x3 个int16 MAC操作 (8)每个周期可进行512x3 个float16 MAC操作 (9)每个周期可进行512x3 个bfloat16 MAC操作 (10)每个周期可进行256x3 个tf32 MAC操作 (11)每个周期可进行 2048x3 个int4 MAC操作 (12)每个核心有384KB的内部缓存 (13)支持转换的推理模型:TensorFlow、Caffe、Tflite、Pytorch、Onnx NN |
RK3568 | (1)NPU支持以下特性: (2)使用AHB接口配置 NPU (3)使用AXI接口从内存中获取数据 (4)支持int8、int16、float16、Bfloat16 操作(5)每个周期可进行512个int8 MAC操作 (6)每个周期可进行128 个int16 MAC操作 (7)每个周期可进行128 个float16 MAC操作 每个周期可进行128 个 bfloat16 MAC操作(8)4(9)每个核心有256KB的内部缓存 (10)支持转换的模型:TensorFlow、Caffe、Tflite、Pytorch、OnnxNN等 |
RKNN
三核架构如下图所示:
2.2.1 RKNPU
单核框架
RKNPU
单核心架构如下图所示:
参考文章
[1] Rockchip_Quick_Start_RKNN_SDK_V1.3.0_CN.pdf
[2] AI
嵌入式人工智能开发 --- 【1】初始RKNPU