CN100465876C - 基于单fpga的矩阵乘法器装置 - Google Patents
基于单fpga的矩阵乘法器装置 Download PDFInfo
- Publication number
- CN100465876C CN100465876C CNB2007100699548A CN200710069954A CN100465876C CN 100465876 C CN100465876 C CN 100465876C CN B2007100699548 A CNB2007100699548 A CN B2007100699548A CN 200710069954 A CN200710069954 A CN 200710069954A CN 100465876 C CN100465876 C CN 100465876C
- Authority
- CN
- China
- Prior art keywords
- matrix
- data
- multiplier
- calculating
- array
- 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.)
- Expired - Fee Related
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 87
- 238000007781 pre-processing Methods 0.000 claims abstract description 6
- 238000004364 calculation method Methods 0.000 claims description 19
- 238000000034 method Methods 0.000 claims description 10
- 238000007405 data analysis Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于单FPGA的矩阵乘法器装置,包括P2个计算单元PE,由P2个计算单元PE排列形成的P行×P列的PE阵列,数据输入输出接口和数据预处理单元,与以前的实现方案相比,本发明能够兼顾稠密矩阵乘法和稀疏矩阵乘法,并对稀疏矩阵乘法计算性能有所提升。本发明还公开了一种基于FPGA的矩阵乘法器装置。
Description
技术领域
本发明涉及FPGA技术及高性能计算技术领域,具体来说是一种基于FPGA的矩阵乘法器装置。
背景技术
矩阵乘法操作是科学计算中的一个基本操作,在过程控制、图像处理、数字信号处理等领域广泛存在,并且通常为计算过程中最为耗时的关键操作。矩阵乘法计算的时间复杂性较高,通常为O(N3),其计算性能直接影响到系统的整体性能。
以前的矩阵乘法器通常采用通用处理器或数字信号处理器(DigitalSignal Processor,DSP)实现。通用处理器和DSP具有技术较为成熟、实现工具完善、编程简单等优点,但由于其内部结构的限制,在进行计算时经常会出现缓存扑空(Cache Miss)等现象,影响系统计算性能。基于通用处理器和DSP技术的设计通常持续计算性能只能维持在其峰值计算性能的10%~33%,无法取得很高的计算性能。
近年来FPGA技术取得了飞速发展,已经从最初只能面向纯逻辑替代的应用转变为能够面向复杂的计算密集型应用。最新推出的FPGA器件中,不仅集成有丰富的可配置逻辑块资源(Configurable Logic Block,CLB),还包括大量面向计算密集应用的DSP单元、块状RAM(BlockRAM,BRAM)和用于高速串行通信的RocketIO GTP收发器单元。同时为方便FPGA的调试,各FPGA厂商还推出了片内逻辑分析测试工具(如Xilinx公司的ChipScope),在软硬件上保证了在FPGA上实现高性能计算的可行性。
目前在使用FPGA实现矩阵乘法计算方面已有一些成果,但均只能用于完成稠密矩阵乘法、稀疏矩阵与向量乘法以及稀疏矩阵与稀疏矩阵乘法中的一种,对于不同类型的乘法计算需要通过对FPGA芯片的重配置才能实现。而本发明可以兼顾稠密矩阵乘法和稀疏矩阵乘法计算,当被乘数矩阵或乘数矩阵中任意一个为稀疏矩阵时,均能够对系统的计算性能有所提升。
发明内容
本发明提供了一种可以兼顾稠密矩阵乘法和稀疏矩阵乘法计算的矩阵乘法器装置。
一种基于单FPGA的矩阵乘法器装置,包括:
P2个计算单元PE,用于对输入数据进行乘加计算操作;
由P2个计算单元PE排列形成的P行×P列的PE阵列,用于进行矩阵乘法计算;
数据输入输出接口,提供矩阵元素输入输出的接口,用于乘数矩阵和被乘数矩阵元素的输入以及结果矩阵元素的输出;
数据预处理单元,配置于PE阵列前,用于数据分析,通过对读入的矩阵元素值进行分析,避免稀疏矩阵中O元素块参与乘加计算,在兼顾稠密矩阵乘法计算的同时,提高了稀疏矩阵计算的性能。
所述的计算单元PE采用FPGA内部DSP单元实现。
所述的每个计算单元PE配置有一用于存储计算结果的存储单元。
所述的PE阵列采用块矩阵运算方法完成任意大小矩阵乘法计算,将结果矩阵划分为多个大小等于或小于P×P的子矩阵,通过对每个子矩阵的逐个计算,完成任意大小矩阵的乘法。
所述的矩阵乘法计算过程包括以下步骤:
步骤A,采用块矩阵运算方法,将结果矩阵划分为多个大小为P×P的子矩阵块,每次计算其中的一个块;
步骤B,在计算其中的一个块时,数据预处理模块分别按行和按列读入乘数矩阵P个元素和被乘数矩阵的P个元素;
步骤C,若读入的P个乘数矩阵元素全部为0或者P个被乘数矩阵元素全部为0,则直接进行后续数据的读取;
步骤D,否则将读入的数据送入PE阵列进行计算,然后再进行后续数据的读取;
步骤E,逐块计算结果矩阵直至所有矩阵元素计算完毕,输出计算结果。
附图说明
图1为本发明矩阵乘法器装置的内部结构示意框图;
图2为本发明PE阵列计算的有限状态机示意框图;
图3为本发明数据预处理模块工作的有限状态机示意框图;
图4为本发明矩阵乘法器计算过程的操作示意框图。
具体实施方式
如图1所示,一种基于单FPGA的矩阵乘法器装置,具体包括:
采用FPGA内部DSP单元在单个FPGA芯片内实现P2个计算单元PE(Processing Element)111,用于对输入数据进行乘加计算操作;
每个计算单元PE111配置有一个存储单元112,用于存储计算结果;
将P2个计算单元PE111排列为P×P的PE阵列110,用于进行矩阵乘法计算;
在PE阵列110前配置数据预处理模块120,用于对输入矩阵元素的值进行分析,以避免稀疏矩阵中的0元素块参与乘加计算。
PE阵列110的工作过程如图2所示,复位后乘法器处于空闲状态,当接收到“开始计算”的命令后,乘法器对内部变量进行初始化,将中间结果存储单元清零,并根据接收到的参数设置本次乘加计算的长度(即矩阵A的列数)。初始化完成后,矩阵乘法器便可以在每个工作周期内接收P个矩阵A的元素和P个矩阵B的元素进行乘加计算,直至完成P2个矩阵C的元素的计算。乘法器还配置有“终止计算”命令,在需要时可通过该命令强制终止乘法器的计算。在计算完成或被终止后,本次计算的结果将被写入乘法器的结果存储单元Cxy,同时乘法器回复到空闲状态。
数据预处理模块120的工作过程如图3所示,复位结束后模块首先处于空闲状态。当接收到“开始计算”命令时,模块根据输入的参数来初始化内部变量,如矩阵A的行数和列数、矩阵B的列数等。完成初始化后,预处理模块开始进行数据的读取与分析工作,并将需要计算的数据排入矩阵乘法器计算队列。完成所有数据的读取分析后,如果没有计算被跳过,预处理模块可以直接等待乘法器计算结束;如果有无效计算被跳过,会出现矩阵乘法器接收到的计算次数参数与实际需要的计算次数不同的情况,此时需要该预处理模块向乘法器发送“终止计算”命令强制结束乘法器的计算后,再进入等待计算结束状态。当乘法器计算完成后,预处理模块便回复到空闲状态。
整个矩阵乘法器装置的计算过程如图4所示,乘数矩阵和被乘数矩阵中的0元素块被数据预处理模块排除在计算队列之外,从而提高了稀疏矩阵乘法计算的性能。
Claims (5)
1.一种基于单FPGA的矩阵乘法器装置,其特征在于包括:
P2个计算单元PE(111),用于对输入数据进行乘加计算操作;
由P2个计算单元PE(111)排列形成的P行×P列的PE阵列(110),用于进行矩阵乘法计算;
数据输入输出接口,用于乘数矩阵和被乘数矩阵元素的输入以及结果矩阵元素的输出;
数据预处理单元(120),配置于PE阵列(110)前,用于数据分析,通过对读入的矩阵元素值进行分析,避免稀疏矩阵中O元素块参与乘加计算。
2.如权利要求1所述的矩阵乘法器装置,其特征在于:所述的计算单元PE(111)采用FPGA内部DSP单元实现。
3.如权利要求1所述的矩阵乘法器装置,其特征在于:每个所述的计算单元PE(111)配置有一用于存储计算结果的存储单元。
4.如权利要求1所述的矩阵乘法器装置,其特征在于:所述的PE阵列(110)采用块矩阵运算方法完成任意大小矩阵乘法计算。
5.如权利要求1所述的矩阵乘法器装置,其特征在于:矩阵乘法计算过程包括以下步骤:
步骤A,采用块矩阵运算方法,将结果矩阵划分为多个大小为P×P的子矩阵块,每次计算其中的一个块;
步骤B,在计算其中的一个块时,数据预处理模块分别按行和按列读入乘数矩阵P个元素和被乘数矩阵的P个元素;
步骤C,若读入的P个乘数矩阵元素全部为O或者P个被乘数矩阵元素全部为O,则直接进行后续数据的读取;
步骤D,否则将读入的数据送入PE阵列进行计算,然后再进行后续数据的读取;
步骤E,逐块计算结果矩阵直至所有矩阵元素计算完毕,输出计算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100699548A CN100465876C (zh) | 2007-07-12 | 2007-07-12 | 基于单fpga的矩阵乘法器装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100699548A CN100465876C (zh) | 2007-07-12 | 2007-07-12 | 基于单fpga的矩阵乘法器装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101086699A CN101086699A (zh) | 2007-12-12 |
CN100465876C true CN100465876C (zh) | 2009-03-04 |
Family
ID=38937676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100699548A Expired - Fee Related CN100465876C (zh) | 2007-07-12 | 2007-07-12 | 基于单fpga的矩阵乘法器装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100465876C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9558156B1 (en) | 2015-11-24 | 2017-01-31 | International Business Machines Corporation | Sparse matrix multiplication using a single field programmable gate array module |
KR20200098684A (ko) * | 2017-12-29 | 2020-08-20 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 행렬 곱셈기 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101847086B (zh) * | 2010-05-14 | 2012-10-10 | 清华大学 | 一种基于循环雅克比的实对称阵特征分解装置 |
CN102375721B (zh) * | 2010-08-23 | 2016-03-30 | 联想(北京)有限公司 | 一种矩阵乘法运算方法、图形处理器和电子设备 |
CN102043605B (zh) * | 2010-12-23 | 2012-10-24 | 龙芯中科技术有限公司 | 一种多媒体变换乘法器及其处理方法 |
CN102662623A (zh) * | 2012-04-28 | 2012-09-12 | 电子科技大学 | 基于单fpga的并行矩阵乘法器及其实现方法 |
KR102065672B1 (ko) * | 2018-03-27 | 2020-01-13 | 에스케이텔레콤 주식회사 | 합성곱 연산을 위한 장치 및 방법 |
CN110415157B (zh) * | 2018-04-26 | 2024-01-30 | 华为技术有限公司 | 一种矩阵乘法的计算方法及装置 |
CN109710213A (zh) * | 2018-12-25 | 2019-05-03 | 广东浪潮大数据研究有限公司 | 一种稀疏矩阵加速计算方法、装置、设备及其系统 |
CN109856959A (zh) * | 2019-02-28 | 2019-06-07 | 滨州学院 | 一种基于pid的直线电机控制方法及系统 |
CN111158636B (zh) * | 2019-12-03 | 2022-04-05 | 中国人民解放军战略支援部队信息工程大学 | 可重构计算结构及计算处理阵列的路由寻址方法、装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6243734B1 (en) * | 1998-10-30 | 2001-06-05 | Intel Corporation | Computer product and method for sparse matrices |
US20020138536A1 (en) * | 2001-02-05 | 2002-09-26 | Samsung Electronics Co., Ltd. | Time-division type matrix calculator |
CN1682214A (zh) * | 2003-03-07 | 2005-10-12 | 松下电器产业株式会社 | 矩阵运算装置 |
-
2007
- 2007-07-12 CN CNB2007100699548A patent/CN100465876C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6243734B1 (en) * | 1998-10-30 | 2001-06-05 | Intel Corporation | Computer product and method for sparse matrices |
US20020138536A1 (en) * | 2001-02-05 | 2002-09-26 | Samsung Electronics Co., Ltd. | Time-division type matrix calculator |
CN1682214A (zh) * | 2003-03-07 | 2005-10-12 | 松下电器产业株式会社 | 矩阵运算装置 |
Non-Patent Citations (6)
Title |
---|
On Improving the Performance of Sparse Matrix-VectorMultiplication. James B.White,III P.Sadayappan.IEEE. 1997 |
On Improving the Performance of Sparse Matrix-VectorMultiplication. James B.White,III P.Sadayappan.IEEE. 1997 * |
多处理机中矩阵乘法的算法研究. 唐俊奇.中国西部科技. 2007 |
多处理机中矩阵乘法的算法研究. 唐俊奇.中国西部科技. 2007 * |
稀疏矩阵乘法运算的并行算法. 蔡自兴,郑金华,朱珍民.湘潭大学自然科学学报,第22卷第1期. 2000 |
稀疏矩阵乘法运算的并行算法. 蔡自兴,郑金华,朱珍民.湘潭大学自然科学学报,第22卷第1期. 2000 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9558156B1 (en) | 2015-11-24 | 2017-01-31 | International Business Machines Corporation | Sparse matrix multiplication using a single field programmable gate array module |
US10685082B2 (en) | 2015-11-24 | 2020-06-16 | International Business Machines Corporation | Sparse matrix multiplication using a single field programmable gate array module |
KR20200098684A (ko) * | 2017-12-29 | 2020-08-20 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 행렬 곱셈기 |
KR102443546B1 (ko) | 2017-12-29 | 2022-09-15 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 행렬 곱셈기 |
KR20220129107A (ko) * | 2017-12-29 | 2022-09-22 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 행렬 곱셈기 |
KR102492477B1 (ko) | 2017-12-29 | 2023-01-30 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 행렬 곱셈기 |
US11934481B2 (en) | 2017-12-29 | 2024-03-19 | Huawei Technologies Co., Ltd. | Matrix multiplier |
Also Published As
Publication number | Publication date |
---|---|
CN101086699A (zh) | 2007-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100465876C (zh) | 基于单fpga的矩阵乘法器装置 | |
CN100449522C (zh) | 基于多fpga的矩阵乘法并行计算系统 | |
CN112214726B (zh) | 运算加速器 | |
JP6977239B2 (ja) | 行列乗算器 | |
CN108171317B (zh) | 一种基于soc的数据复用卷积神经网络加速器 | |
CN104899182B (zh) | 一种支持可变分块的矩阵乘加速方法 | |
US11200092B2 (en) | Convolutional computing accelerator, convolutional computing method, and computer-readable storage medium | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
CN111291323B (zh) | 一种基于脉动阵列的矩阵乘法处理器及其数据处理方法 | |
Jaiswal et al. | FPGA-based high-performance and scalable block LU decomposition architecture | |
WO2019201657A1 (en) | Accelerator and system for accelerating operations | |
Zhang et al. | A multiwindow partial buffering scheme for FPGA-based 2-D convolvers | |
US9483442B2 (en) | Matrix operation apparatus | |
CN108537331A (zh) | 一种基于异步逻辑的可重构卷积神经网络加速电路 | |
US20200026746A1 (en) | Matrix and Vector Multiplication Operation Method and Apparatus | |
CN105589677A (zh) | 一种基于fpga的脉动结构矩阵乘法器及其实现方法 | |
CN111767986A (zh) | 一种基于神经网络的运算方法及装置 | |
CN109710213A (zh) | 一种稀疏矩阵加速计算方法、装置、设备及其系统 | |
CN111768458A (zh) | 一种基于卷积神经网络的稀疏图像处理方法 | |
CN113168409A (zh) | 加速数据查询的集成电路和方法 | |
CN212112470U (zh) | 一种矩阵乘法计算电路 | |
CN111488051A (zh) | 基于cpu和fpga协同计算的云端深度神经网络优化方法 | |
US11194490B1 (en) | Data formatter for convolution | |
Cho et al. | FARNN: FPGA-GPU hybrid acceleration platform for recurrent neural networks | |
Wu et al. | High-performance architecture for the conjugate gradient solver on FPGAs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090304 Termination date: 20200712 |