本发明专利技术公开了一种基于单FPGA的矩阵乘法器装置,包括P↑[2]个计算单元PE,由P↑[2]个计算单元PE排列形成的P行×P列的PE阵列,数据输入输出接口和数据预处理单元,与以前的实现方案相比,本发明专利技术能够兼顾稠密矩阵乘法和稀疏矩阵乘法,并对稀疏矩阵乘法计算性能有所提升。本发明专利技术还公开了一种基于FPGA的矩阵乘法器装置。
【技术实现步骤摘要】
本专利技术涉及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阵列前,用于数据分析,通过对读入的矩阵元素值进行分析,避免稀疏矩阵中0元素块参与乘加计算,在兼顾稠密矩阵乘法计算的同时,提高了稀疏矩阵计算的性能。所述的计算单元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,用于对输入数据进行乘加计算操作;每个计算单元PE 111配置有一个存储单元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元素块被数据预处理模块排除在计算队列之外,从而提高了稀疏矩阵乘法计算的性能。权利要求1.一种基于单FPGA的矩阵乘法器装置,其特征在于包括P2个计算单元PE(111),用于对输入数据进行乘加计算操作;由P2个计算单元PE(111)排列形成的P行×P列的PE阵列(110),用于进行矩阵乘法计算;数据输入输出接口,用于乘数矩阵和被乘数矩阵元素的输入以及结果矩阵元素的输出;数据预处理单元(120),配置于PE阵列(110)前,用于数据分析,通过对读入的矩阵元素值进行分析,避免稀疏矩阵中0元素块参与乘加计算。2.如权利要求1所述的矩阵乘法器装置,其特征在于所述的计算单元PE(111)采用FPGA内部DSP单元实现。3.如权利要求1所述的矩阵乘法器装置,其特征在于所述的每个计算单元PE(111)配置有一用于存储计算结果的存储单元。4.如权利要求1所述的矩阵乘法器装置,其特征在于所述的PE阵列(110)采用块矩阵运算方法完成任意大小矩阵乘法计算。5.如权利要求1所述的矩阵乘法器装置,其特征在于矩阵乘法计算过程包括以下步骤步骤A,采用块矩阵运算方法,将结果矩阵划分为多个大小为P×P的子矩阵块,每次计算其中的一个块;步骤B,在计算其中的一个块时,数据预处理模块分别按行和按列读入乘数矩阵P个元素和被乘数矩阵的P个元素;步骤C,若读入的P个乘数矩阵元素全部为0或者P个被乘数矩阵元素全部为0,则直接进行后续数据的读取;步骤D,否则将读入的数据送入PE阵列进行计算,然后再进行后续数据的读取;步骤E,逐块计算结果矩阵直至所有矩阵元素计算完毕本文档来自技高网...
【技术保护点】
一种基于单FPGA的矩阵乘法器装置,其特征在于包括:P↑[2]个计算单元PE(111),用于对输入数据进行乘加计算操作;由P↑[2]个计算单元PE(111)排列形成的P行×P列的PE阵列(110),用于进行矩阵乘法计算; 数据输入输出接口,用于乘数矩阵和被乘数矩阵元素的输入以及结果矩阵元素的输出;数据预处理单元(120),配置于PE阵列(110)前,用于数据分析,通过对读入的矩阵元素值进行分析,避免稀疏矩阵中0元素块参与乘加计算。
【技术特征摘要】
【专利技术属性】
技术研发人员:陈耀武,田翔,
申请(专利权)人:浙江大学,
类型:发明
国别省市:86[中国|杭州]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。