When computing the SVD of an m-by-n matrix A, one possible approach is to first determine the QR factorization of A, and then to apply the usual SVD decomposition to the resulting n-by-n upper-triangular part of the R matrix. This is the algorithm that Golub & Van Loan describe as the R-SVD. When m >> n, it can much more efficient than the usual approach of working directly with A.

I have checked that this optimization is implemented in the Lapack routines (For example DGESVD calls DGEQRF when m is much larger than n).

The Scalapack Users's guide also acknowledges the optimization and indicates that it is present in the driver routine PxGESVD which supposedly calls the routine PxGEQRF when applicable. However I was unable to confirm that in the source code (pdgesvd.f) of Scalapack 1.8. In particular, the routine PDGEQRF is not called directly from the SVD driver.

Could anyone confirm if the R-SVD is currently implemented in Scalapack or if I should do it myself ?

Thanks !