Help using mkl_?imatcopy

Help using mkl_?imatcopy

Ritratto di Allan L.

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 post / 0 new
Ultimo contenuto
Per informazioni complete sulle ottimizzazioni del compilatore, consultare l'Avviso sull'ottimizzazione
Ritratto di Dmitry Baksheev (Intel)

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

Ritratto di Allan L.

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?

Ritratto di Evarist Fomenko (Intel)

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 ]
[ ... ]

Ritratto di Allan L.

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

Accedere per lasciare un commento.