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

## Help using mkl_?imatcopy Beginner
201 Views

The mkl_?imatcopy functions require an extra leading dimension parameter, called ldb.
From the documentation, I am not sure what value it should be used for this parameter. As an answer, I would like that the following case be considered:

A = (lda = 7 for row-major)
[x x x x x x x]
[x x a b c x x]
[x x d e f x x]
[x x x x x x x]

Transposed =
[x x x x x x x]
[x x a d b x x]
[x x e c f x x]
[x x x x x x x]

What value for ldb should be used in mkl_?imatcopy?

4 Replies Employee
201 Views

You cannot do this with mkl_?imatcopy, because elements b and e are not adjacent in the result - this permutation is not a transposition.

parameter ldb is the output stride. When you transpose M-by-N matrix you mean your input(m,n) is located at input[m*LDA+n] and your output(n,m) is located at output[n*LDB+m]

Thanks
Dima Beginner
201 Views

Thanks Dmitry. I am in doubt now. Can I use mkl_?imatcopy on a matrix block? If not, I can only think of lda being always cols (row major order). Also, for a MxN matrix with lda = N, what would be ldb? M? Employee
201 Views
Allan, one of the most popular imatcopy usage is imatcopy('R','T',rows,cols,1.,A,cols,rows). That is exactly what you ask about transpose entire MxN matrix (i.e. ldb=cols). But if you want to transpose a sub-block in a matrix you have to specify ldb slightly different. For example imatcopy('R', 'T', 2, 2, 1., A+6+2, 6, 6) converts A = [ x x x x x x ] [ x x a b x x ] [ x x c d x x ] [ ... ] to A` = [ x x x x x x ] [ x x a c x x ] [ x x b d x x ] [ ... ] Beginner
201 Views

Thanks Evarist. Is there a scenario where ldb is different from lda? 