CN116662730A - 一种基于FPGA的Cholesky分解计算加速系统 - Google Patents

一种基于FPGA的Cholesky分解计算加速系统 Download PDF

Info

Publication number
CN116662730A
CN116662730A CN202310960973.9A CN202310960973A CN116662730A CN 116662730 A CN116662730 A CN 116662730A CN 202310960973 A CN202310960973 A CN 202310960973A CN 116662730 A CN116662730 A CN 116662730A
Authority
CN
China
Prior art keywords
diagonal element
multiplexer
element calculation
input
circuit
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.)
Granted
Application number
CN202310960973.9A
Other languages
English (en)
Other versions
CN116662730B (zh
Inventor
胡塘
郝春玲
李相迪
玉虓
王跃明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202310960973.9A priority Critical patent/CN116662730B/zh
Publication of CN116662730A publication Critical patent/CN116662730A/zh
Application granted granted Critical
Publication of CN116662730B publication Critical patent/CN116662730B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Algebra (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开一种基于FPGA的Cholesky分解计算加速系统,该系统包括DDR存储器、AXI接口、基于FPGA实现的主体电路;基于FPGA实现的主体电路包括n块分布式RAM、n‑1个非对角线元素计算电路和1个对角线元素计算电路;系统还包括运算优化模块、对角线元素计算模块和非对角线元素计算模块;对角线元素计算模块和非对角线元素计算模块按照从左到右从上到下的顺序对输入的正定对称矩阵A执行Cholesky分解计算,直至最后一个元素ann分解计算完毕,并得到上三角矩阵R;最后通过AXI接口统一将所述上三角矩阵R输出并写回所述DDR存储器保存。该系统能够减少FPGA硬件资源的消耗,适应各种尺寸矩阵的Cholesky分解,并能够提升并行计算效率。

Description

一种基于FPGA的Cholesky分解计算加速系统
技术领域
本发明涉及信号处理领域,具体涉及一种基于FPGA的Cholesky分解计算加速系统。
背景技术
Cholesky分解是矩阵分解领域的一个重要分支,广泛应用于数字图像信号处理、机器人定位导航、雷达信号处理、科学计算等诸多领域,例如在最小二乘法、线性方程组求解、矩阵求逆等算法中经常被采用。FPGA具有天然的并行属性和可编程性,为了提升Cholesky分解的性能,很多设计采用基于FPGA来实现 Cholesky分解。但是,在Cholesky分解实现过程中,上三角矩阵R中的每一行或列的对角线元素计算输出后,才可以执行该行或该列其他元素的计算,存在串行执行的特点,并且R矩阵中后一行或列的元素计算需要依赖前面几行或前面几列结果先计算输出,存在强烈数据依赖性,以及频繁的数据搬运和计算操作,限制了整体并行计算效率,当前基于FPGA实现高性能的Cholesky分解仍是研究热点之一。
申请号为CN202010929259.X的发明专利内容提及了采用计算模块之间直接进行互联、运算级流水线方式来实现Cholesky分解硬件加速。但是,该方法需要占用m=n(n+1)/2个计算模块,且每个计算模块分别对应一个计算公式,因而需要分别设计电路,导致硬件资源消耗巨大,只能适合小尺寸矩阵的Cholesky分解。
申请号为CN201810412919.X的发明专利内容提及了利用CORDIC算法的旋转特性实现正定矩阵Cholesky分解,实现方式简单,只需位操作运算。但是,Cholesky分解算法本身包含平方根和除法计算,CORDIC定点计算会存在动态范围不足的严重问题,而如果增加位宽,会导致硬件资源成比例显著上升,对于大尺寸矩阵而言,情况将更为严重。因此,该方法更多地适用于输入矩阵数值范围相对较小且已知的场景应用。
申请号为CN201510245953.9的发明专利内容提及了采用嵌入式片上系统加速Cholesky分解的方法,但是该方法中的硬件电路更多地是以加速引擎呈现,需要使用ARM处理器SoC系统、DMA模块和DDR控制器等大量硬件资源和软件程序开发,Cholesky分解过程的任务调度和数据搬运都由处理器来负责实施,更多的是属于CPU软件+FPGA计算引擎的范畴。
发明内容
为提升基于FPGA实现Cholesky分解的高效性,减少FPGA硬件资源的消耗,适应各种尺寸矩阵的Cholesky分解,以及并行计算效率的提升,本发明提出一种基于FPGA的Cholesky分解计算加速系统,具体技术方案如下:
一种基于FPGA的Cholesky分解计算加速系统,该系统包括DDR存储器、AXI接口、基于FPGA实现的主体电路;所述基于FPGA实现的主体电路包括n块分布式RAM、n-1个非对角线元素计算电路和1个对角线元素计算电路;
所述非对角线元素计算电路包括乘法器、累加器、复用器一、复用器二、复用器三、解复用器、旁路器、单精度浮点数符号位取反电路;
所述对角线元素计算电路包括乘法器、累加器、复用器、平方根计算器、被除数固定为1的除法器、单精度浮点数符号位取反电路;
该系统还包括运算优化模块、对角线元素计算模块和非对角线元素计算模块;
所述运算优化模块通过所述AXI接口将n行×n列的正定对称矩阵A从外部DDR存储器并行写入FPGA内部的分布式RAM,每1列对应1块RAM,共n块RAM;并对Cholesky分解公式中的减法运算转化为加法运算,除法运算转化为乘法运算;
所述对角线元素计算模块和非对角线元素计算模块按照从左到右从上到下的顺序对输入的正定对称矩阵A执行Cholesky分解计算,直至最后一个元素ann分解计算完毕,并得到上三角矩阵R;最后通过AXI接口统一将所述上三角矩阵R输出并写回所述DDR存储器保存。
进一步地,所述运算优化模块在将除法运算转化为乘法运算的具体操作为:
对于除以对角线元素rii的运算操作,先求出rii的倒数,即1/rii,从而将原本的除法运算转化为与1/rii的相乘运算。
进一步地,对Cholesky分解公式中的减法运算转化为加法运算,除法运算转化为乘法运算的转化前后的公式为:
转化前:
转化后:
其中,a11、a1j、aii、aij均为正定对称矩阵A中的元素,r11、r1j、rii、rki、rkj、rij均为上三角矩阵R中的元素。
进一步地,所述对角线元素计算模块将对角线元素计算电路输出的1/rii,i=1,2…n传输给其余n-1组的非对角线元素计算电路,并采用分时复用各组内已有的乘法器电路资源,与1/rii相乘实现除法功能。
进一步地,涉及正定对称矩阵A的元素aij,无论是单个元素a11或a1j,j=2,3…n,还是、/>,i=2,3…n,j= i+1,…n,均统一采用累加器进行实现,保持计算电路资源一致性。
进一步地,所述对角线元素计算电路中的平方根计算器和被除数固定为1的除法器均采用纯组合逻辑电路实现,不需要时钟信号驱动,组合逻辑电路中输入到输出的传播延迟预先通过时序约束进行设置,保证预设延时之后得到稳定输出。
进一步地,对输入的正定对称矩阵A执行Cholesky分解计算过程中,所述对角线元素计算电路与非对角线元素计算电路并发同步执行,对角线元素计算电路中的累加器最终结果输出的同一时刻,各非对角线元素计算电路的累加器最终结果也同步输出,此时,各非对角线元素计算电路等待对角线元素计算电路传递而来的1/rii稳定输出,即,经过预设延迟之后,立即启动与1/rii的乘法计算。
进一步地,对于输入的正定对称矩阵A的第1行元素:
在对角线元素计算电路中,所述对角线元素计算模块从第1块RAM读取a11,经复用器传输给累加器,然后经平方根计算器输出上三角矩阵R的第一个对角线元素r11,并将其写入到第1块RAM的第1行位置,即替换输入元素a11,并进一步通过所述被除数固定为1的除法器对r11执行倒数运算,输出1/r11的结果并传递给其余的n-1组非对角线元素计算电路;
在n-1个所述非对角线元素计算电路中,所述非对角线元素计算模块分别从第2到第n块RAM中读取a12、a13…a1n,且分别经各自计算电路的复用器三传递给相应的累加器,各累加器的输出经复用器一作为乘法器的一项输入,分别与主对角线元素计算电路传来的1/r11经复用器二,在各自的乘法器中进行相乘,此时的计算结果走旁路器,完成除法运算,输出结果r12、r13…r1n经各自的解复用器输出,并同步写入到第2到第n块RAM的第1行,即替换原有的a12、a13…a1n
对于输入的正定对称矩阵A的第2行元素:
所述对角线元素计算模块从第2块RAM中读取r12,将其传输给对角线元素计算电路的乘法器,输出结果 经过单精度浮点数符号位取反电路,得到/>,再经复用器输入累加器;同时所述非对角线元素计算模块从第2~n块RAM中并行读取r12, r13…r1n,其中r12输入非对角线元素计算电路的复用器二,然后作为乘法器的一项输入;r13…r1n分别输入各自非对角线元素计算电路的复用器一,然后作为乘法器的另一项输入;同时,非对角线元素计算电路的乘法器输出/>,均经过各自的单精度浮点数符号位取反电路,得到/>,并经各自的解复用器传输给复用器三,送入各自的累加器;
在下一时钟节拍,所述对角线元素计算模块从第2块RAM读取a22,将其依次传输给对角线元素计算电路的复用器、累加器,作为累加器的1项输入,实现;同时所述非对角线元素计算电路从第3~n块RAM中并行读取a23…a2n,分别传输给n-2组非对角线元素计算电路各自的复用器三,复用器三再将其传入累加器,作为各自的累加器的1项输入,分别实现/>的累加运算功能,/>;经复用器一,送给乘法器,作为乘法器的一项输入;当对角线元素计算电路经平方根计算器输出第2个对角线元素r22,所述对角线元素计算模块将其写入第2块RAM的第2行位置即替换输入元素a22,进一步由被除数固定为1的除法器对r22执行倒数运算,输出1/r22的结果,并传递给其余的n-2组非对角线元素计算电路的复用器二,然后再作为乘法器的另一项输入,完成,计算结果走旁路器,再经解复用器同步写入到第3到第n块RAM的第2行,即替换原有的a23…a2n
对于输入的正定对称矩阵A的第3行元素:
所述对角线元素计算模块从第3块RAM读取R矩阵的第1行第3列元素r13,将其传输给对角线元素计算电路的乘法器,输出结果经过单精度浮点数符号位取反电路,得到/>,再经复用器输入累加器;同时n-3个所述非对角线元素计算模块从第3~n块RAM并行读取R矩阵的第1行第3列至第n列元素r13,r14…r1n,其中,r13输入非对角线元素计算电路的复用器二,然后作为乘法器的一项输入;r14…r1n输入非对角线元素计算电路的复用器一,然后作为乘法器的另一项输入;同时,非对角线元素计算电路的乘法器输出/>,均经过各自的单精度浮点数符号位取反电路,得到/>,经解复用器传输给复用器三,送入各自的累加器;
紧邻下一时钟节拍,所述对角线元素计算模块读取第3块RAM中的第2行元素r23,将其传输给对角线元素计算电路的乘法器,输出结果经过单精度浮点数符号位取反电路,得到/>,再经复用器输入累加器;同时,所述非对角线元素计算模块并行读取r23, r24…r2n,r23输入非对角线元素计算电路的复用器二,然后作为乘法器的一项输入;r24…r2n输入非对角线元素计算电路的复用器一,然后作为乘法器的另一项输入;同时,非对角线元素计算电路的乘法器输出/>,均经过各自的单精度浮点数符号位取反电路,得到,经解复用器传输给复用器三,送入各自的累加器;
紧接着,在下一时钟节拍,所述对角线元素计算模块从第3块RAM读取a33,将其依次传输给对角线元素计算电路的复用器、累加器,作为累加器的1项输入,实现累加运算功能;同时所述非对角线元素计算电路从第3~n块RAM中并行读取a34…a3n,分别传输给n-3组非对角线元素计算电路各自的复用器三,复用器三再将其传入累加器,作为各自的累加器的1项输入,分别实现/>累加运算功能;,经复用器一,送去乘法器,作为乘法器的一项输入;当对角线元素计算电路经平方根计算器输出第3个对角线元素r33,将其写入到第3块RAM的第3行位置即替换输入元素a33,进一步由被除数固定为1的除法器对对r33,执行倒数计算,得到1/r33的结果,并传递给其余的n-3组非对角线元素计算电路的复用器二,作为乘法器的另一项输入,完成/>;计算结果走旁路器,再经解复用器同步写入到第4到第n块RAM的第3行,即替换原有的a34…a3n
对于输入的正定对称矩阵A的第4行至第n行的上三角元素,以此类推,对角线元素计算电路和非对角线元素计算电路的累加项逐行增多,真正使用到的非对角线元素计算电路逐行减少,最终计算输出上三角矩阵R的第4行至第n行的结果rij,并替换原有A的上三角部分所对应的存储空间的数值。
进一步地,所述正定对称矩阵A的数据类型为符合IEEE754标准的单精度浮点数。
进一步地,所述分布式RAM的深度为n、位宽为32比特。
本发明的有益效果如下:
本发明通过对Cholesky分解公式的转换处理,采取改变单精度浮点数的符号位,使得减法操作变为加法计算,并进一步地使用累加器进行实现,此外涉及矩阵A元素aij的操作,均采用累加器电路进行实现,使得计算形式统一,不需要针对不同行或列元素情况分别设计不同的电路,每组计算电路仅需一个累加器代替减法器和累加器的硬件资源开销。对于除法运算,仅在对角线元素计算电路占用1个被除数固定为1的除法器,其余n-1组非对角线元素计算电路共享该除法器输出,并采用乘法运算来替代除法功能,进一步地分时复用各组非对角线元素计算电路已有的乘法器硬件资源,可以节省n-1个除法器硬件资源开销。由于对角线元素计算是间歇性的计算,平方根计算器和除法计算器创新性地采用纯组合逻辑,而不是时序逻辑,即不用时钟信号驱动,可以达到节省硬件逻辑资源开销并能降低延迟。上三角矩阵R复用输入对称正定矩阵A的存储空间,可以降低FPGA内部RAM存储资源占用。各组非对角线元素计算电路与对角线元素计算电路并行同步计算,使得并行计算效率得到显著提升。在基于FPGA实现Cholesky分解方面,本发明可以适应各种尺寸矩阵的Cholesky分解任务,整体上可以显著减少FPGA硬件资源的开销,并能明显提升整体并行计算效率,以及提高计算的实时性能。
附图说明
图1为Cholesky分解计算电路架构图。
图2为n行×n列Cholesky分解前后输入、输出存储示意图;其中(a)为输入矩阵的存储示意图,(b)为输出矩阵存储示意图。
图3为第1行Cholesky分解过程示意图。
图4为第2行Cholesky分解过程示意图。
图5为第3行Cholesky分解过程示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先给出技术术语解释:
(1)FPGA:Field Programmable Gate Array 现场可编程门阵列
(2)LUTRAM:Look-Up-Table RAM,FPGA内部基于查找表方式的分布式RAM
(3)DDR SDRAM:Double Data Rate Synchronous Dynamic Random AccessMemory,DDR外部存储。
如图1所示,本发明的一种基于FPGA的Cholesky分解计算加速系统,包括DDR存储器、AXI接口、基于FPGA实现的主体电路;所述基于FPGA实现的主体电路包括n块分布式RAM、n-1个非对角线元素计算电路和1个对角线元素计算电路。
其中,非对角线元素计算电路包括乘法器、累加器、复用器一、复用器二、复用器三、解复用器、旁路器、单精度浮点数符号位取反电路。对角线元素计算电路包括乘法器、累加器、复用器、平方根计算器、被除数固定为1的除法器、单精度浮点数符号位取反电路。
系统还包括运算优化模块、对角线元素计算模块和非对角线元素计算模块;其中,运算优化模块通过所述AXI接口将n行×n列的正定对称矩阵A从外部DDR存储器并行写入FPGA内部的分布式RAM,每1列对应1块RAM,共n块RAM;并对Cholesky分解公式中的减法运算转化为加法运算,除法运算转化为乘法运算。优化前后的公式如下:
优化前:
优化后:
其中,a11、a1j、aii、aij均为正定对称矩阵A中的元素,r11、r1j、rii、rki、rkj、rij均为上三角矩阵R中的元素。
对角线元素计算模块和非对角线元素计算模块按照从左到右从上到下的顺序对输入的正定对称矩阵A执行Cholesky分解计算,直至最后一个元素ann分解计算完毕,并得到上三角矩阵R;最后通过AXI接口统一将上三角矩阵R输出并写回DDR存储器保存。
对角线元素计算模块将对角线元素计算电路输出的1/rii,i=1,2…n传输给其余n-1组的非对角线元素计算电路,并采用分时复用各组内已有的乘法器电路资源,与1/rii相乘实现除法功能。
涉及正定对称矩阵A的元素aij,无论是单个元素a11或a1j,j=2,3…n,还是、/>,i=2,3…n,j= i+1,…n,均统一采用累加器进行实现,保持计算电路资源一致性。
对角线元素计算电路中的平方根计算器和被除数固定为1的除法器均采用纯组合逻辑电路实现,不需要时钟信号驱动,组合逻辑电路中输入到输出的传播延迟预先通过时序约束进行设置,保证预设延时之后得到稳定输出。
对输入的正定对称矩阵A执行Cholesky分解计算过程中,所述对角线元素计算电路与非对角线元素计算电路并发同步执行,对角线元素计算电路中的累加器最终结果输出的同一时刻,各非对角线元素计算电路的累加器最终结果也同步输出,此时,各非对角线元素计算电路等待对角线元素计算电路传递而来的1/rii稳定输出,即,经过预设延迟之后,立即启动与1/rii的乘法计算。
本实施例以尺寸为64行×64列对称正定实数矩阵为例,采用IEEE754标准的单精度浮点数格式,每个列向量的元素占用32比特,选用Xilinx公司提供的VC707开发板进行硬件电路设计,FPGA型号是XC7VX485T-2FFG1761C,多达8175Kb的LUTRAM存储资源,每块LUTRAM可以实现深度为64位宽为1比特的RAM。对于64行×64列的单精度浮点矩阵A,只需32×64=2048块LUTRAM即可,占用不到整块FPGA的1.57%分布式RAM存储,输出上三角矩阵R为64行×64列,与输入矩阵A复用共享2048块LUTRAM。基于FPGA最终实现的电路主体由2048块LUTRAM、64个浮点乘法器、64个浮点累加器以及1个平方根计算器和1个浮点除法器组成,工作时钟频率为200MHz,AXI接口位宽32比特,外部DDR SDRAM型号为Micron公司的MT8JTF12864HZ-1G6G1。
该实施例中,对Cholesky分解过程如下:
步骤1:对Cholesky分解公式:
(1)
执行转换处理:对于公式(1)中出现的减法,通过改变减数项的符号位即对减数位取反操作,减法操作转化为加法计算;对于公式中出现的除以对角线元素rii的运算操作,先求出该分母的倒数即1/rii,从而将公式中原本的除法运算转化为与1/rii的相乘运算;转化后的公式如下:
(2)
公式(2)中对角线元素计算电路输出的1/rii,i=1,2…64传输给其余63组的非对角线元素计算电路,与1/rii相乘实现除法的功能,通过采用分时复用各组内已有的乘法器电路资源来实现。
另外,公式(6)中涉及矩阵A元素aij的操作,即无论是单个元素a11或a1j,j=2,3…64,、/>,i=2,3…n,j= i+1,…n,统一采用累加器电路进行输出,实现计算电路资源一致性。
步骤2:经步骤1公式转换处理后,实施例中的主体电路可以归为两类:一是对角线元素的计算电路,除了乘累加运算外,还涉及平方根计算和1/rii除法电路,因此单独设置1组硬件电路资源进行实现;另一类是非对角线元素的计算电路,仅涉及乘法和加法运算,由63组的乘法器、累加器、复用器一、复用器二、复用器三、解复用器、旁路器、单精度浮点数符号位取反电路组成,分别进行实现。
需要注意的是,对角线元素计算电路中的平方根计算器和被除数固定为1的除法器电路均采用纯组合逻辑电路实现,不需要时钟信号驱动,组合逻辑电路中输入到输出的传播延迟预先通过时序约束进行设置,保证预设延时之后得到稳定输出,在XC7VX485T-2FFG1761C上测试发现,组合逻辑最大路径延时为29ns,因此第6个时钟周期时刻即可稳定输出。
步骤3:通过AXI接口将64行×64列的正定对称矩阵A,从外部DDR存储器写到FPGA内部分布式RAM,共计需要2048块LUTRAM存储输入的正定对称矩阵A,根据列数目分为64组,每组由32块LUTRAM组成,深度为64。随着Cholesky分解的进行,原本用于存储输入矩阵A释放出的存储空间,即右上角部分可以用于输出结果上三角矩阵R的存储,如图2所示,图2中的(a)是原始输入的存储,n=64,每列由32块LUTRAM组成,图2中的(b)是Cholesky分解后上三角矩阵R的存储。
步骤4:按照从左至右从上到下的顺序对输入矩阵A执行如下Cholesky分解计算:
步骤4.1:对于输入的正定对称矩阵A的第1行元素:
对角线元素计算模块从第1块LUTRAM读取a11,经复用器传输给累加器,然后经平方根计算器输出上三角矩阵R的第一个对角线元素r11,并将其写入到第1块LUTRAM的第1行位置,即替换输入元素a11,并进一步通过所述被除数固定为1的除法器对r11执行倒数运算,输出1/r11的结果并传递给其余的n-1组非对角线元素计算电路。
在63个非对角线元素计算电路中,非对角线元素计算模块分别从第2到第n块LUTRAM中读取a12、a13…a1n,且分别经各自计算电路的复用器三传递给相应的累加器,各累加器的输出经复用器一作为乘法器的一项输入,分别与主对角线元素计算电路传来的1/r11经复用器二,在各自的乘法器中进行相乘,此时的计算结果走旁路器,完成除法运算,输出结果r12、r13…r1,64经各自的解复用器输出,并同步写入到第2到第n块LUTRAM的第1行,即替换原有的a12、a13…a1,64,如图3所示。
步骤4.2:如图4所示,对于输入矩阵A的第2行,对角线元素计算模块从第2块LUTRAM中读取r12,将其传输给对角线元素计算电路的乘法器,输出结果经过单精度浮点数符号位取反电路,得到/>,再经复用器输入累加器;同时非对角线元素计算模块从第2~64块RAM中并行读取r12, r13…r1,64,其中r12输入非对角线元素计算电路的复用器二,然后作为乘法器的一项输入;r13…r1,64分别输入各自非对角线元素计算电路的复用器一,然后作为乘法器的另一项输入;同时,非对角线元素计算电路的乘法器输出/>,均经过各自的单精度浮点数符号位取反电路,得到/>,并经各自的解复用器传输给复用器三,送入各自的累加器;
在下一时钟节拍,对角线元素计算模块从第2块LUTRAM读取a22,将其依次传输给对角线元素计算电路的复用器、累加器,作为累加器的1项输入,实现;同时非对角线元素计算电路从第3~64块LUTRAM中并行读取a23…a2,64,分别传输给62组非对角线元素计算电路各自的复用器三,复用器三再将其传入累加器,作为各自的累加器的1项输入,分别实现/>的累加运算功能,/>;经复用器一,送给乘法器,作为乘法器的一项输入;当对角线元素计算电路经平方根计算器输出第2个对角线元素r22,对角线元素计算模块将其写入第2块LUTRAM的第2行位置即替换输入元素a22,进一步由被除数固定为1的除法器对r22执行倒数运算,输出1/r22的结果,并传递给其余的62组非对角线元素计算电路的复用器二,然后再作为乘法器的另一项输入,完成,计算结果走旁路器,再经解复用器同步写入到第3到第64块LUTRAM的第2行,即替换原有的a23…a2,64
步骤4.3:如图5所示,对于输入的正定对称矩阵A的第3行元素:
对角线元素计算模块从第3块LUTRAM读取R矩阵的第1行第3列元素r13,将其传输给对角线元素计算电路的乘法器,输出结果经过单精度浮点数符号位取反电路,得到/>,再经复用器输入累加器;同时61个非对角线元素计算模块从第3~64块LUTRAM并行读取R矩阵的第1行第3列至第n列元素r13,r14…r1,64,其中,r13输入非对角线元素计算电路的复用器二,然后作为乘法器的一项输入;r14…r1,64输入非对角线元素计算电路的复用器一,然后作为乘法器的另一项输入;同时,非对角线元素计算电路的乘法器输出/>,均经过各自的单精度浮点数符号位取反电路,得到/>,经解复用器传输给复用器三,送入各自的累加器;
紧邻下一时钟节拍,对角线元素计算模块读取第3块LUTRAM中的第2行元素r23,将其传输给对角线元素计算电路的乘法器,输出结果经过单精度浮点数符号位取反电路,得到/>,再经复用器输入累加器;同时,所述非对角线元素计算模块并行读取r23, r24…r2,64,r23输入非对角线元素计算电路的复用器二,然后作为乘法器的一项输入;r24…r2,64输入非对角线元素计算电路的复用器一,然后作为乘法器的另一项输入;同时,非对角线元素计算电路的乘法器输出/>,均经过各自的单精度浮点数符号位取反电路,得到/>,经解复用器传输给复用器三,送入各自的累加器。
紧接着,在下一时钟节拍,对角线元素计算模块从第3块RAM读取a33,将其依次传输给对角线元素计算电路的复用器、累加器,作为累加器的1项输入,实现累加运算功能;同时非对角线元素计算电路从第3~64块LUTRAM中并行读取a34…a3,64,分别传输给61组非对角线元素计算电路各自的复用器三,复用器三再将其传入累加器,作为各自的累加器的1项输入,分别实现/>累加运算功能;,经复用器一,送去乘法器,作为乘法器的一项输入;当对角线元素计算电路经平方根计算器输出第3个对角线元素r33,将其写入到第3块LUTRAM的第3行位置即替换输入元素a33,进一步由被除数固定为1的除法器对对r33,执行倒数计算,得到1/ r33的结果,并传递给其余的n-3组非对角线元素计算电路的复用器二,作为乘法器的另一项输入,完成/>;计算结果走旁路器,再经解复用器同步写入到第4到第64块LUTRAM的第3行,即替换原有的a34…a3,64
步骤4.4:对于输入的正定对称矩阵A的第4行至第64行的上三角元素,以此类推,对角线元素计算电路和非对角线元素计算电路的累加项逐行增多,真正使用到的非对角线元素计算电路逐行减少,最终计算输出上三角矩阵R的第4行至第64行的结果rij,并替换原有A的上三角部分所对应的存储空间的数值。
在整个步骤4中,对角线元素计算电路与其余非对角线元素计算是并发同步执行的,对角线元素计算电路中的累加器最终结果输出的同一时刻,各非对角线元素计算电路的累加器最终结果也同步输出,此时各非对角线元素计算电路等待6个时钟周期即30ns,此时对角线元素计算电路传递而来的1/rii稳定输出,可以立即启动与1/rii的乘法计算。
步骤5:通过AXI接口统一将步骤4中得到的上三角矩阵R写回外部DDR保存。
通过本发明实施例可以发现,对于对称正定矩阵Cholesky分解,通过采取Cholesky分解公式的转化操作,对于减法运算,减数项的符号位执行取反操作,采用加法器代替,并进一步地使用累加器进行实现;对于除法运算,仅在对角线元素计算电路占用1个被除数固定为1的除法器,其余非对角线元素计算电路共享该除法器的输出,并采用乘法运算来替代除法功能,进一步地分时复用各组非对角线元素计算电路已有的乘法器硬件资源,可以明显节省除法器硬件资源开销。通过计算形式统一的优化处理,只需设计对角线元素计算电路和非对角线元素计算电路,而不需要针对不同行或列元素情况分别设计不同的电路。各组非对角线元素计算电路与对角线元素计算电路并行同步计算,使得并行计算效率得到显著提升。进一步地,由于对角线元素计算是间歇性的计算,平方根计算器和除法计算器创新性地采用纯组合逻辑,而不是时序逻辑即不用时钟信号驱动,可以达到节省硬件逻辑资源开销并能降低延迟。上三角矩阵R复用输入对称正定矩阵A的存储空间,可以降低FPGA内部RAM存储资源占用。因此,本发明提出的基于FPGA的Cholesky分解计算加速系统,可以显著降低FPGA硬件资源的开销,整体并行计算效率的明显提升和整体延迟的降低,从而提高计算的实时性。
本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。

Claims (10)

1.一种基于FPGA的Cholesky分解计算加速系统,其特征在于,该系统包括DDR存储器、AXI接口、基于FPGA实现的主体电路;所述基于FPGA实现的主体电路包括n块分布式RAM、n-1个非对角线元素计算电路和1个对角线元素计算电路;
所述非对角线元素计算电路包括乘法器、累加器、复用器一、复用器二、复用器三、解复用器、旁路器、单精度浮点数符号位取反电路;
所述对角线元素计算电路包括乘法器、累加器、复用器、平方根计算器、被除数固定为1的除法器、单精度浮点数符号位取反电路;
该系统还包括运算优化模块、对角线元素计算模块和非对角线元素计算模块;
所述运算优化模块通过所述AXI接口将n行×n列的正定对称矩阵A从外部DDR存储器并行写入FPGA内部的分布式RAM,每1列对应1块RAM,共n块RAM;并对Cholesky分解公式中的减法运算转化为加法运算,除法运算转化为乘法运算;
所述对角线元素计算模块和非对角线元素计算模块按照从左到右从上到下的顺序对输入的正定对称矩阵A执行Cholesky分解计算,直至最后一个元素ann分解计算完毕,并得到上三角矩阵R;最后通过AXI接口统一将所述上三角矩阵R输出并写回所述DDR存储器保存。
2.根据权利要求1所述的基于FPGA的Cholesky分解计算加速系统,其特征在于,所述运算优化模块在将除法运算转化为乘法运算的具体操作为:
对于除以对角线元素rii的运算操作,先求出rii的倒数,即1/rii,从而将原本的除法运算转化为与1/rii的相乘运算。
3.根据权利要求2所述的基于FPGA的Cholesky分解计算加速系统,其特征在于,对Cholesky分解公式中的减法运算转化为加法运算,除法运算转化为乘法运算的转化前后的公式为:
转化前:
转化后:
其中,a11、a1j、aii、aij均为正定对称矩阵A中的元素,r11、r1j、rii、rki、rkj、rij均为上三角矩阵R中的元素
4.根据权利要求1所述的基于FPGA的Cholesky分解计算加速系统,其特征在于,所述对角线元素计算模块将对角线元素计算电路输出的1/rii,i=1,2…n传输给其余n-1组的非对角线元素计算电路,并采用分时复用各组内已有的乘法器电路资源,与1/rii相乘实现除法功能。
5.根据权利要求3所述的基于FPGA的Cholesky分解计算加速系统,其特征在于,涉及正定对称矩阵A的元素aij,无论是单个元素a11或a1j,j=2,3…n,还是、/>,i=2,3…n,j= i+1,…n,均统一采用累加器进行实现,保持计算电路资源一致性。
6.根据权利要求3所述的基于FPGA的Cholesky分解计算加速系统,其特征在于,所述对角线元素计算电路中的平方根计算器和被除数固定为1的除法器均采用纯组合逻辑电路实现,不需要时钟信号驱动,组合逻辑电路中输入到输出的传播延迟预先通过时序约束进行设置,保证预设延时之后得到稳定输出。
7.根据权利要求6所述的基于FPGA的Cholesky分解计算加速系统,其特征在于,对输入的正定对称矩阵A执行Cholesky分解计算过程中,所述对角线元素计算电路与非对角线元素计算电路并发同步执行,对角线元素计算电路中的累加器最终结果输出的同一时刻,各非对角线元素计算电路的累加器最终结果也同步输出,此时,各非对角线元素计算电路等待对角线元素计算电路传递而来的1/rii稳定输出,即,经过预设延迟之后,立即启动与1/rii的乘法计算。
8.根据权利要求1所述的基于FPGA的Cholesky分解计算加速系统,其特征在于,
对于输入的正定对称矩阵A的第1行元素:
在对角线元素计算电路中,所述对角线元素计算模块从第1块RAM读取a11,经复用器传输给累加器,然后经平方根计算器输出上三角矩阵R的第一个对角线元素r11,并将其写入到第1块RAM的第1行位置,即替换输入元素a11,并进一步通过所述被除数固定为1的除法器对r11执行倒数运算,输出1/r11的结果并传递给其余的n-1组非对角线元素计算电路;
在n-1个所述非对角线元素计算电路中,所述非对角线元素计算模块分别从第2到第n块RAM中读取a12、a13…a1n,且分别经各自计算电路的复用器三传递给相应的累加器,各累加器的输出经复用器一作为乘法器的一项输入,分别与主对角线元素计算电路传来的1/r11经复用器二,在各自的乘法器中进行相乘,此时的计算结果走旁路器,完成除法运算,输出结果r12、r13…r1n经各自的解复用器输出,并同步写入到第2到第n块RAM的第1行,即替换原有的a12、a13…a1n
对于输入的正定对称矩阵A的第2行元素:
所述对角线元素计算模块从第2块RAM中读取r12,将其传输给对角线元素计算电路的乘法器,输出结果经过单精度浮点数符号位取反电路,得到/>,再经复用器输入累加器;同时所述非对角线元素计算模块从第2~n块RAM中并行读取r12,r13…r1n,其中r12输入非对角线元素计算电路的复用器二,然后作为乘法器的一项输入;r13…r1n分别输入各自非对角线元素计算电路的复用器一,然后作为乘法器的另一项输入;同时,非对角线元素计算电路的乘法器输出/>,均经过各自的单精度浮点数符号位取反电路,得到,并经各自的解复用器传输给复用器三,送入各自的累加器;
在下一时钟节拍,所述对角线元素计算模块从第2块RAM读取a22,将其依次传输给对角线元素计算电路的复用器、累加器,作为累加器的1项输入,实现;同时所述非对角线元素计算电路从第3~n块RAM中并行读取a23…a2n,分别传输给n-2组非对角线元素计算电路各自的复用器三,复用器三再将其传入累加器,作为各自的累加器的1项输入,分别实现/>的累加运算功能,/>;经复用器一,送给乘法器,作为乘法器的一项输入;当对角线元素计算电路经平方根计算器输出第2个对角线元素r22,所述对角线元素计算模块将其写入第2块RAM的第2行位置即替换输入元素a22,进一步由被除数固定为1的除法器对r22执行倒数运算,输出1/r22的结果,并传递给其余的n-2组非对角线元素计算电路的复用器二,然后再作为乘法器的另一项输入,完成,计算结果走旁路器,再经解复用器同步写入到第3到第n块RAM的第2行,即替换原有的a23…a2n
对于输入的正定对称矩阵A的第3行元素:
所述对角线元素计算模块从第3块RAM读取R矩阵的第1行第3列元素r13,将其传输给对角线元素计算电路的乘法器,输出结果经过单精度浮点数符号位取反电路,得到/>,再经复用器输入累加器;同时n-3个所述非对角线元素计算模块从第3~n块RAM并行读取R矩阵的第1行第3列至第n列元素r13,r14…r1n,其中,r13输入非对角线元素计算电路的复用器二,然后作为乘法器的一项输入;r14…r1n输入非对角线元素计算电路的复用器一,然后作为乘法器的另一项输入;同时,非对角线元素计算电路的乘法器输出/>,均经过各自的单精度浮点数符号位取反电路,得到/>,经解复用器传输给复用器三,送入各自的累加器;
紧邻下一时钟节拍,所述对角线元素计算模块读取第3块RAM中的第2行元素r23,将其传输给对角线元素计算电路的乘法器,输出结果经过单精度浮点数符号位取反电路,得到,再经复用器输入累加器;同时,所述非对角线元素计算模块并行读取r23, r24…r2n,r23输入非对角线元素计算电路的复用器二,然后作为乘法器的一项输入;r24…r2n输入非对角线元素计算电路的复用器一,然后作为乘法器的另一项输入;同时,非对角线元素计算电路的乘法器输出/>,均经过各自的单精度浮点数符号位取反电路,得到,经解复用器传输给复用器三,送入各自的累加器;
紧接着,在下一时钟节拍,所述对角线元素计算模块从第3块RAM读取a33,将其依次传输给对角线元素计算电路的复用器、累加器,作为累加器的1项输入,实现累加运算功能;同时所述非对角线元素计算电路从第3~n块RAM中并行读取a34…a3n,分别传输给n-3组非对角线元素计算电路各自的复用器三,复用器三再将其传入累加器,作为各自的累加器的1项输入,分别实现/>累加运算功能;,经复用器一,送去乘法器,作为乘法器的一项输入;当对角线元素计算电路经平方根计算器输出第3个对角线元素r33,将其写入到第3块RAM的第3行位置即替换输入元素a33,进一步由被除数固定为1的除法器对对r33,执行倒数计算,得到1/r33的结果,并传递给其余的n-3组非对角线元素计算电路的复用器二,作为乘法器的另一项输入,完成/>;计算结果走旁路器,再经解复用器同步写入到第4到第n块RAM的第3行,即替换原有的a34…a3n
对于输入的正定对称矩阵A的第4行至第n行的上三角元素,以此类推,对角线元素计算电路和非对角线元素计算电路的累加项逐行增多,真正使用到的非对角线元素计算电路逐行减少,最终计算输出上三角矩阵R的第4行至第n行的结果rij,并替换原有A的上三角部分所对应的存储空间的数值。
9.根据权利要求1所述的基于FPGA的Cholesky分解计算加速系统,其特征在于,所述正定对称矩阵A的数据类型为符合IEEE754标准的单精度浮点数。
10.根据权利要求1所述的基于FPGA的Cholesky分解计算加速系统,其特征在于,所述分布式RAM的深度为n、位宽为32比特。
CN202310960973.9A 2023-08-02 2023-08-02 一种基于FPGA的Cholesky分解计算加速系统 Active CN116662730B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310960973.9A CN116662730B (zh) 2023-08-02 2023-08-02 一种基于FPGA的Cholesky分解计算加速系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310960973.9A CN116662730B (zh) 2023-08-02 2023-08-02 一种基于FPGA的Cholesky分解计算加速系统

Publications (2)

Publication Number Publication Date
CN116662730A true CN116662730A (zh) 2023-08-29
CN116662730B CN116662730B (zh) 2023-10-20

Family

ID=87710186

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310960973.9A Active CN116662730B (zh) 2023-08-02 2023-08-02 一种基于FPGA的Cholesky分解计算加速系统

Country Status (1)

Country Link
CN (1) CN116662730B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129420A (zh) * 2011-03-07 2011-07-20 哈尔滨工业大学 基于Cholesky分解解决最小二乘问题的FPGA实现装置
US20120078988A1 (en) * 2010-09-24 2012-03-29 Lockheed Martin Corporation Modified gram-schmidt core implemented in a single field programmable gate array architecture
US8775496B1 (en) * 2011-07-29 2014-07-08 Xilinx, Inc. Circuits and methods for calculating a cholesky decomposition of a matrix
CN103927290A (zh) * 2014-04-18 2014-07-16 南京大学 一种任意阶下三角复矩阵求逆运算方法
CN105701068A (zh) * 2016-02-19 2016-06-22 南京大学 基于分时复用技术的cholesky矩阵求逆系统
CN108733627A (zh) * 2018-04-30 2018-11-02 南京大学 一种正定矩阵Cholesky分解的FPGA实现方法
CN110162742A (zh) * 2019-03-31 2019-08-23 西南电子技术研究所(中国电子科技集团公司第十研究所) 实数矩阵求逆的浮点运算电路实现方法
CN111723336A (zh) * 2020-06-01 2020-09-29 南京大学 一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统
CN112035795A (zh) * 2020-09-07 2020-12-04 哈尔滨工业大学 Cholesky分解算法运算级流水线硬件加速方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120078988A1 (en) * 2010-09-24 2012-03-29 Lockheed Martin Corporation Modified gram-schmidt core implemented in a single field programmable gate array architecture
CN102129420A (zh) * 2011-03-07 2011-07-20 哈尔滨工业大学 基于Cholesky分解解决最小二乘问题的FPGA实现装置
US8775496B1 (en) * 2011-07-29 2014-07-08 Xilinx, Inc. Circuits and methods for calculating a cholesky decomposition of a matrix
CN103927290A (zh) * 2014-04-18 2014-07-16 南京大学 一种任意阶下三角复矩阵求逆运算方法
CN105701068A (zh) * 2016-02-19 2016-06-22 南京大学 基于分时复用技术的cholesky矩阵求逆系统
CN108733627A (zh) * 2018-04-30 2018-11-02 南京大学 一种正定矩阵Cholesky分解的FPGA实现方法
CN110162742A (zh) * 2019-03-31 2019-08-23 西南电子技术研究所(中国电子科技集团公司第十研究所) 实数矩阵求逆的浮点运算电路实现方法
CN111723336A (zh) * 2020-06-01 2020-09-29 南京大学 一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统
CN112035795A (zh) * 2020-09-07 2020-12-04 哈尔滨工业大学 Cholesky分解算法运算级流水线硬件加速方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
DEPENG YANG等: "Compressed sensing and Cholesky decomposition on FPGAs and GPUs", 《PARALLEL COMPUTING》 *
周金强;凤继锋;: "基于FPGA的复数矩阵求逆设计", 现代计算机, no. 15 *
朱鹏等: "基于浮点数的Cholesky分解FPGA实现", 《计算机与数字工程》, vol. 51, no. 4 *
胡铁乔;张毛毛;李阳波;: "可配置Cholesky分解矩阵求逆的FPGA实现", 中国民航大学学报, no. 04 *

Also Published As

Publication number Publication date
CN116662730B (zh) 2023-10-20

Similar Documents

Publication Publication Date Title
US20220365753A1 (en) Accelerated mathematical engine
CN111459877B (zh) 基于FPGA加速的Winograd YOLOv2目标检测模型方法
CN111414994B (zh) 一种基于FPGA的Yolov3网络计算加速系统及其加速方法
CN110765709B (zh) 一种基于fpga的基2-2快速傅里叶变换硬件设计方法
CN116522058A (zh) 可重新配置的矩阵乘法器系统和方法
CN102799563B (zh) 一种可重构计算阵列及构建方法
US9489342B2 (en) Systems, methods, and computer program products for performing mathematical operations
JP3228927B2 (ja) プロセッサエレメント、プロセッシングユニット、プロセッサ、及びその演算処理方法
CN111353126A (zh) 分块矩阵乘法运算系统
CN109284824B (zh) 一种基于可重构技术的用于加速卷积和池化运算的装置
CN107341133B (zh) 基于任意维数矩阵lu分解的可重构计算结构的调度方法
US20210065328A1 (en) System and methods for computing 2-d convolutions and cross-correlations
CN112596701B (zh) 基于单边雅克比奇异值分解的fpga加速实现方法
CN110162742B (zh) 实数矩阵求逆的浮点运算电路实现方法
EP4318275A1 (en) Matrix multiplier and method for controlling matrix multiplier
CN110851779A (zh) 用于稀疏矩阵运算的脉动阵列架构
CN116450217A (zh) 一种多功能定点乘法和乘累加运算装置及方法
WO2022205197A1 (zh) 一种矩阵乘法器、矩阵计算方法及相关设备
CN116662730B (zh) 一种基于FPGA的Cholesky分解计算加速系统
Nedjah et al. Massively parallel modular exponentiation method and its implementation in software and hardware for high-performance cryptographic systems
CN116719499A (zh) 一种应用于5g最小二乘定位的自适应伪逆计算方法
CN114047903A (zh) 一种应用在数据流驱动的可重构阵列的混合精度运算单元
Bhattacharya et al. Design and Analysis of a Hardware Accelerator with FPU-Based Runge-Kutta Solvers
Kernhof et al. A CMOS floating-point processing chip for verified exact vector arithmetic
Wu et al. A fine-grained pipelined implementation of the LINPACK benchmark on FPGAs

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