Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

Matrix Q of QR decomposition

Jorge_Lorente
Beginner
440 Views
Hello,
I need to obtain matrix Q of QR decomposition, so I've been using function *geqrf followed by *orgqr and it performs well. The problem is when I use this functions with threaded mkl where i've got good speed up with *geqrf, but no speed up with *orgqr. I've seen user's manual and it seems that *orgqr is not a threaded function; is there any other possibility to obtain the matrix Q with a threaded function??
thanks!!
Jorge
0 Kudos
1 Solution
Gennady_F_Intel
Moderator
440 Views
Hi Jorge, you are right, all of these routines (?(or/un)gqr) are not threaded yet.

This issue has been submitted to our internal development tracking database for further investigation, we will inform you once a new update becomes available.

Here is a bug tracking number for your reference: 200206100.

--Gennady

View solution in original post

0 Kudos
4 Replies
mecej4
Honored Contributor III
440 Views
Are you sure that you need Q in explicit form rather than as a product of Householder vectors? Often, Q is only an intermediate result of no intrinsic interest, and is no longer needed after forming a matrix-vector product such as Q.v .
0 Kudos
Jorge_Lorente
Beginner
440 Views
I need matrix Q because I need the nullspace of a matrix, and the nullspace of a matrix is formed by the last columns of matrix Q of the QR decomposition of this matrix. But the nullspace is not a final result, because then I use nullspace in a matrix-matrix product...so it means that someway I can perform this matrix-matrix multiplication without obtaning matrix Q in explicit form??
Thanks!!! :)
0 Kudos
Gennady_F_Intel
Moderator
441 Views
Hi Jorge, you are right, all of these routines (?(or/un)gqr) are not threaded yet.

This issue has been submitted to our internal development tracking database for further investigation, we will inform you once a new update becomes available.

Here is a bug tracking number for your reference: 200206100.

--Gennady

0 Kudos
Jorge_Lorente
Beginner
440 Views
Thanks Gennady!

But I have one more question...I have tested function 'dormqr()' being matrix C an identity matrix and as expected, I have same results as using 'dorgqr()' function. As we can see in the manual, 'dormqr()' is a threaded function, so I've got matrix Q faster than with 'dorgqr()', but for my surprise when I run both functions in sequential MKL 'dormqr()' is near 3 times faster than 'dorgqr()'. How is it posible if both functions make the same and 'dormqr()' also make a matrix-matrix multiplication?

thanks!! :)
Jorge
0 Kudos
Reply