Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of 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).

NOTE:

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

number of rows for the input matrix A. Must be at least zero.

cols

Number of columns for the input matrix A. Must be at least zero.

alpha

Scaling factor for the matrix transposition or copy.

a

Array holding the input matrix A. Must have size at least lda * n for column major ordering and at least lda * m for row major ordering.

lda

Leading dimension of the matrix A. If matrices are stored using column major layout, lda is the number of elements in the array between adjacent columns of the matrix and must be at least stridea * (m-1) + 1. If using row major layout, lda is the number of elements between adjacent rows of the matrix and must be at least stridea * (n-1) + 1.

stridea

The second stride of the matrix A. For column major layout, stridea is the number of elements in the array between adjacent rows of the matrix. For row major layout stridea is the number of elements between adjacent columns of the matrix. In both cases stridea must be at least 1.

b

Array holding the output matrix B.

  trans = transpose::nontrans trans = transpose::trans, or trans = transpose::conjtrans
Column major B is m x n matrix. Size of array b must be at least ldb * n. B is n x m matrix. Size of array b must be at least ldb * m.
Row major B is m x n matrix. Size of array b must be at least ldb * m. B is n x m matrix. Size of array b must be at least ldb * n.
ldb

The leading dimension of the matrix B. Must be positive.

  trans = transpose::nontrans trans = transpose::trans, or trans = transpose::conjtrans
Column major ldb must be at least strideb * (m-1) + 1. ldb must be at least strideb * (n-1) + 1.
Row major ldb must be at least strideb * (n-1) + 1. ldb must be at least strideb * (m-1) + 1.
strideb

The second stride of the matrix B. For column major layout, strideb is the number of elements in the array between adjacent rows of the matrix. For row major layout, strideb is the number of elements between adjacent columns of the matrix. In both cases strideb must be at least 1.

Output Parameters

b

Array, size at least m.

Contains the destination matrix.

Interfaces