extension of svd routine to include solver ?gesdd from lapack#179
Open
jurajHasik wants to merge 1 commit intoITensor:masterfrom
Open
extension of svd routine to include solver ?gesdd from lapack#179jurajHasik wants to merge 1 commit intoITensor:masterfrom
jurajHasik wants to merge 1 commit intoITensor:masterfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is initial commit for extension of svd solver as implemented in ITensor. User can
pass a parameter to svd function inside Args container specifying method to use.
an example call: svd(A,U,V,D,{"SVDMethod","gesdd"})
if Args do not contain "SVDMethod" parameter, the default ITensor implementation of svd
solver is used. No change to calls of svd already defined anywhere in the code is necessary.
The extension is implemented at low level. A function SVDRef (defined in tensor/algs.cc)
serves as a fork. It checks for a presence of "SVDMethod" parameter in the Args. If not
found a default ITensor svd is called. Otherwise, a particular implementation identified
through string, in this case "gesdd" is called. The actual implementation of the solver
is given in a file tensor/extra-svds.cc. It performs the call to lapack ?gesdd routine.
The unit tests are included in file unittests/extra-svds_test.cc
Note: possibly column-major to row-major conversion for output VT of ?gesdd might be avoided ?