Developer Reference

  • 0.10
  • 10/21/2020
  • Public Content
Contents

mkl_?omatcopy2

Performs two-strided scaling and out-of-place transposition/copying of matrices.

Syntax

void
mkl_somatcopy2
(
char
ordering
,
char
trans
,
size_t
rows
,
size_t
cols
,
const
float
alpha
,
const
float
*
A
,
size_t
lda
,
size_t
stridea
,
float
*
B
,
size_t
ldb
,
size_t
strideb
);
void
mkl_domatcopy2
(
char
ordering
,
char
trans
,
size_t
rows
,
size_t
cols
,
const
double
alpha
,
const
double
*
A
,
size_t
lda
,
size_t
stridea
,
double
*
B
,
size_t
ldb
,
size_t
strideb
);
void
mkl_comatcopy2
(
char
ordering
,
char
trans
,
size_t
rows
,
size_t
cols
,
const
MKL_Complex8
alpha
,
const
MKL_Complex8
*
A
,
size_t
lda
,
size_t
stridea
,
MKL_Complex8
*
B
,
size_t
ldb
,
size_t
strideb
);
void
mkl_zomatcopy2
(
char
ordering
,
char
trans
,
size_t
rows
,
size_t
cols
,
const
MKL_Complex16
alpha
,
const
MKL_Complex16
*
A
,
size_t
lda
,
size_t
stridea
,
MKL_Complex16
*
B
,
size_t
ldb
,
size_t
strideb
);
Include Files
  • mkl.h
Description
The
mkl_?omatcopy2
routine performs two-strided scaling and out-of-place transposition/copying of matrices. A transposition operation can be a normal matrix copy, a transposition, a conjugate transposition, or just a conjugation. The operation is defined as follows:
B
:=
alpha
*op(
A
)
Normally, matrices in the BLAS or LAPACK are specified by a single stride index. For instance, in the column-major order,
A
(2,1)
is stored in memory one element away from
A
(1,1)
, but
A
(1,2)
is a leading dimension away. The leading dimension in this case is at least the number of rows of the source matrix. If a matrix has two strides, then both
A
(2,1)
and
A
(1,2)
may be an arbitrary distance from
A
(1,1)
.
Different arrays must not overlap.
Input Parameters
ordering
Ordering of the matrix storage.
If
ordering
=
'R'
or
'r'
, the ordering is row-major.
If
ordering
=
'C'
or
'c'
, the ordering is column-major.
trans
Parameter that specifies the operation type.
If
trans
=
'N'
or
'n'
,
op(
A
)=
A
and the matrix
A
is assumed unchanged on input.
If
trans
=
'T'
or
't'
, it is assumed that
A
should be transposed.
If
trans
=
'C'
or
'c'
, it is assumed that
A
should be conjugate transposed.
If
trans
=
'R'
or
'r'
, it is assumed that
A
should be only conjugated.
If the data is real, then
trans
=
'R'
is the same as
trans
=
'N'
, and
trans
=
'C'
is the same as
trans
=
'T'
.
rows
The number of rows in matrix
B
(the source matrix).
cols
The number of columns in matrix
B
(the source matrix).
alpha
This parameter scales the input matrix by
alpha
.
a
Array.
lda
If
ordering
=
'R'
or
'r'
,
lda
represents the number of elements in array
a
between adjacent rows of matrix
A
;
lda
must be at least equal to the number of columns of matrix
A
.
If
ordering
=
'C'
or
'c'
,
lda
represents the number of elements in array
a
between adjacent columns of matrix
A
;
lda
must be at least 1 and not more than the number of columns in matrix
A
.
stridea
If
ordering
=
'R'
or
'r'
,
stridea
represents the number of elements in array
a
between adjacent columns of matrix
A
.
stridea
must be at least 1 and not more than the number of columns in matrix
A
.
If
ordering
=
'C'
or
'c'
,
stridea
represents the number of elements in array
a
between adjacent rows of matrix
A
.
stridea
must be at least equal to the number of columns in matrix
A
.
b
Array.
ldb
If
ordering
=
'R'
or
'r'
,
ldb
represents the number of elements in array
b
between adjacent rows of matrix
B
.
  • If
    trans
    =
    'T'
    or
    't'
    or
    'C'
    or
    'c'
    ,
    ldb
    must be at least equal to
    rows
    /
    strideb
    .
  • If
    trans
    =
    'N'
    or
    'n'
    or
    'R'
    or
    'r'
    ,
    ldb
    must be at least equal to
    cols
    /
    strideb
    .
If
ordering
=
'C'
or
'c'
,
ldb
represents the number of elements in array
b
between adjacent columns of matrix
B
.
  • If
    trans
    =
    'T'
    or
    't'
    or
    'C'
    or
    'c'
    ,
    ldb
    must be at least 1 and not more than
    rows
    /
    strideb
    .
  • If
    trans
    =
    'N'
    or
    'n'
    or
    'R'
    or
    'r'
    ,
    ldb
    must be at least 1 and not more than
    cols
    /
    strideb
    .
strideb
If
ordering
=
'R'
or
'r'
,
strideb
represents the number of elements in array
b
between adjacent columns of matrix
B
.
  • If
    trans
    =
    'T'
    or
    't'
    or
    'C'
    or
    'c'
    ,
    strideb
    must be at least 1 and not more than
    rows
    (the number of rows in matrix
    B
    ).
  • If
    trans
    =
    'N'
    or
    'n'
    or
    'R'
    or
    'r'
    ,
    strideb
    must be at least 1 and not more than
    cols
    (the number of columns in matrix
    B
    ).
If
ordering
=
'C'
or
'c'
,
strideb
represents the number of elements in array
b
between adjacent rows of matrix
B
.
  • If
    trans
    =
    'T'
    or
    't'
    or
    'C'
    or
    'c'
    ,
    strideb
    must be at least equal to
    rows
    (the number of rows in matrix
    B
    ).
  • If
    trans
    =
    'N'
    or
    'n'
    or
    'R'
    or
    'r'
    ,
    strideb
    must be at least equal to
    cols
    (the number of columns in matrix
    B
    ).
Output Parameters
b
Array, size at least
m
.
Contains the destination matrix.
Interfaces

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserverd for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804