CN108710505A - 一种基于fpga的可扩展稀疏矩阵向量乘处理器 - Google Patents
一种基于fpga的可扩展稀疏矩阵向量乘处理器 Download PDFInfo
- Publication number
- CN108710505A CN108710505A CN201810480883.9A CN201810480883A CN108710505A CN 108710505 A CN108710505 A CN 108710505A CN 201810480883 A CN201810480883 A CN 201810480883A CN 108710505 A CN108710505 A CN 108710505A
- Authority
- CN
- China
- Prior art keywords
- sparse matrix
- processor
- vector
- multiplies
- computing
- 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
- 239000013598 vector Substances 0.000 title claims abstract description 48
- 238000001514 detection method Methods 0.000 claims abstract description 8
- 239000011159 matrix material Substances 0.000 claims description 25
- 230000009977 dual effect Effects 0.000 claims description 11
- 230000006835 compression Effects 0.000 claims description 4
- 238000007906 compression Methods 0.000 claims description 4
- 235000013399 edible fruits Nutrition 0.000 claims description 2
- 238000004364 calculation method Methods 0.000 abstract description 2
- 238000003491 array Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 238000000034 method Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供了一种基于FPGA的稀疏矩阵向量乘处理器,包括:预处理控制器模块,用于调度和冒险检测,使存储单元向运算单元阵列保持连续的数据流;运算模块,为多个计算单元组成计算单元阵列,通过单精度浮点乘法、加法器,实现单精度浮点稀疏矩阵向量乘运算;存储控制器模块,控制对片外DRAM中数据的读写。有益效果:所述处理器可以对存储带宽和运算资源进行扩展,有效提高了处理器的运算效率和通用性。
Description
技术领域
本发明属于FPGA技术及高性能计算领域,尤其涉及一种基于FPGA的稀疏矩阵向量乘硬件加速器。
背景技术
对于稀疏矩阵的运算出现在种类繁多的计算学科中,包括图像重建、电路与金融建模、工业工程、压缩感知和近几年非常热门的神经网络中。而在诸多涉及稀疏矩阵的运算中稀疏矩阵与向量之间的乘法运算在上述领域中使用最为频繁,其效率直接决定了整个处理器的运算效率。
目前,稀疏矩阵向量乘运算大都由CPU、GPU或者是CPU-GPU协同运算来完成,然而,能将稀疏矩阵高效存储所需的压缩格式和传统的计算结构并不匹配,导致了在CPU和GPU上对稀疏矩阵运算时的数据吞吐量要远远小于对稠密矩阵进行运算时的数据吞吐量。
近年来,随着集成电路产业发展的蒸蒸日上,使用FPGA对稀疏矩阵向量乘法运算进行加速的方案也受到广泛关注。FPGA有强大的浮点数运算能力、超大的片上存储以及可以为片外存储提供超大数据带宽的大量高速I/O引脚。同时,FPGA良好的灵活性也使得架构可以满足不同实际问题的需求。
发明内容
本发明的目的在于克服上述理论结果的不足,提供一种基于FPGA的可扩展稀疏矩阵向量乘处理器,具体由以下技术方案实现:
所述基于FPGA的可扩展稀疏矩阵向量乘处理器,包括:
预处理控制器模块,用于调度和冒险检测,使存储单元向运算单元阵列保持连续的数据流;
运算模块,为多个计算单元组成计算单元阵列,通过单精度浮点乘法、加法器,实现单精度浮点稀疏矩阵向量乘运算;
存储控制器模块,控制对片外DRAM中数据的读写。
所述稀疏矩阵向量乘处理器的进一步设计在于,存储控制器模块控制对DRAM中稀疏矩阵、输入向量、输出向量的读或写,并根据Valid信号进行数据保持。
所述稀疏矩阵向量乘处理器的进一步设计在于,稀疏矩阵以CSC压缩存储格式存储于DRAM中。
所述稀疏矩阵向量乘处理器的进一步设计在于,由预处理控制器模块对运算模块的双口RAM中同一地址的写入进行冒险检测,并控制Valid信号以规避冒险现象。
所述稀疏矩阵向量乘处理器的进一步设计在于,每个计算单元按照行向量对稀疏矩阵进行分割对输出向量的某一子集进行运算,最后将所有计算单元的得到的最终结果连接起来拼成最终的输出向量。
所述稀疏矩阵向量乘处理器的进一步设计在于,每个计算单元由调度控制器、一个单精度浮点乘法器、一个单精度浮点加法器以及一个双口RAM组成,乘法器和加法器用于对多组输入数据进行乘累加运算,运算的中间结果暂存于双口RAM中;调度控制器接收预处理控制器的调度信号并对双口RAM的读写地址和使能状态进行配置。
本发明的优点如下:
本发明提供的可扩展稀疏矩阵向量乘处理器,可以根据存储器的带宽和运算资源对计算单元的数量进行对应的扩展,并且可以同时对稀疏矩阵向量乘和稀疏矩阵矩阵乘进行高效运算。相比现有的稀疏矩阵向量乘运算方案,本运算器装置拥有更高的数据吞吐量、运算效率和更好的通用性。
附图说明
图1是可扩展稀疏矩阵向量乘处理器整体架构图。
图2是可扩展稀疏矩阵向量乘处理器计算单元内部结构示意图。
图3是可扩展稀疏矩阵向量乘处理器计算单元的运行流程图。
图4是可扩展稀疏矩阵向量乘处理器运行的时序图。
具体实施方法
下面结合附图对本发明进行详细说明。
本实施例中可扩展稀疏矩阵向量乘处理器中的稀疏矩阵采用CSC压缩存储格式,即使用三个不同的数组来描述稀疏矩阵中非零元素的位置。这三个数组分别是:按照从左上到右下的顺序存放所有非零元素值的data数组、记录每个非零元素对应行号的row数组以及记录每一列第一个非零元素在data数组中序号的ptr数组。图1表示了一个使用压缩存储格式存储的规模为4*5的稀疏矩阵。本实施例中可扩展稀疏矩阵向量乘处理器中的稀疏矩阵采用CSC压缩存储格式如下:
如图1,本实施例的可扩展稀疏矩阵向量乘处理器主要由预处理控制器、计算单元阵列、存储控制器组成。配置信息自预处理控制器模块输入,预处理控制器根据配置信息对计算单元阵列和存储控制器模块进行设置。接收到配置信息后,存储控制器读入外部数据并将数据依批次送入预处理控制器进行冒险检测,预处理控制器根据冒险检测的结果对存储控制器和计算单元阵列进行调度。最后输入数据经由计算单元阵列运算完成后将结果由存储控制器输出到片外DRAM中,整个过程为全流水的。
如图2,计算单元由调度控制器、一个单精度浮点乘法器、一个单精度浮点加法器和一个双口RAM组成。乘法器和加法器用于对多组输入数据进行乘累加运算,运算的中间结果暂存于双口RAM中。调度控制器接收预处理控制器的调度信号并对双口RAM的读写地址和使能状态进行配置。
计算单元的工作过程如图3所示,复位后计算单元处于空闲状态,当接收到预处理控制器给出的“start”信号后,计算单元对内部变量进行初始化,将存放中间结果的双口RAM清零。初始化完成后,乘法器计算稀疏矩阵A中的某一非零元素Aij和输入向量X中对应元素Xj的乘积,同时Block RAM读取Aij在稀疏矩阵中所处的行数i,并将该地址存储的数据送入加法器与之前乘法器中所得的运算结果相加,所得结果再存入Block RAM的原地址。计算单元还接收预处理控制器给出的“Valid”信号,当“Valid”信号拉低时,将暂停对Block RAM的读取操作,直到“Valid”信号重新被拉高。当所有计算完成后,计算单元将接收到来自预处理控制器的“end”信号,此时将Block RAM中储存的运算结果输出到DDR中的相应地址,同时计算单元恢复到空闲状态。
使用上述的稀疏矩阵进行向量乘运算的时序图如图4,假设输入向量X=[1,2,3,4,5]T,浮点乘法器和加法器的延时都为2个时钟周期,BlockRAM的读写延时为1个时钟周期。当运算进行到第2个CLK时,由于在相邻时钟周期内的部分乘3*1和1*2需要累加到同一个RAM地址中,因此会出现所谓的冒险现象。此时需要将Valid信号拉低两个时钟周期,同时保持Aij和Xj的值不变,以保证在继续运算前3*1的结果已经存入BlockRAM中。如果没有进行冒险检测,那么1*2的将会直接和RAM中最先保存的数据0相加,从而得到错误的结果。
本发明实现的可扩展稀疏矩阵向量乘法器装置可以进行浮点稀疏矩阵向量乘运算,也可以进行浮点稀疏矩阵矩阵乘运算。在对预处理控制器进行微小调整即可支持稀疏矩阵和稠密矩阵之间的乘法运算。相比于现有的稀疏矩阵向量乘法器中对存储的不规则随机读取,本装置对存储进行规律的连续数据流读取,拥有更好的通用性和更高的吞吐率。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (6)
1.一种基于FPGA的可扩展稀疏矩阵向量乘处理器,其特征在于,包括:
预处理控制器模块,用于调度和冒险检测,使存储单元向运算单元阵列保持连续的数据流;
运算模块,为多个计算单元组成计算单元阵列,通过单精度浮点乘法、加法器,实现单精度浮点稀疏矩阵向量乘运算;
存储控制器模块,控制对片外DRAM中数据的读写。
2.根据权利要求1所述的稀疏矩阵向量乘处理器,其特征在于,存储控制器模块控制对DRAM中稀疏矩阵、输入向量、输出向量的读或写,并根据Valid信号进行数据保持。
3.根据权利要求2所述的稀疏矩阵向量乘处理器,其特征在于,稀疏矩阵以CSC压缩存储格式存储于DRAM中。
4.根据权利要求1所述的稀疏矩阵向量乘处理器,其特征在于,由预处理控制器模块对运算模块的双口RAM中同一地址的写入进行冒险检测,并控制Valid信号以规避冒险现象。
5.根据权利要求1所述的稀疏矩阵向量乘处理器,其特征在于,每个计算单元按照行向量对稀疏矩阵进行分割对输出向量的某一子集进行运算,最后将所有计算单元的得到的最终结果连接起来拼成最终的输出向量。
6.根据权利要求5所述的稀疏矩阵向量乘处理器,其特征在于,每个计算单元由调度控制器、一个单精度浮点乘法器、一个单精度浮点加法器以及一个双口RAM组成,乘法器和加法器用于对多组输入数据进行乘累加运算,运算的中间结果暂存于双口RAM中;调度控制器接收预处理控制器的调度信号并对双口RAM的读写地址和使能状态进行配置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810480883.9A CN108710505A (zh) | 2018-05-18 | 2018-05-18 | 一种基于fpga的可扩展稀疏矩阵向量乘处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810480883.9A CN108710505A (zh) | 2018-05-18 | 2018-05-18 | 一种基于fpga的可扩展稀疏矩阵向量乘处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108710505A true CN108710505A (zh) | 2018-10-26 |
Family
ID=63869108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810480883.9A Pending CN108710505A (zh) | 2018-05-18 | 2018-05-18 | 一种基于fpga的可扩展稀疏矩阵向量乘处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108710505A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109245773A (zh) * | 2018-10-30 | 2019-01-18 | 南京大学 | 一种基于块循环稀疏矩阵神经网络的编解码方法 |
CN109828744A (zh) * | 2019-01-18 | 2019-05-31 | 东北师范大学 | 一种基于fpga的可配置浮点向量乘法ip核 |
CN110704360A (zh) * | 2019-09-29 | 2020-01-17 | 华中科技大学 | 一种基于异构fpga数据流的图计算优化方法 |
CN110851779A (zh) * | 2019-10-16 | 2020-02-28 | 北京航空航天大学 | 用于稀疏矩阵运算的脉动阵列架构 |
CN112149051A (zh) * | 2019-06-28 | 2020-12-29 | 爱思开海力士有限公司 | 执行向量-矩阵乘法的计算电路和包括其的半导体器件 |
CN113722668A (zh) * | 2021-07-22 | 2021-11-30 | 平头哥(上海)半导体技术有限公司 | 处理单元、相关装置和张量运算方法 |
CN117609677A (zh) * | 2023-12-08 | 2024-02-27 | 上海交通大学 | 一种稀疏矩阵乘法加速方法、fpga、计算系统及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020077789A1 (en) * | 2000-09-16 | 2002-06-20 | Hitachi, Ltd. | Method and apparatus for solving simultaneous linear equations |
CN104487941A (zh) * | 2012-07-11 | 2015-04-01 | Arm有限公司 | 在向量处理过程中控制处理数据元素的顺序 |
CN107229967A (zh) * | 2016-08-22 | 2017-10-03 | 北京深鉴智能科技有限公司 | 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
CN107704916A (zh) * | 2016-08-12 | 2018-02-16 | 北京深鉴科技有限公司 | 一种基于fpga实现rnn神经网络的硬件加速器及方法 |
-
2018
- 2018-05-18 CN CN201810480883.9A patent/CN108710505A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020077789A1 (en) * | 2000-09-16 | 2002-06-20 | Hitachi, Ltd. | Method and apparatus for solving simultaneous linear equations |
CN104487941A (zh) * | 2012-07-11 | 2015-04-01 | Arm有限公司 | 在向量处理过程中控制处理数据元素的顺序 |
CN107704916A (zh) * | 2016-08-12 | 2018-02-16 | 北京深鉴科技有限公司 | 一种基于fpga实现rnn神经网络的硬件加速器及方法 |
CN107229967A (zh) * | 2016-08-22 | 2017-10-03 | 北京深鉴智能科技有限公司 | 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109245773A (zh) * | 2018-10-30 | 2019-01-18 | 南京大学 | 一种基于块循环稀疏矩阵神经网络的编解码方法 |
CN109245773B (zh) * | 2018-10-30 | 2021-09-28 | 南京大学 | 一种基于块循环稀疏矩阵神经网络的编解码方法 |
CN109828744A (zh) * | 2019-01-18 | 2019-05-31 | 东北师范大学 | 一种基于fpga的可配置浮点向量乘法ip核 |
CN109828744B (zh) * | 2019-01-18 | 2020-09-08 | 东北师范大学 | 一种基于fpga的可配置浮点向量乘法ip核 |
CN112149051A (zh) * | 2019-06-28 | 2020-12-29 | 爱思开海力士有限公司 | 执行向量-矩阵乘法的计算电路和包括其的半导体器件 |
CN112149051B (zh) * | 2019-06-28 | 2024-03-26 | 爱思开海力士有限公司 | 执行向量-矩阵乘法的计算电路和包括其的半导体器件 |
CN110704360B (zh) * | 2019-09-29 | 2022-03-18 | 华中科技大学 | 一种基于异构fpga数据流的图计算优化方法 |
CN110704360A (zh) * | 2019-09-29 | 2020-01-17 | 华中科技大学 | 一种基于异构fpga数据流的图计算优化方法 |
CN110851779A (zh) * | 2019-10-16 | 2020-02-28 | 北京航空航天大学 | 用于稀疏矩阵运算的脉动阵列架构 |
CN110851779B (zh) * | 2019-10-16 | 2021-09-14 | 北京航空航天大学 | 用于稀疏矩阵运算的脉动阵列架构 |
CN113722668A (zh) * | 2021-07-22 | 2021-11-30 | 平头哥(上海)半导体技术有限公司 | 处理单元、相关装置和张量运算方法 |
CN113722668B (zh) * | 2021-07-22 | 2023-10-31 | 平头哥(上海)半导体技术有限公司 | 处理单元、相关装置和张量运算方法 |
CN117609677A (zh) * | 2023-12-08 | 2024-02-27 | 上海交通大学 | 一种稀疏矩阵乘法加速方法、fpga、计算系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108710505A (zh) | 一种基于fpga的可扩展稀疏矩阵向量乘处理器 | |
US11106606B2 (en) | Exploiting input data sparsity in neural network compute units | |
CN109992743B (zh) | 矩阵乘法器 | |
CN109543832B (zh) | 一种计算装置及板卡 | |
CN110415157B (zh) | 一种矩阵乘法的计算方法及装置 | |
JP5408913B2 (ja) | 高速かつ効率的な行列乗算ハードウェアモジュール | |
CN108090565A (zh) | 一种卷积神经网络并行化训练加速方法 | |
CN110097174A (zh) | 基于fpga和行输出优先的卷积神经网络实现方法、系统及装置 | |
CN102541774B (zh) | 多粒度并行存储系统与存储器 | |
CN100538886C (zh) | 多维数组在动态随机存取存储器上的快速读写方法和装置 | |
CN106990940A (zh) | 一种向量计算装置 | |
WO2020156508A1 (zh) | 基于具有运算阵列的芯片的运算方法、装置及芯片 | |
CN109146067A (zh) | 一种基于FPGA的Policy卷积神经网络加速器 | |
CN208766715U (zh) | 3*3卷积算法的加速电路 | |
CN102541749B (zh) | 多粒度并行存储系统 | |
CN103412284A (zh) | 基于dsp芯片的sar成像系统中矩阵转置方法 | |
CN108304347A (zh) | 一种快速傅里叶变换处理方法和装置 | |
CN116710912A (zh) | 一种矩阵乘法器及矩阵乘法器的控制方法 | |
CN113869507A (zh) | 一种基于脉动阵列的神经网络加速器卷积计算装置与方法 | |
CN105955896B (zh) | 一种可重构dbf算法硬件加速器及控制方法 | |
CN108762719B (zh) | 一种并行广义内积重构控制器 | |
CN104679670A (zh) | 一种面向fft和fir的共享数据缓存结构及管理方法 | |
Yun et al. | GraNDe: Near-data processing architecture with adaptive matrix mapping for graph convolutional networks | |
CN103699355A (zh) | 一种变阶流水串行乘累加器 | |
CN110085270A (zh) | 存储运算电路模块及处理器 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181026 |