svd_bigmatrix: Singular value decomposition for bigmemory::big.matrix inputs
Description
Compute the singular value decomposition (SVD) of a
bigmemory::big.matrix without materialising it as a base R matrix.
Blocks of rows are streamed through BLAS before LAPACK is invoked so that
even moderately large matrices can be decomposed efficiently.
A list with components u, d, and v analogous to base R's
svd() output. When nu or nv are zero the corresponding matrix has
zero columns.
Arguments
xpMat
Either a bigmemory::big.matrix or an external pointer such
as mat@address that references the source big.matrix.
nu
Number of left singular vectors to return. Use a negative value to
request the default of min(nrow, ncol) vectors and zero to skip
returning u entirely.
nv
Number of right singular vectors to return. Use a negative value to
request the default of min(nrow, ncol) vectors and zero to skip
returning v entirely.
block_size
Number of rows to process per block when streaming data
into BLAS kernels. Larger values can improve throughput at the cost of
additional temporary memory.
method
LAPACK backend used to compute the decomposition. The default
uses the divide-and-conquer routine dgesdd and falls back to dgesvd
when required.