There is an option-dimension mismatch in the rank-local svd
https://github.com/ValeevGroup/tiledarray/blob/master/src/TiledArray/math/linalg/rank-local.cpp#L156
There are two issues here:
- AllVec (
A) should map U to an MxM matrix and VT to a NxN matrix, SomeVec (S) should map U to an MxK matrix and VT to a KxN matrix where K=std::min(M,N) (see the docs) Neither of these cases are supported entirely (we seem to assume that M>=N, which is not general), but the current code will likely never to the right thing as the default is AllVec.
- The default behaviour should not be AllVec, it should be SomeVec (thin return). This has mainly to do with the fact that ScaLAPACK doesn't support a full return, so if the
TA::svd wrapper is meant to mean the same thing for both rank-local and ScaLAPACK wrappers, the default behaviour has to be the thin-return.
I get that there are cases where you might want the full return, so we should add (an) extra param(s) to allow for flexibility in the case when you want to run a rank-local full-return SVD.
There is an option-dimension mismatch in the rank-local svd
https://github.com/ValeevGroup/tiledarray/blob/master/src/TiledArray/math/linalg/rank-local.cpp#L156
There are two issues here:
A) should mapUto anMxMmatrix andVTto aNxNmatrix, SomeVec (S) should mapUto anMxKmatrix andVTto aKxNmatrix whereK=std::min(M,N)(see the docs) Neither of these cases are supported entirely (we seem to assume thatM>=N, which is not general), but the current code will likely never to the right thing as the default is AllVec.TA::svdwrapper is meant to mean the same thing for both rank-local and ScaLAPACK wrappers, the default behaviour has to be the thin-return.I get that there are cases where you might want the full return, so we should add (an) extra param(s) to allow for flexibility in the case when you want to run a rank-local full-return SVD.