topic How to perform economy size bidiagonalization? in IntelĀ® oneAPI Math Kernel Library
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-perform-economy-size-bidiagonalization/m-p/921685#M13023
<P>Could some help me on this:<BR />I want to perform economy size bidiagonalization of a m x n matrix A (m<n), such that A=QBP' where B is a bidiagonal matrix of size m x m, and Q, P are orthogonal matrices. <BR />Currently, I use following two functions to do the job, from which I can get the factorization A=USV' where S is bidiagonal matrix of size m x n.<BR />dgebrd(&m,&n,x,&m,d,e,tauq,taup,work,&lwork,&info);<BR />dorgbr(&qp,&m,&m,&n,x,&m,tauq,work,&lwork,&info);</P>
<P>I can truncate the matrix S and V to get correct B and P. However this is not optimal in term of speed. From my test, this method is even slower than performing a economy SVD. How can I speed up my function so that I can directly get the economy size result? Thanks in advance.</P>Thu, 11 Oct 2012 13:39:16 GMTsth4nth2012-10-11T13:39:16ZHow to perform economy size bidiagonalization?
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-perform-economy-size-bidiagonalization/m-p/921685#M13023
<P>Could some help me on this:<BR />I want to perform economy size bidiagonalization of a m x n matrix A (m<n), such that A=QBP' where B is a bidiagonal matrix of size m x m, and Q, P are orthogonal matrices. <BR />Currently, I use following two functions to do the job, from which I can get the factorization A=USV' where S is bidiagonal matrix of size m x n.<BR />dgebrd(&m,&n,x,&m,d,e,tauq,taup,work,&lwork,&info);<BR />dorgbr(&qp,&m,&m,&n,x,&m,tauq,work,&lwork,&info);</P>
<P>I can truncate the matrix S and V to get correct B and P. However this is not optimal in term of speed. From my test, this method is even slower than performing a economy SVD. How can I speed up my function so that I can directly get the economy size result? Thanks in advance.</P>Thu, 11 Oct 2012 13:39:16 GMThttps://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-perform-economy-size-bidiagonalization/m-p/921685#M13023sth4nth2012-10-11T13:39:16ZTo get B, dgebrd returns the
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-perform-economy-size-bidiagonalization/m-p/921686#M13024
To get B, dgebrd returns the diagonal elements and the subdiagonal elements of B in d and e, respectively.
To get P<SUP>T</SUP>, call dorgbr('P', m, n, m, x ... ).
You can improve the performance of dgebrd and dorgbr by supplying workspace arrays to them. For information on using workspace arrays to improve performance, please see the "Application Notes" in the <A href="http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mklman/hh_goto.htm#GUID-03C78F41-D16C-4BFE-B087-BE4F5A6A0B9B.htm"> reference manual page for dgebrd</A>.Tue, 16 Oct 2012 00:22:15 GMThttps://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-perform-economy-size-bidiagonalization/m-p/921686#M13024Zhang_Z_Intel2012-10-16T00:22:15Z