Block Gram–Schmidt Orthogonalization
George Walter Stewart · SIAM Journal on Scientific Computing · 2008
The classical Gram–Schmidt algorithm for computing the QR factorization of a matrix X requires at least one pass over the current orthogonalized matrix Q as each column of X is added to the factorization. When Q becomes so large that it must be maintained on a backing store, each pass involves the costly transfer of data from the backing store to main memory. However, if one orthogonalizes the columns of X in blocks of m columns, the number of passes is reduced by a factor of $1/m$. Moreover, matrix-vector products are converted into matrix-matrix products, allowing level-3 BLAS cache performance. In this paper we derive such a block algorithm and give some experimental results that suggest it can be quite effective for large scale problems, even when the matrix X is rank degenerate.