CN113177877B - 一种面向slam后端优化的舒尔消除加速器 - Google Patents
一种面向slam后端优化的舒尔消除加速器 Download PDFInfo
- Publication number
- CN113177877B CN113177877B CN202110395362.5A CN202110395362A CN113177877B CN 113177877 B CN113177877 B CN 113177877B CN 202110395362 A CN202110395362 A CN 202110395362A CN 113177877 B CN113177877 B CN 113177877B
- Authority
- CN
- China
- Prior art keywords
- data
- matrix
- accelerator
- control module
- schuler
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种面向SLAM后端优化的舒尔消除加速器,包括算法控制模块,用于完成控制信号的维护;预取控制模块,用于完成输入投影误差数据和雅可比矩阵数据的预取操作;数据缓存访问控制模块,用于完成数据缓存的地址生成和读写请求,包括不同矩阵数据的地址维护和读请求的提前发起;运算模块,用于完成矩阵相乘、矩阵求逆、矩阵相加减、矩阵与常数的乘法;数据重排及其控制单元,用于完成数据的重新组合;输入输出缓存单元,用于完成预取输入的提前缓存以及输出时的数据缓存;数据缓存单元,用于完成运算过程中中间数据的缓存。本发明通过提出FPGA加速器方案对舒尔消除过程进行硬件加速,让传统嵌入式平台能够以更高的性能去执行BA优化过程。
Description
技术领域
本发明涉及SLAM系统硬件加速器设计领域,尤其涉及一种面向SLAM后端优化的舒尔消除加速器。
背景技术
光束平差法(Bundle Adjustment,BA)是一种联合优化相机参数以及三维特征点位置的算法。BA是同步定位和地图构建(Simultaneous Localization And Mapping,SLAM)里面的计算密集型算法,其应用领域广泛。在SLAM领域中,BA应用其后端优化环节,可以明显地降低传感器噪声对SLAM系统的影响。因此,BA使移动机器人能更精确的对自身的位置和环境特征建立模型,从而更好地执行移动任务。
在早期的SLAM研究中,SLAM系统后端算法发展集中在基于滤波算法的探索,扩展卡尔曼滤波算法占据了主导地位。近年来,随着BA在计算性能和优化精度上相比滤波算法展现出明显的优势,基于BA的SLAM系统获得了快速发展。
然而,BA在实现过程中用时较长,且消耗大量的功耗。非移动设备在部署BA时,通常采用分布式处理以及并行计算的方式来提高BA性能,以更大的功耗来换取更高的性能。对于移动嵌入式平台来说,上述方案是无法接受的,因此需要对其设计专门的硬件加速器以满足性能提升的同时功耗也降低。
发明内容
为了克服现有技术中BA在性能功耗受限的移动平台上无法实现的不足,本发明提供一种面向SLAM后端优化的舒尔消除加速器,可以更好的满足嵌入式平台对算法计算性能和功耗的要求。
为解决上述问题,本发明提供的技术方案如下:
一种面向SLAM后端优化的舒尔消除加速器,针对后端优化主流的列文伯格—马夸尔特(Levenberg-Marquardt,LM)算法中耗时严重的舒尔消除部分采用FPGA平台进行硬件实现,其余算法在通用处理器上实现,通过共享的DRAM存储空间进行数据交互,所述加速器包括控制算法流程的算法控制模块、预取数据的预取控制模块、数据缓存访问控制模块、负责主要运算的运算模块、重组数据的数据重排及其控制单元、输入输出缓存单元以及数据缓存单元;
所述算法控制模块,用于完成控制信号的维护,包括数据访问请求、数据重排选择信息、状态跳转信息;
所述预取控制模块,用于完成输入投影误差数据和雅可比矩阵数据的预取操作;
所述数据缓存访问控制模块,用于完成数据缓存的地址生成和读写请求,包括不同矩阵数据的地址维护和读请求的提前发起;
所述运算模块,用于完成算法运算需求,包括矩阵相乘、矩阵求逆、矩阵相加减、矩阵与常数的乘法;
所述数据重排及其控制单元,用于完成数据的重新组合;
所述输入输出缓存单元,用于完成预取输入的提前缓存以及输出时的数据缓存;
所述数据缓存单元,用于完成运算过程中中间数据的缓存。
进一步,利用所述数据重排及其控制单元和数据缓存访问控制模块,对所有具有对称性特征的矩阵的下三角部分计算和存储进行了忽略。
再进一步,所述数据重排及其控制单元利用伴随矩阵和行列式计算有相同的中间结果,对该中间结果进行了调用而不是重新计算。
利用所述算法控制模块进行循环展开以及提前下一轮EC矩阵的计算至r矩阵计算之前,降低了舒尔补更新阶段数据相关性造成的运算阻塞。
本发明具有如下有益效果:
1、本发明提供了一种面向SLAM后端优化的舒尔消除加速器设计方案,可以更好的满足嵌入式平台对算法计算性能和功耗的要求;
2、本发明去除了算法中所有矩阵对称部分的冗余运算,同时通过共用中间计算结果减少了计算量,通过优化的缓存访问方式降低了部分矩阵的访问次数,将循环展开并运算提前降低了数据相关性,提升了计算性能。
附图说明
图1是本发明面向SLAM后端优化的舒尔消除加速器架构示意图;
图2是本发明算法控制模块的主状态机图;
图3是本发明预取控制模块的硬件结构图;
图4是本发明数据重排及其控制单元H矩阵计算源数据重排的原理图;
图5是本发明数据缓存中E矩阵存储示意图。
具体实施方式
下面结合附图以及算法原理对本发明进行详细的介绍。
SLAM后端主流采用LM算法进行相机位姿和路标点的坐标优化。该算法在SLAM中有稀疏性特征,可以使用舒尔消除算法降低运算量;该算法可以分成雅可比矩阵更新、舒尔消除、方程求解以及增量评估四个部分,其中舒尔消除过程消耗了大量计算资源,其过程可分为H矩阵计算、矩阵求逆、舒尔补更新和舒尔补融合四个阶段。
所述H矩阵计算阶段,用于完成根据重投影损失函数关于相机位姿和路标点的雅可比矩阵、观测点坐标与路标点重投影的差分块求解H矩阵的子矩阵Cii、Bjj和Eij矩阵,以及其他用于LM算法优化过程的矩阵;
所述矩阵求逆阶段,用于完成Cii矩阵求逆;
所述舒尔补更新阶段,用于完成Eij和Cii相乘后的EC矩阵计算,以及根据EC更新舒尔补矩阵Sjk;
所述舒尔补融合阶段,用于完成H矩阵计算阶段中的Bjj矩阵和舒尔补更新阶段中的Sjk的相加。
参照图1~图5,一种面向SLAM后端优化的舒尔消除加速器,针对后端优化主流的列文伯格—马夸尔特(Levenberg-Marquardt,LM)算法中耗时严重的舒尔消除部分采用FPGA平台进行硬件实现,其余算法在通用处理器上实现,通过共享的DRAM存储空间进行数据交互,包括控制算法流程的算法控制模块、预取数据的预取控制模块、数据缓存访问控制模块、负责主要运算的运算模块、重组数据的数据重排及其控制单元、输入输出缓存单元以及数据缓存单元;
所述算法控制模块,用于完成控制信号的维护,包括数据访问请求、数据重排选择信息、状态跳转信息;
所述预取控制模块,用于完成输入投影误差数据和雅可比矩阵数据的预取操作;
所述数据缓存访问控制模块,用于完成数据缓存的地址生成和读写请求,包括不同矩阵数据的地址维护和读请求的提前发起;
所述运算模块,用于完成算法运算需求,包括矩阵相乘、矩阵求逆、矩阵相加减、矩阵与常数的乘法;
所述数据重排及其控制单元,用于完成数据的重新组合;
所述输入输出缓存单元,用于完成预取输入的提前缓存以及输出时的数据缓存;
所述数据缓存单元,用于完成运算过程中中间数据的缓存。
将舒尔消除部分在FPGA硬件上实现,剩余过程在通用处理器上实现,如图1所示。当通用处理器将雅可比矩阵以及投影误差数据存放到DRAM中后,控制舒尔加速器启动;加速器首先会读取相机索引数据,同时预取参与运算的矩阵数据;加速器执行舒尔消除算法流程,依次执行每轮最外层迭代中的H矩阵计算、矩阵求逆、舒尔补更新三个阶段;在执行完最外层路标点数量的迭代后,加速器进行舒尔补融合阶段,得到最终的舒尔补矩阵。
其中,算法控制模块负责实现舒尔消除算法的运算流程控制、与其他控制模块交互的控制信号维护,其主状态转换如图2所示:RAM_INIT态时,加速器对片上数据缓存初始化,同时启动预取控制模块取数据,从而避免数据延迟;INP_ITER态时,加速器进行算法的H矩阵计算,利用Cii和Bjj矩阵计算具有对称性的特征,忽略其对称部分的计算以及存储,加快计算时间,降低片上存储;INV态时,加速器共用了伴随矩阵和行列式计算中相同的中间结果,从而提升矩阵求逆性能,同时利用逆矩阵和伴随矩阵的对称性进一步去除不必要的运算;SCHUR_ITER态时,利用循环展开以及提前EC矩阵的计算,降低了加速器舒尔补更新阶段的数据相关性,进一步提升了性能,同时,对E矩阵访问的优化,降低了E矩阵数据缓存的访问次数,实现了访存功耗的下降,进一步地,利用Sjk在j=k时的对称性降低访存次数和计算量;MERGE_WB态时,加速器对中间结果融合,获取最终的舒尔补矩阵。
其中,预取控制模块中数据表项和索引表项均设置为2项,以满足加速器运算过程中的数据需求,同时避免总线延迟对加速器性能造成影响,如图3所示。
进一步地,利用1bit数据回填指针指向下一次回填的数据表项,以及1bit数据回填-索引指针指向数据预取对应的相机索引表项;每轮迭代结束时,无效化当前参与运算的数据表项有效位,以供后续输入数据回填时利用。
进一步地,每个相机索引表项包括表示一个相机索引表项有效大小的数据,用于H矩阵计算和舒尔补更新阶段的迭代次数控制。
其中,数据重排及其控制单元负责对运算数据重新组合,以提供运算单元合适的源数据。
进一步地,数据重排及其控制单元对H矩阵计算阶段的源数据重排进行了优化,如图4所示。由于H矩阵计算阶段输入的数据源相同,故对其每个数据进行编号;根据该阶段算法流程和运算单元设计,重新排列组合输入缓存中的输入数据,再根据重排后的数据生成每个周期使用的数据对应的索引号;最后,根据索引号,对送完运算单元的每一个数据进行选择,由于前述过程中数据的重新排列,降低了每个重组矩阵子选择器的输入数据来源,从而进一步提高了硬件资源利用率。
其中,数据缓存包含了矩阵E、r、B以及S的存储。
进一步地,由于矩阵E在每轮最外层循环中,使用到的数据为矩阵E的部分非零子矩阵Ej,其中j代表第j个路标点,在下一轮最外层循环时,可以复用同一块SRAM资源对Ej进行读写,而不用将矩阵E完整存储在数据缓存中,从而降低存储资源的使用,如图5所示。
其中,数据缓存访问控制模块负责数据缓存的控制信号维护。
进一步地,由于舒尔补矩阵S在舒尔补更新阶段,j=k时,无需读取完整矩阵,只需要读取上三角部分即可,通过控制矩阵下三角部分缓存不使能,降低了不必要的缓存访问。
其中,运算单元包括9个浮点乘法器,9个浮点加法器,1个浮点除法器。
以上所述仅用以说明本发明的技术方案,而不是用于对本发明的范围的限制。对于熟悉本领域的普通技术人员来说,在不脱离本发明原理的前提下,依据本发明的技术实质做出的简单修饰和改动,都属于本发明的保护范围。
Claims (4)
1.一种面向SLAM后端优化的舒尔消除加速器,其特征在于,所述加速器包括控制算法流程的算法控制模块、预取数据的预取控制模块、数据缓存访问控制模块、负责主要运算的运算模块、重组数据的数据重排及其控制单元、输入输出缓存单元以及数据缓存单元;
所述算法控制模块,用于完成控制信号的维护,包括数据访问请求、数据重排选择信息、状态跳转信息;
所述预取控制模块,用于完成输入投影误差数据和雅可比矩阵数据的预取操作;
所述数据缓存访问控制模块,用于完成数据缓存的地址生成和读写请求,包括不同矩阵数据的地址维护和读请求的提前发起;
所述运算模块,用于完成算法运算需求,包括矩阵相乘、矩阵求逆、矩阵相加减、矩阵与常数的乘法;
所述数据重排及其控制单元,用于完成数据的重新组合;
所述输入输出缓存单元,用于完成预取输入的提前缓存以及输出时的数据缓存;
所述数据缓存单元,用于完成运算过程中中间数据的缓存;
将舒尔消除部分在FPGA硬件上实现,剩余过程在通用处理器上实现,当通用处理器将雅可比矩阵以及投影误差数据存放到DRAM中后,控制舒尔加速器启动;加速器首先会读取相机索引数据,同时预取参与运算的矩阵数据;加速器执行舒尔消除算法流程,依次执行每轮最外层迭代中的H矩阵计算、矩阵求逆、舒尔补更新三个阶段;在执行完最外层路标点数量的迭代后,加速器进行舒尔补融合阶段,得到最终的舒尔补矩阵;
其中,算法控制模块负责实现舒尔消除算法的运算流程控制、与其他控制模块交互的控制信号维护,其主状态转换:RAM_INIT态时,加速器对片上数据缓存初始化,同时启动预取控制模块取数据;INP_ITER态时,加速器进行算法的H矩阵计算,利用Cii和Bjj矩阵计算具有对称性的特征,忽略其对称部分的计算以及存储;INV态时,加速器共用了伴随矩阵和行列式计算中相同的中间结果;SCHUR_ITER态时,利用循环展开以及提前EC矩阵的计算,对E矩阵访问的优化,降低了E矩阵数据缓存的访问次数,实现了访存功耗的下降,利用Sjk在j=k时的对称性降低访存次数和计算量;MERGE_WB态时,加速器对中间结果融合,获取最终的舒尔补矩阵;
数据重排及其控制单元对H矩阵计算阶段的源数据重排进行了优化,由于H矩阵计算阶段输入的数据源相同,故对其每个数据进行编号;根据该阶段算法流程和运算单元设计,重新排列组合输入缓存中的输入数据,再根据重排后的数据生成每个周期使用的数据对应的索引号;最后,根据索引号,对送完运算单元的每一个数据进行选择。
2.根据权利要求1所述面向SLAM后端优化的舒尔消除加速器,其特征在于,利用所述数据重排及其控制单元和数据缓存访问控制模块,对所有具有对称性特征的矩阵的下三角部分计算和存储进行了忽略。
3.根据权利要求1或2所述面向SLAM后端优化的舒尔消除加速器,其特征在于,所述数据重排及其控制单元利用伴随矩阵和行列式计算有相同的中间结果,对该中间结果进行了调用而不是重新计算。
4.根据权利要求1或2所述面向SLAM后端优化的舒尔消除加速器,其特征在于,利用所述算法控制模块进行循环展开以及提前下一轮EC矩阵的计算至r矩阵计算之前,降低了舒尔补更新阶段数据相关性造成的运算阻塞。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110395362.5A CN113177877B (zh) | 2021-04-13 | 2021-04-13 | 一种面向slam后端优化的舒尔消除加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110395362.5A CN113177877B (zh) | 2021-04-13 | 2021-04-13 | 一种面向slam后端优化的舒尔消除加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113177877A CN113177877A (zh) | 2021-07-27 |
CN113177877B true CN113177877B (zh) | 2022-06-28 |
Family
ID=76923334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110395362.5A Active CN113177877B (zh) | 2021-04-13 | 2021-04-13 | 一种面向slam后端优化的舒尔消除加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113177877B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111028125A (zh) * | 2019-11-14 | 2020-04-17 | 天津大学 | 一种用于slam的已知自身位姿的光束平差法fpga加速器 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3943888A1 (en) * | 2016-08-04 | 2022-01-26 | Reification Inc. | Methods for simultaneous localization and mapping (slam) and related apparatus and systems |
WO2018049581A1 (zh) * | 2016-09-14 | 2018-03-22 | 浙江大学 | 一种同时定位与地图构建方法 |
CN110928605B (zh) * | 2019-11-14 | 2023-05-02 | 天津大学 | 一种基于Zynq FPGA的光束平差法硬件加速器 |
-
2021
- 2021-04-13 CN CN202110395362.5A patent/CN113177877B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111028125A (zh) * | 2019-11-14 | 2020-04-17 | 天津大学 | 一种用于slam的已知自身位姿的光束平差法fpga加速器 |
Non-Patent Citations (2)
Title |
---|
一种用于SLAM的嵌入式光束平差法加速器设计;刘强等;《天津大学学报(自然科学与工程技术版)》;20201022(第12期);全文 * |
图优化SLAM的嵌入式处理技术;吴林峰等;《成都信息工程大学学报》;20190415(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113177877A (zh) | 2021-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107657581B (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
CN109598338B (zh) | 一种基于fpga的计算优化的卷积神经网络加速器 | |
US11775313B2 (en) | Hardware accelerator for convolutional neural networks and method of operation thereof | |
CN107301455B (zh) | 用于卷积神经网络的混合立方体存储系统及加速计算方法 | |
US20180314928A1 (en) | Operation apparatus and method for acceleration chip for accelerating deep neural network algorithm | |
CN106940815A (zh) | 一种可编程卷积神经网络协处理器ip核 | |
US11934826B2 (en) | Vector reductions using shared scratchpad memory | |
KR20210099991A (ko) | 딥 러닝 처리 장치, 방법, 기기 및 저장 매체 | |
US11657119B2 (en) | Hardware accelerated convolution | |
Gu et al. | DLUX: A LUT-based near-bank accelerator for data center deep learning training workloads | |
CN113743599B (zh) | 一种卷积神经网络的运算装置及服务器 | |
WO2022142479A1 (zh) | 一种硬件加速器、数据处理方法、系统级芯片及介质 | |
US20240119114A1 (en) | Matrix Multiplier and Matrix Multiplier Control Method | |
CN114356840A (zh) | 具有存内/近存计算模块的SoC系统 | |
CN109446478A (zh) | 一种基于迭代和可重构方式的复协方差矩阵计算系统 | |
CN113177877B (zh) | 一种面向slam后端优化的舒尔消除加速器 | |
WO2022007265A1 (zh) | 一种膨胀卷积加速计算方法及装置 | |
CN110837483B (zh) | 张量维度变换的方法以及装置 | |
US11886347B2 (en) | Large-scale data processing computer architecture | |
CN115878188A (zh) | 一种基于sve指令集的池化层函数的高性能实现方法 | |
CN114327639A (zh) | 基于数据流架构的加速器、加速器的数据存取方法及设备 | |
CN111078589B (zh) | 一种应用于深度学习计算的数据读取系统、方法及芯片 | |
CN114218136A (zh) | 一种面向脉动阵列的面积友好存储地址映射方法 | |
CN112100099B (zh) | 一种面向多核向量处理器的格子玻尔兹曼优化方法 | |
Zhang et al. | Yolov3-tiny Object Detection SoC Based on FPGA Platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |