统一结构的矩阵分解协处理器
A Unified Co-Processor Architecture for Matrix Decomposition
-
摘要: 1.本文的创新点
(1)在分析QR和LU等矩阵分解算法的基础上,本文面向FPGA实现平台提出了矩阵分解细粒度并行算法统一架构。
(2)提出了由可扩展线性阵列处理单元组成矩阵分解协处理器的统一结构。该结构中的处理单元之间具有统一的简单接口:存储通道和数据通道。并且除了数据通路和部分局部存储器实现不同外,处理单元的内部结构也是统一的。
2.实现方法
本文的实现思路及方法为:(1)我们以三种QR分解和列选主元的LU分解算法为例,将矩阵分解类算法分为三个组成部分,并且这些算法都是由三重循环(文章中主要考虑外面的两层循环)构成。因此,矩阵分解算法具有相同的算法架构。(2)数据依赖关系分析结果表明,矩阵分解算法具有统一的数据依赖关系。我们以一个最外层循环片为计算单位(即一个处理单元每次完成一个最外层循环片的计算),当该处理单元收到上一个处理单元传来的有效数据便可以启动该处理单元的计算,这也是矩阵分解细粒度并行算法的基本思想。(3)在算法分析和数据依赖关系分析的基础上,本文提出了适于FPGA平台实现的矩阵分解算法细粒度并行算法统一架构。(4)我们设计了主要包括两片FPGA芯片(Xilinx Virtex5的XC5VLX50TFF1136和XC5VLX330FF1760)和两块2GB的DDRII存储条的FPGA实验平台实现该结构的矩阵分解协处理器,并进行性能测试。其中,XC5VLX50TFF1136 FPGA主要用于实现PCI-E接口控制模块。
3.结论及未来待解决的问题
综上所述,矩阵分解类算法协处理器实现可以统一于可扩展性的线性阵列结构,并且该结构中的处理单元具有统一的接口。并且除了数据通路和部分内部存储器的实现不同,各种矩阵分解处理单元内部结构也是统一的。此外,为充分发挥FPGA的计算潜力,我们提出了矩阵分解类算法细粒度并行算法架构。测试结果表明,相对于运行在Pentium双核CPU上的双线程SSE相比,统一结构协处理器可取得2.3到14.9倍的性能加速,并且最大可以取得173倍的性能功耗比。
未来待解决问题:面向矩阵分解类算法的协处理器硬件代码自动生成和多芯片系统。对于协处理器代码自动生成,我们将设计一个硬件代码自动生成工具,用于不同矩阵分解协处理器硬件代码生成。同时,本文的统一结构具有良好的可扩展性。对于矩阵分解的计算性能要求非常苛刻的系统,我们可以采用多芯片系统进行实现。
4.实用价值或应用前景
矩阵分解类算法作为许多系统的核心算法在雷达信号处理、现代通信、图像处理以及其它科学计算领域有着非常广泛的应用。例如,空时二维自适应处理技术(STAP)是新一代预警机雷达的核心技术,其中计算量最大的部分是权值计算。为了提高算法的稳定性,人们通常选用计算量较大的QR分解。因此,提高QR分解算法的计算速度成为整个系统的关键。
Abstract: QR and LU decompositions are the most important matrix decomposition algorithms. Many studies work on accelerating these algorithms by FPGA or ASIC in a case by case style. In this paper, we propose a unified framework for the matrix decomposition algorithms, combining three QR decomposition algorithms and LU algorithm with pivoting into a unified linear array structure. The QR and LU decomposition algorithms exhibit the same two-level loop structure and the same data dependency. Utilizing the similarities in loop structure and data dependency of matrix decomposition, we unify a fine-grained algorithm for all four matrix decomposition algorithms. Furthermore, we present a unified co-processor structure with a scalable linear array of processing elements (PEs), in which four types of PEs are same in the structure of memory channels and PE connections, but the only difference exists in the internal structure of data path. Our unified co-processor, which is IEEE 32-bit floating-point precision, is implemented and mapped onto a Xilinx Virtex5 FPGA chip. Experimental results show that our co-processors can achieve speedup of 2.3 to 14.9 factors compared to a Pentium Dual CPU with double SSE threads.