Help using mkl_?imatcopy

Help using mkl_?imatcopy

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?

5 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

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 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?


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 ]
[ ... ]
A` =
[ x x x x x x ]
[ x x a c x x ]
[ x x b d x x ]
[ ... ]

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

Leave a Comment

Please sign in to add a comment. Not a member? Join today