Developer Reference

  • 2021.1
  • 12/04/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

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.