CN114186187A - 一种基于线性阵列的可配置浮点矩阵乘实现方法及装置 - Google Patents
一种基于线性阵列的可配置浮点矩阵乘实现方法及装置 Download PDFInfo
- Publication number
- CN114186187A CN114186187A CN202111284552.6A CN202111284552A CN114186187A CN 114186187 A CN114186187 A CN 114186187A CN 202111284552 A CN202111284552 A CN 202111284552A CN 114186187 A CN114186187 A CN 114186187A
- Authority
- CN
- China
- Prior art keywords
- matrix
- data
- data stream
- sub
- calculation
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06E—OPTICAL COMPUTING DEVICES; COMPUTING DEVICES USING OTHER RADIATIONS WITH SIMILAR PROPERTIES
- G06E3/00—Devices not provided for in group G06E1/00, e.g. for processing analogue or hybrid data
- G06E3/008—Matrix or vector computation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Nonlinear Science (AREA)
- Logic Circuits (AREA)
Abstract
本发明公开了一种基于线性阵列的可配置浮点矩阵乘实现方法及装置,该方法包括:步骤S1:根据矩阵规模确定分块大小及参与计算的阵列维数;步骤S2:根据子块大小和阵列维数,初始化片上RAM块数据为零;步骤S3:RAM通道提前加载部分数据流A,在数据通道送入数据流B的同时开始同步计算;步骤S4:将计算结果返回片外存储器,重复上述步骤S2‑S4,直到所有子块计算完成。该装置用来实施上述方法。本发明具有能够实现任意规模矩阵乘计算、存储需求低、计算效率和数据精度高等优点。
Description
技术领域
本发明主要涉及到高性能计算机技术领域,特指一种基于线性阵列的可配置浮点矩阵乘实现方法及装置。
背景技术
浮点矩阵乘在系统控制、数字信号处理、图像处理以及深度学习领域有着广泛的应用,其计算效率直接影响着整个系统的性能。当前,研究加速矩阵乘的平台多种多样,比如CPU、GPGPU、FPGA以及软件库等。
FPGA(Field-programmable gate arrays,现场可编程门阵列)适合作为加速矩阵乘运算的协处理平台,已经有很多研究表明FPGA在持续性能方面都优于通用处理器、GPGPU等平台,并且在实时性可靠性要求比较高的场合以及小型的嵌入式系统中得到应用。
随着工艺的发展以及集成电路技术的进步,FPGA包含越来越多的逻辑资源,特别是内嵌大量的DSPs和BRAM块,这为矩阵计算加速的性能提升奠定了基础条件。
就单FPGA而言,主流设计主要集中于开发结构的并行运算能力,例如在中国专利“一种基于FPGA的脉动结构矩阵乘法器及其实现方法”中(公开号CN105589677A)公开了一种脉动阵列结构计算矩阵乘,通过以空间换时间的方法,能够获得很高数据吞吐率和计算速度,但对于N×N的矩阵乘运算,脉动结构需要N2个PE单元,在同一时钟周期需要2N个输入和N个输出,因此脉动结构对PE数量和带宽需求很高,其能处理的矩阵规模就非常有限。
目前,大多数已有结构的计算能力有限,只能处理小规模矩阵或定点数据,故而期望设计一种能处理大规模数据和高精度数据的矩阵计算装置。此外,如果使用固定的结构,则扩展性不好,也很难处理任意大小的矩阵计算,因此,考虑结构的灵活性是必要且有意义的。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种能够实现任意规模矩阵乘计算、存储需求低、计算效率和数据精度高的基于线性阵列的可配置浮点矩阵乘实现方法及装置。
为解决上述技术问题,本发明采用以下技术方案:
一种基于线性阵列的可配置浮点矩阵乘实现方法,其包括:
步骤S1:根据矩阵规模确定分块大小及参与计算的阵列维数;
步骤S2:根据子块大小和阵列维数,初始化片上RAM块数据为零;
步骤S3:RAM通道提前加载部分数据流A,在数据通道送入数据流B的同时开始同步计算;
步骤S4:将计算结果返回片外存储器,重复上述步骤S2-S4,直到所有子块计算完成。
作为本发明方法的进一步改进:所述矩阵乘是指矩阵A和矩阵B的乘积,即实现CM×N=AM×K×BK×N。
作为本发明方法的进一步改进:所述数据流包含数据流A、数据流B、数据流C;其中,数据流C的初始值均为零,最终值为矩阵乘计算结果。
作为本发明方法的进一步改进:所述步骤S1中,在进行矩阵分块时,将大规模矩阵乘分解为若干个子矩阵块相乘;分块后的形式为 其中子矩阵A的大小为Sp×K,子矩阵B的大小为K×Sq,子矩阵C的大小为Sp×Sq,Sp表示子矩阵A的行数,同时也表示线性阵列单元数目,Sq表示子矩阵B的列数,同时也表示片上RAM的深度,K表示子矩阵A的列数和子矩阵B的行数,同时也表示迭代次数。
本发明进一步提供一种基于线性阵列的可配置浮点矩阵乘实现装置,其包括:
数据传输控制模块,包括外循环数据传输控制逻辑单元和内循环数据传输逻辑单元,所述外循环数据传输控制逻辑单元用来负责子矩阵块的传输控制,所述内循环数据传输逻辑用来负责输入数据流A、数据流B和数据流C以及计算结果的传输控制;
矩阵乘计算单元模块,包括一组线性阵列单元、存储通道和数据通道。
作为本发明装置的进一步改进:所述一组线性阵列单元包含Sp个完全相同的基本计算单元PE,每个基本计算单元PE包含一个浮点计算部件、两个寄存器、一个FIFO和一个简单的双端口RAM;所述浮点运算部件用于完成乘累加运算。
作为本发明装置的进一步改进:所述存储通道用于流入数据流A和数据流C,所述数据通道用于流入数据流B;其中,数据流A、数据流B在基本计算单元PE中以寄存器方式存储,并在存储数据流A的寄存器前设置一个起缓冲作用的FIFO,数据流C存储在片上RAM当中。
作为本发明装置的进一步改进:每个基本计算单元PE负责计算子矩阵块C的一行元素,在确定子矩阵块大小后,直接在片上初始化子矩阵C为零矩阵,即把分配给子矩阵块C的RAM块的数据置零。
作为本发明装置的进一步改进:执行数据流优化机制:数据流B每个时钟周期内向参与计算的基本计算单元PE广播一个数据,数据流A每间隔Sq次时间加载子矩阵A的一列分发到各个PE中;那么:
将数据搬移时间隐藏于计算时间当中;子矩阵A的每个数据进入计算单元后重复利用Sq次,在读取数据流B的同时,利用剩余的带宽把下一次计算所需的数据流A提前加载到片上,并通过合理选择子矩阵B的深度,将计算时间和数据访存时间重叠;
浮点运算部件延迟隐藏于计算时间当中;通过设置子矩阵B的深度大于浮点运算部件的延迟值,将浮点运算部件的延迟隐藏在计算当中,中间不会产生停顿。
作为本发明装置的进一步改进:所述数据流B采用两级FIFO结构,所述两级FIFO结构包含第一级FIFO和第二级FIFO,第一级FIFO驱动所有的二级FIFO,每个二级FIFO驱动若干个PE。
与现有技术相比,本发明的优点在于:
1、本发明的基于线性阵列的可配置浮点矩阵乘实现方法及装置,原理简单、易实现、能够实现任意规模矩阵乘计算,且存储需求低,计算效率以及数据精度高。
2、本发明的基于线性阵列的可配置浮点矩阵乘实现方法及装置,在线性阵列中使用两级FIFO形式,能够通过使能控制参与计算的的维数,增强矩阵计算装置的可伸缩性,在结合分块矩阵思想后,可处理任意大小的浮点矩阵乘计算,相比于已有的一些计算装置。本发明能够有效解决处理矩阵规模有限及数据精度小的问题,提高了矩阵乘的使用范围,且能够满足IEEE-754标准浮点矩阵乘计算需求。
3、本发明的基于线性阵列的可配置浮点矩阵乘实现方法及装置,在基本计算单元PE中,以寄存器方式存储数据流A和数据流B,数据流C直接在片上RAM中初始化,能够极大地降低存储需求和带宽需求,并且通过优化数据流,将数据搬移时间和浮点部件延迟均隐藏于计算时间当中,具有高计算效率的的优势。
附图说明
图1是本发明方法的流程示意图。
图2是本发明装置的拓扑结构原理示意图。
图3是本发明在具体应用实例中矩阵乘运算过程的示意图。
图4是本发明在具体应用实例中输入输出组织的示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图1所示,本发明的一种基于线性阵列的可配置浮点矩阵乘实现方法,其步骤包括:
步骤S1:根据矩阵规模确定分块大小及参与计算的阵列维数;
步骤S2:根据子块大小和阵列维数,初始化片上RAM块数据为零;
步骤S3:RAM通道提前加载部分数据流A,在数据通道送入数据流B的同时开始同步计算;
步骤S4:将计算结果返回片外存储器,重复步骤S2-S4,直到所有子块计算完成。
在具体应用实例中,本发明的矩阵乘是指矩阵A和矩阵B的乘积,即实现CM×N=AM×K×BK×N;
在具体应用实例中,本发明的数据流包含数据流A、数据流B、数据流C;其中,数据流C的初始值均为零,最终值为矩阵乘计算结果。
在具体应用实例中,在所述步骤S1中,在进行矩阵分块时,将大规模矩阵乘分解为若干个子矩阵块相乘;分块后的形式为其中子矩阵A的大小为Sp×K,子矩阵B的大小为K×Sq,子矩阵C的大小为Sp×Sq,Sp表示子矩阵A的行数,同时也表示线性阵列单元数目,Sq表示子矩阵B的列数,同时也表示片上RAM的深度,K表示子矩阵A的列数和子矩阵B的行数,同时也表示迭代次数。
如图2所示,本发明进一步提供一种基于线性阵列的可配置浮点矩阵乘实现装置,包括:
数据传输控制模块,包括外循环数据传输控制逻辑单元和内循环数据传输逻辑单元,所述外循环数据传输控制逻辑单元用来负责子矩阵块的传输控制,所述内循环数据传输逻辑用来负责输入数据流A、数据流B和数据流C以及计算结果的传输控制;
矩阵乘计算单元模块,包括一组线性阵列单元、存储通道和数据通道。
在具体应用实例中,所述一组线性阵列单元包含Sp个完全相同的基本计算单元PE,每个基本计算单元PE包含一个浮点计算部件、两个寄存器、一个FIFO和一个简单的双端口RAM;所述浮点运算部件是符合IEEE 754标准的IP核,用于完成乘累加运算;通过灵活设置所述浮点运算部件中使用DSPs的数量,可减少本发明对逻辑资源的消耗,以便将更多的逻辑资源保留给其他功能模块,从而提升整体的性能;所述浮点运算部件做乘累加运算时会有一定的延迟值,此延迟值可以根据需求在IP核内设定。
在具体应用实例中,所述存储通道用于流入数据流A和数据流C,所述数据通道用于流入数据流B;其中,数据流A、数据流B在PE中以寄存器方式存储,并在存储数据流A的寄存器前设置一个起缓冲作用的FIFO,数据流C存储在片上RAM当中。
本实施例将分块矩阵思想与可变长度线性阵列相结合,可实现任意规模的高效率矩阵乘计算,相比于传统的计算装置,能够有效解决处理矩阵规模有限及数据精度小的问题,提高了矩阵乘的使用范围,且能够满足IEEE-754标准浮点矩阵乘计算需求。
通过采用本发明的上述基于线性阵列的可配置浮点矩阵乘实现装置,其具体计算过程为:预先加载子矩阵A的一列元素和子矩阵C所有元素到每个PE中,随后子矩阵B的元素按行依次流入线性阵列,通过流水线的方式和重写机制完成c[CNT]=a×b+c运算,中间结果保存在局部存储器中,经过K次迭代,将计算结果子矩阵C搬移到片外存储器,接着进行下一个子矩阵的计算,如此反复。
如图3和图4所示,每个基本计算单元PE负责计算子矩阵块C的一行元素,在确定子矩阵块大小后,直接在片上初始化子矩阵C为零矩阵,即把分配给子矩阵块C的RAM块的数据置零;
矩阵乘运算具体计算过程为:初始化子矩阵块C,预先加载子矩阵A的一列元素,随后子矩阵B的元素按行依次流入线性阵列,通过流水线的方式和重写机制完成c[CNT]=a×b+c运算,中间结果保存在局部存储器中,经过K次迭代,将计算结果子矩阵C搬移到片外存储器,重新初始化子矩阵C为零矩阵,接着进行下一个子矩阵的计算,如此反复。
作为较佳的实施例,进一步本发明的上述装置通过执行数据流优化机制,实现了两种时间隐藏,有效的避免了计算单元的等待时间和数据冒险,保证了计算的高效率。所述数据流优化机制为:数据流B每个时钟周期内向参与计算的基本计算单元PE广播一个数据,数据流A每间隔Sq次时间加载子矩阵A的一列(Sp个数据)分发到各个PE中;那么:
第一个时间隐藏为:将数据搬移时间隐藏于计算时间当中。子矩阵A的每个数据进入计算单元后重复利用Sq次,在读取数据流B的同时,利用剩余的带宽把下一次计算所需的数据流A提前加载到片上,并通过合理选择子矩阵B的深度(Sq),将计算时间和数据访存时间重叠;
第二个时间隐藏为:浮点运算部件延迟隐藏于计算时间当中。通过设置子矩阵B的深度(Sq)大于浮点运算部件的延迟值,将浮点运算部件的延迟隐藏在计算当中,中间不会产生停顿。
本实施例在基本计算单元PE中,以寄存器方式存储数据流A和数据流B,数据流C直接在片上RAM中初始化,能够极大地降低存储需求和带宽需求,并且通过优化数据流,将数据搬移时间和浮点部件延迟均隐藏于计算时间当中,具有高计算效率的的优势。
在具体应用实例中,在确定子矩阵块大小后,直接在片上初始化子矩阵C为零矩阵,即把分配给子矩阵块C的RAM块的数据置零。在子矩阵块计算完成后,将最终结果搬移到外部存储器中,并重新初始化子矩阵C为零矩阵,如此反复。
在具体应用实例中,数据流B采用两级FIFO结构,用以增强结构的灵活性;所述两级FIFO结构包含第一级FIFO和第二级FIFO,第一级FIFO驱动所有的二级FIFO,每个二级FIFO驱动若干个PE;使用两级FIFO的形式减少了平均扇出,优化了逻辑,能对所有数据流进行统一控制,保证了设计的整体性能。
在具体应用实例中,当矩阵A的行数大于PE数量时,本发明使用分块思想和一维阵列;当矩阵A的行数小于PE数量且大于PE数量的一半时,本发明通过第二级FIFO的使能控制参与计算的PE数目;当矩阵A的行数小于PE数量的一半时,本发明通过第二级FIFO选择接收一级FIFO的数据,形成两维阵列并行工作的效果。
在具体应用实例中,当基本计算单元PE的数量增多时,所述数据流B的传输控制逻辑还包括三级FIFO结构。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (10)
1.一种基于线性阵列的可配置浮点矩阵乘实现方法,其特征在于,包括:
步骤S1:根据矩阵规模确定分块大小及参与计算的阵列维数;
步骤S2:根据子块大小和阵列维数,初始化片上RAM块数据为零;
步骤S3:RAM通道提前加载部分数据流A,在数据通道送入数据流B的同时开始同步计算;
步骤S4:将计算结果返回片外存储器,重复上述步骤S2-S4,直到所有子块计算完成。
2.根据权利要求1所述的基于线性阵列的可配置浮点矩阵乘实现方法,其特征在于,所述矩阵乘是指矩阵A和矩阵B的乘积,即实现CM×N=AM×K×BK×N。
3.根据权利要求1所述的基于线性阵列的可配置浮点矩阵乘实现方法,其特征在于,所述数据流包含数据流A、数据流B、数据流C;其中,数据流C的初始值均为零,最终值为矩阵乘计算结果。
5.一种基于线性阵列的可配置浮点矩阵乘实现装置,其特征在于,包括:
数据传输控制模块,包括外循环数据传输控制逻辑单元和内循环数据传输逻辑单元,所述外循环数据传输控制逻辑单元用来负责子矩阵块的传输控制,所述内循环数据传输逻辑用来负责输入数据流A、数据流B和数据流C以及计算结果的传输控制;
矩阵乘计算单元模块,包括一组线性阵列单元、存储通道和数据通道。
6.根据权利要求5所述的基于线性阵列的可配置浮点矩阵乘实现装置,其特征在于,所述一组线性阵列单元包含Sp个完全相同的基本计算单元PE,每个基本计算单元PE包含一个浮点计算部件、两个寄存器、一个FIFO和一个简单的双端口RAM;所述浮点运算部件用于完成乘累加运算。
7.根据权利要求5所述的基于线性阵列的可配置浮点矩阵乘实现装置,其特征在于,所述存储通道用于流入数据流A和数据流C,所述数据通道用于流入数据流B;其中,数据流A、数据流B在基本计算单元PE中以寄存器方式存储,并在存储数据流A的寄存器前设置一个起缓冲作用的FIFO,数据流C存储在片上RAM当中。
8.根据权利要求6-7中任意一项所述的基于线性阵列的可配置浮点矩阵乘实现装置,其特征在于,每个基本计算单元PE负责计算子矩阵块C的一行元素,在确定子矩阵块大小后,直接在片上初始化子矩阵C为零矩阵,即把分配给子矩阵块C的RAM块的数据置零。
9.根据权利要求5-7中任意一项所述的基于线性阵列的可配置浮点矩阵乘实现装置,其特征在于,执行数据流优化机制:数据流B每个时钟周期内向参与计算的基本计算单元PE广播一个数据,数据流A每间隔Sq次时间加载子矩阵A的一列分发到各个PE中;那么:
将数据搬移时间隐藏于计算时间当中;子矩阵A的每个数据进入计算单元后重复利用Sq次,在读取数据流B的同时,利用剩余的带宽把下一次计算所需的数据流A提前加载到片上,并通过合理选择子矩阵B的深度,将计算时间和数据访存时间重叠;
浮点运算部件延迟隐藏于计算时间当中;通过设置子矩阵B的深度大于浮点运算部件的延迟值,将浮点运算部件的延迟隐藏在计算当中,中间不会产生停顿。
10.根据权利要求5-7中任意一项所述的基于线性阵列的可配置浮点矩阵乘实现装置,其特征在于,所述数据流B采用两级FIFO结构,所述两级FIFO结构包含第一级FIFO和第二级FIFO,第一级FIFO驱动所有的二级FIFO,每个二级FIFO驱动若干个PE。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111284552.6A CN114186187A (zh) | 2021-11-01 | 2021-11-01 | 一种基于线性阵列的可配置浮点矩阵乘实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111284552.6A CN114186187A (zh) | 2021-11-01 | 2021-11-01 | 一种基于线性阵列的可配置浮点矩阵乘实现方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114186187A true CN114186187A (zh) | 2022-03-15 |
Family
ID=80601779
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111284552.6A Pending CN114186187A (zh) | 2021-11-01 | 2021-11-01 | 一种基于线性阵列的可配置浮点矩阵乘实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114186187A (zh) |
-
2021
- 2021-11-01 CN CN202111284552.6A patent/CN114186187A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107704916B (zh) | 一种基于fpga实现rnn神经网络的硬件加速器及方法 | |
US10698657B2 (en) | Hardware accelerator for compressed RNN on FPGA | |
US10810484B2 (en) | Hardware accelerator for compressed GRU on FPGA | |
JP5408913B2 (ja) | 高速かつ効率的な行列乗算ハードウェアモジュール | |
EP3513357A1 (en) | Tensor operations and acceleration | |
CN103294446B (zh) | 一种定点乘累加器 | |
CN105589677A (zh) | 一种基于fpga的脉动结构矩阵乘法器及其实现方法 | |
CN107341133B (zh) | 基于任意维数矩阵lu分解的可重构计算结构的调度方法 | |
US10810696B2 (en) | System and methods for computing 2-D convolutions and cross-correlations | |
CN111199017B (zh) | 多功能厄密对称矩阵求逆ip核的实现方法 | |
CN115310037A (zh) | 矩阵乘法计算单元、加速单元、计算系统和相关方法 | |
Chang et al. | Efficient hardware accelerators for the computation of Tchebichef moments | |
Sun et al. | A floating-point accumulator for FPGA-based high performance computing applications | |
US10725741B2 (en) | Digital circuit with compressed carry | |
Thomas | Design and simulation of radix-8 booth encoder multiplier for signed and unsigned numbers | |
Odugu et al. | Implementation of low power and memory efficient 2D FIR filter architecture | |
CN114186187A (zh) | 一种基于线性阵列的可配置浮点矩阵乘实现方法及装置 | |
Hong et al. | Design and implementation of a high-speed matrix multiplier based on word-width decomposition | |
Kumar et al. | Analysis of low power, area and high speed multipliers for DSP applications | |
CN112992248A (zh) | 一种基于fifo的可变长循环移位寄存器的pe计算单元结构 | |
Kalbasi et al. | A classified and comparative study of 2-D convolvers | |
Amira et al. | Design of efficient architectures for discrete orthogonal transforms using bit level systolic structures | |
CN114218524A (zh) | 一种大规模多运算浮点矩阵计算加速实现方法及装置 | |
Sonawane et al. | Systolic architecture for integer point matrix multiplication using FPGA | |
Nithyashree et al. | Design of an efficient vedic binary squaring circuit |
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 |