- FactorizationQR
- FactorizationQRNonNeg
- FactorizationQRPivot
- FactorizationQRTallSkinny
- FactorizationLQ
- FactorizationLQShortWide
- FactorizationQL
- FactorizationRQ
- FactorizationRZ
- FactorizationQR2
- FactorizationRQ2
FactorizationQRTallSkinny
Computes a blocked Tall-Skinny QR factorization of an m-by-n (m>n) matrix: A = Q * R. LAPACK function LATSQR.
Computing for type matrix<double>
bool matrix::FactorizationQRTallSkinny(
|
Computing for type matrix<float>
bool matrix::FactorizationQRTallSkinny(
|
Computing for type matrix<complex>
bool matrix::FactorizationQRTallSkinny(
|
Computing for type matrix<complexf>
bool matrix::FactorizationQRTallSkinny(
|
Parameters
mb
[in,out] The row block size to be used in the blocked QR. MB > N. If 0 is passed in the parameter, the optimal MB value will be calculated using the ILAENV function and returned.
nb
[in,out] The column block size to be used in the blocked QR. N >= NB >= 1. If 0 is passed in the parameter, the optimal NB value will be calculated using the ILAENV function and returned.
Q
[out] Orthogonal or unitary matrix Q.
R
[out] Upper triangular matrix R.
Return Value
Return true if successful, otherwise false in case of an error.
Note
Although the LAPACK routine ILAENV computes suitable values for MB and NB automatically, these parameters can be tuned manually to match the CPU cache size, which may provide a significant performance improvement. A useful rule of thumb is:
NB = min(N, 32 or 64)
MB = max(2*N, cache_target_rows)
MB = min(M-1, MB)
где cache_target_rows выбирается так, чтобы блок MB x N помещался в L2/L3 cache: MB ≈ cache_bytes / (8 * N) для double precision.