- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
To calculate the singular values of a general matrix, the mkl tutorial says two functions are enough, DGERBD followed by DBDSQR. But it seems like another function (DORGBR) needs to be used in the middle.
Is the tutorial (mkl_man.pdf) right?
Link Copied
4 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - CO_Traut
To calculate the singular values of a general matrix, the mkl tutorial says two functions are enough, DGERBD followed by DBDSQR. But it seems like another function (DORGBR) needs to be used in the middle.
Is the tutorial (mkl_man.pdf) right?
DGERBD/DBDSQR should be enough. You can also call GESVD and get your matrix decomposed (including list of singular values (sorted)).
A.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - ArturGuzik
DGERBD/DBDSQR should be enough. You can also call GESVD and get your matrix decomposed (including list of singular values (sorted)).
May I ask which one is better? Is it worth to switch from GEBRD/BDSQR to GESVD?
Especially it is interesting to me which one is faster and whether there are differences in precision.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - roland-duerr
May I ask which one is better? Is it worth to switch from GEBRD/BDSQR to GESVD?
Especially it is interesting to me which one is faster and whether there are differences in precision.
Especially it is interesting to me which one is faster and whether there are differences in precision.
I need to confess that I have not-that-deep knowledge of the algorithm details but I believe GESVD should be fine (this should include calls to GEBRD and BDSQR). You have just a single call. In any case it's superior to LINPACK implementation (as far as I know).
The other algorithm you can use and should be much faster for large problem is ?bdsdc and uses the "divide-and-conquer" algorithm (see MKL docs).
A.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - CO_Traut
To calculate the singular values of a general matrix, the mkl tutorial says two functions are enough, DGERBD followed by DBDSQR. But it seems like another function (DORGBR) needs to be used in the middle.
Is the tutorial (mkl_man.pdf) right?
Hi,
it depends on whether you need singular vectors along with singular values, or not. In case you need full SVD you certainly need dorgbr to restore orthogonal matrix from its elementary reflectors representation. In case you don't need vectors, there's no need to call dorgbr.
MKL manual doesn't state ina general text that dgebrd and dbdsqr is enough, it just describes the decomposition - main (necessary) parts of the algorithm - just because the full description of all the branches would be too excessive. dorgbr isn't a routine making some decomposition - it just restores an orthogonal form.At last, dorgbr is explicitly mentioned in Figure 4-1 Decision Tree: Singular Value Decomposition at the appropriate bar.
Michael,
MKL Engineer.

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page