I am a student from Germany and I am writing my bachelor's thesis about a comparison of methods for computing the singular value decomposition of arbitrary matrices.
Amongst others I want to do a practical comparison of runtime and computational error of several different algorithms for computing the singular value decomposition. For it I want to use three LAPACK methods, namely dgesvd (QR iteration), dgesdd (Divide-and-conquer algorithm) and dgesvdx (bisection/ inverse iteration).
In my case it fits best to use the LAPACK methods of Intel MKL for several reasons.
But I have a problem concerning the numerical algorithms underlying the LAPACK methods. The exact implementation is not so important for me, but I have to make sure that I know which numerical algorithms are used by the LAPACK methods. Netlib offers a documentation that indicates quite precisely which numerical algorithms are used by the Netlib LAPACK methods and on which scientific papers they are based on. Therefore I know pretty well how the Netlib LAPACK methods work. To be precise:
- dgesvd: zero-shift QR iteration according to Demmel and Kahan if singular values and vectors are to be computed, a dqds-algorithm if only singular values
- dgesdd: divide-and-conquer algorithm if singular values and vectors are to be computed, a dqds-algorithm if only singular values
- dgesvdx: forms a tridiagonal matrix and computes its eigenvalue decomposition using bisection and inverse iteration (method: dstevx)
Now my question is:
What is the relation between Intel MKL LAPACK and Netlib LAPACK? Is MKL LAPACK "a more efficient version of Netlib LAPACK" and uses the same numerical algorithms in the same situations (singular vectors/only singular values)? Do submethods called by the driver methods do the same as with Netlib LAPACK? Can I refer to the same scientific papers as for the Netlib LAPACK methods?
Or is Intel MKL LAPACK more standalone and its methods do not always do the same things/ use the same numerical algorithms as the Netlib LAPACK methods?
And if the Intel MKL LAPACK is more standalone, is there a way to find out what the individual methods do exactly and what algorithms they use exactly?
I don't know if this is the right place to ask these questions, but I would be very grateful for any help!
Thank you very much in advance!
Thanks for reaching out to us.
The original versions of LAPACK from which that part of Intel® oneAPI Math Kernel Library was derived from Netlib. Intel® oneAPI Math Kernel Library (oneMKL) is optimized for performance on Intel processors. oneMKL also runs on non-Intel x86-compatible processors.For more information refer(Overview (intel.com)).
The numerical methods/algorithms used in the Intel MKL Lapack were mentioned in the MKL documentation. To find documentation for all the Singular Value Decomposition: LAPACK Driver Routines, refer here (Singular Value Decomposition (intel.com)).
For example, for dgesdd it has been mentioned that this routine uses a divide and conquer algorithm to compute SVD.
Regarding the remaining queries, we are working on them and will get back to you.
Let us know if you need any other information.