Double-precision Gauss-Jordan Algorithm with Partial Pivoting on FPGAs

This work presents an architecture to compute matrix inversions in a reconfigurable digital system, benefiting from embedded processing elements present in FPGAs, and using double precision floating point representation. The main module of this system is the processing component for the Gauss-Jordan elimination. This component consists of other smaller arithmetic units, organized in pipeline. These units maintain the accuracy in the results without the need to internally normalize and de-normalize the floating-point data. The implementation of the operations takes advantage of the embedded processing elements available in the Virtex-5 FPGA. This implementation shows performance and resource consumption improvements when compared with “traditional” cascaded implementations of the floating point operators. Benchmarks are done with solutions implemented previously in FPGA and software, such as Matlab and Scilab. Keywords-Matrix inversion; Pivoting; Gauss-Jordan; Floating-point; FPGA;

[1]  Ansi Ieee,et al.  IEEE Standard for Binary Floating Point Arithmetic , 1985 .

[2]  Martin Langhammer,et al.  Cholesky decomposition using fused datapath synthesis , 2009, FPGA '09.

[3]  Horácio C. Neto,et al.  On Reconfigurable Architectures for Efficient Matrix Inversion , 2006, 2006 International Conference on Field Programmable Logic and Applications.

[4]  Philip Heng Wai Leong,et al.  FPGA Based Acceleration of the Linpack Benchmark: A High Level Code Transformation Approach , 2006, 2006 International Conference on Field Programmable Logic and Applications.

[5]  Viktor K. Prasanna,et al.  High-Performance Designs for Linear Algebra Operations on Reconfigurable Hardware , 2008, IEEE Transactions on Computers.

[6]  Gene H. Golub,et al.  Matrix computations (3rd ed.) , 1996 .

[7]  Viktor Öwall,et al.  Implementation of a scalable matrix inversion architecture for triangular matrices , 2003, 14th IEEE Proceedings on Personal, Indoor and Mobile Radio Communications, 2003. PIMRC 2003..

[8]  Martin Langhammer Floating point datapath synthesis for FPGAs , 2008, 2008 International Conference on Field Programmable Logic and Applications.

[9]  Viktor K. Prasanna,et al.  High-Performance and Parameterized Matrix Factorization on FPGAs , 2006, 2006 International Conference on Field Programmable Logic and Applications.

[10]  Robert H. Halstead,et al.  Matrix Computations , 2011, Encyclopedia of Parallel Computing.

[11]  Mário P. Véstias,et al.  Multiplier-based double precision floating point divider according to the IEEE-754 standard , 2008, ARC.

[12]  Behrooz Parhami,et al.  Computer arithmetic - algorithms and hardware designs , 1999 .

[13]  Donald E. Knuth,et al.  The Art of Computer Programming, Volumes 1-3 Boxed Set , 1998 .

[14]  A. Happonen,et al.  Several approaches to fixed-point implementation of matrix inversion , 2005, International Symposium on Signals, Circuits and Systems, 2005. ISSCS 2005..

[15]  Karl S. Hemmert,et al.  Closing the gap: CPU and FPGA trends in sustainable floating-point BLAS performance , 2004, 12th Annual IEEE Symposium on Field-Programmable Custom Computing Machines.

[16]  H.C. Neto,et al.  Memory Optimized Architecture for Efficient Gauss-Jordan Matrix Inversion , 2007, 2007 3rd Southern Conference on Programmable Logic.