基于多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的矩阵乘法并行计算系统,包括接入同一互联网络的主处理器和若干个FPGA处理单元。
所述的系统采用主从分布式结构。
所述的主处理器采用嵌入式处理器。
所述的主处理器包括数据发送模块、命令发送模块、响应接收模块、数据接收模块和互连网络控制器。
所述的FPGA处理单元包含有:
假定单FPGA内部可以实现p×q个PE(Processing Element,计算单元)单元,将其排列形成的p×q(p为行数,q为列数)的PE(ProcessingElement,计算单元)阵列(110),每个PE单元配有一个计算结果存储单元;
设于PE阵列前的数据预处理模块,用于对输入矩阵元素值进行分析,避免稀疏矩阵中0元素块参与乘加计算,提高稀疏矩阵乘法计算性能;
读FIFO、写FIFO,设于数据预处理模块与FPGA内部数据总线之间,用于提高PE阵列的计算时间与数据通信时间的重叠程度;
存储器控制器,用于扩展本地存储单元;
互连网络控制器,用于扩展互连网络接口;
控制逻辑单元,用于控制整个FPGA处理单元的数据流及互连网络协议栈的运行。
所述的计算单元PE采用FPGA内部DSP单元实现(包括V-II系列的18×18乘法器、V-4系列的DSP48单元和V-5系列的DSP48E单元)。
所述的计算单元PE采用按行一维划分输出矩阵的并行算法进行矩阵乘法计算,当进行多个矩阵连乘法计算时,由于中间计算结果无需在FPGA处理单元与主处理器之间进行交互,进一步降低了系统的通信开销。
所述的互联网络采用以太网或RapidIO互连技术,以太网和RapidIO互连技术支持组播发送方式,当多个FPGA处理单元需要相同数据时,采用组播发送方式将数据发送给所有这些FPGA处理单元,使系统具有较低通信开销。
所述的互联网络采用星形拓扑结构进行互联。
本发明优点为:系统可以兼顾稠密矩阵乘法和稀疏矩阵乘法,并对稀疏矩阵乘法计算性能有所提升,同时具有较低的通信开销,对系统硬件资源要求较低。
附图说明
图1为本发明系统的网络拓扑结构示意图;
图2为本发明系统的结构示意框图;
图3为本发明FPGA处理单元的内部结构示意框图;
图4为本发明PE阵列的工作流程图;
图5为本发明数据预处理模块的工作流程图;
图6为本发明采用基于按行一维划分输出矩阵并行算法进行多个矩阵连乘法计算的操作示意框图。
具体实施方式
如图1、2所示,一种基于多FPGA的采用主从分布式结构的矩阵乘法并行计算系统,以嵌入式处理器作为主处理器420,采用以太网或RapidIO互连技术,以星形互连拓扑结构,组成主从分布式多FPGA矩阵乘法并行计算系统。以太网和RapidIO互连技术支持组播发送方式,当多个处理单元410需要相同数据时,主处理器420通过以太网交换器或RapidIO交换器430,采用组播发送方式,将数据发送给所有这些处理单元。相对其它点对点互连技术,如PCI-e,该系统具有较低的通信开销。
主处理器420包括数据发送模块510、命令发送模块520、响应接收模块530和数据接收模块540。通过这些模块,主处理器420完成对P个FPGA处理单元任务的分配、数据和命令发送及响应和结果的接收,而各个FPGA处理单元则负责对分配的子矩阵块进行计算。
如图3所示,各FPGA处理单元410包含有:
假定单FPGA内部可以实现p×q个PE(Processing Element,计算单元)单元111,将其排列形成的p×q(p为行数,q为列数)的PE(ProcessingElement,计算单元)阵列110,用于对输入数据进行乘加计算操作,乘加器PE单元111采用FPGA内部DSP单元实现(包括V-II系列的18×18乘法器、V-4系列的DSP48单元和V-5系列的DSP48E单元)。
每个计算单元PE 111配有一个计算结果存储单元112,用于存储计算结果;
设于PE阵列110前的数据预处理模块120,用于对输入矩阵元素的值进行分析,当读入的p个被乘数矩阵的元素全部为0或q个乘数矩阵元素全部为0时,将本次读入元素排除在矩阵乘法计算之外。通过避免稀疏矩阵中的0元素块参与乘加计算,提高了稀疏矩阵乘法计算的性能;
读FIFO130、写FIFO140,设于数据预处理模块120与FPGA内部数据总线之间,用于提高PE阵列110的计算时间与数据通信时间的重叠程度,以提高PE阵列110的效率;
存储器控制器160,用于扩展本地存储单元,对输入输出数据进行本地缓存;
互连网络控制器150,用于扩展互连网络接口,与主处理器420通讯。
控制逻辑单元170,用于控制整个FPGA处理单元的数据流及互连网络协议栈的运行。
其中,PE阵列110的工作过程如图4所示,复位后PE阵列110处于空闲状态,当接收到“开始计算”的命令后,PE阵列110对内部变量进行初始化,将中间结果存储单元清零,并根据接收到的参数设置本次乘加计算的长度(即矩阵A的列数);初始化完成后,PE阵列110便可以在每个工作周期内接收P个矩阵A的元素和P个矩阵B的元素进行乘加计算,直至完成P2个矩阵C的元素的计算。PE阵列110还配置有“终止计算”命令,在需要时可通过该命令强制终止PE阵列110的计算。在计算完成或被终止后,本次计算的结果将被写入PE阵列110的结果存储单元Cxy,同时PE阵列110回复到空闲状态。
数据预处理模块120的工作过程如图5所示。复位结束后,数据预处理模块120首先处于空闲状态。当接收到“开始计算”命令时,数据预处理模块120根据输入的参数来初始化内部变量,如矩阵A的行数和列数、矩阵B的列数等。完成初始化后,数据预处理模块开始进行数据的读取与分析工作,并将需要计算的数据排入PE阵列110计算队列。完成所有数据的读取分析后,如果没有计算被跳过,数据预处理模块可以直接等待PE阵列110计算结束;如果有无效计算被跳过,会出现PE阵列110接收到的计算次数参数与实际需要的计算次数不同的情况,此时需要该数据预处理模块向PE阵列110发送“终止计算”命令强制结束PE阵列110的计算后,再进入等待计算结束状态。当PE阵列110计算完成后,数据预处理模块120便回复到空闲状态。
整个并行计算系统采用基于按行一维划分输出矩阵的并行算法进行矩阵乘法计算,其算法示意如图6(a)所示。对于在包含P个FPGA处理单元410的并行计算系统中进行的两个大小为N×N的矩阵乘法计算,每个FPGA处理单元410需要得到被乘数矩阵的
行元素和整个乘数矩阵的元素,以完成结果矩阵的一个大小为
的子矩阵块。当进行多次矩阵连乘法计算时,该算法无需在主处理器420与FPGA处理单元410之间进行中间结果的交互,从而整个系统具有较低的通信开销。以两次矩阵连乘法计算Z=A×B×C为例,假定A、B、C和Z分别为N×M、M×M、M×N和N×N矩阵,并令X=A×B,则其在并行系统中的计算步骤为:
1)主处理器420分别为每个FPGA处理单元410按行分配矩阵A的
个元素,并将整个矩阵B通过互连网络交换机430以组播发送方式发送给所有FPGA处理单元410。每个FPGA处理单元410在接收到数据后,使用各自内部PE阵列110来计算矩阵X的一个大小为
的子矩阵块。
2)在各个FPGA处理单元410计算矩阵X的同时,主处理器420通过组播发送方式将整个矩阵C发送给所有FPGA处理单元410。各FPGA处理单元在完成矩阵X的计算后,直接利用本地计算结果与矩阵C的元素,使用各自内部PE阵列110计算出矩阵Z的一个大小为
的子块。各FPGA处理单元410完成计算后将各自计算结果发送回主处理器420,完成矩阵连乘法计算。图6(b)为P=3,M=4,N=6时两次矩阵连乘法计算过程的示意。
由计算过程可以看出,各个FPGA处理单元410产生的中间结果均可在本地复用,而无需与其它任何单元进行交互,降低了系统的通信开销。