Skip to content

Errors in Allocated Dimensions for rank-local SVD #262

@wavefunction91

Description

@wavefunction91

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:

  1. 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.
  2. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions