- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

machine: MAC

mkl version: 2019.4.233

compiler: clang-1001.0.46.4

LAPACKE_dtpqrt:

layout row major

prameters m = n = l = lda = ldb = ldt = 12

if we set nb > 1,

the routines generates nan in the lower part of the triangular matrices stored in t.

This makes LAPACKE_dtpmqrt returns an error indicating invalid t array.

LAPACKE_dtpmqrt:

layout row major, left side multiplication, no transposition

case 1:

prameters m = k = n = l = ldv = ldt = lda = ldb = 12

If nb != k

The routines does not compute the correct product.

case 2:

prameters m = k = l = nb = ldv = ldt = 12,

n = lda = ldb

if n != k

the routines returns an error -14 meaning that lda does not have a valid value,

however, it should be valid

Link Copied

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Could you give us an example of this case which we may compile, run and investigate the problem on our side?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Here I attach the file.

I compute the QR decomposition of the matrix [a ; b] (vertical block concatenation) by using dtpqrt.

I set a matrix [c ; d] to match the first n columns of the identity and apply Q from the left by using dtpmqrt.

I get the error from dtpmqrt.

I form the concatenated matrices from their original data (i.e., before any computation).

I call dgeqrf and dormqr to compare data and clearly it is wrong

Note: In this example I didn't get nans from dtpqrt in my other code I did have some.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Thanks, the problem is reproduced on with mkl 2019 u4. We will investigate the case and keep this thread updated.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

ierr = LAPACKE_dtpmqrt(LAPACK_ROW_MAJOR, 'L', 'N', k, n, k, k, nb, b, k, t, k, c, m, d, n); // passed lda == m

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

pls look at the mkl reference : https://software.intel.com/en-us/mkl-developer-reference-c-tpmqrt

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Following the mkl reference the argument lda is the leading dimension of the array c in the code which is equal to n in that case (number of columns). I do pass this argument.

Excuse me I did not get what is wrong.

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