Visible to Intel only — GUID: GUID-D6A3F880-70E5-4459-B4CD-DD664A821E7C
Visible to Intel only — GUID: GUID-D6A3F880-70E5-4459-B4CD-DD664A821E7C
mkl_?omatcopy2
Performs two-strided scaling and out-of-place transposition/copying of matrices.
Syntax
call mkl_somatcopy2(ordering, trans, rows, cols, alpha, a, lda, stridea, b, ldb, strideb)
call mkl_domatcopy2(ordering, trans, rows, cols, alpha, a, lda, stridea, b, ldb, strideb)
call mkl_comatcopy2(ordering, trans, rows, cols, alpha, a, lda, stridea, b, ldb, strideb)
call mkl_zomatcopy2(ordering, trans, rows, cols, alpha, a, lda, stridea, b, ldb, strideb)
Include Files
- mkl.fi
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).
Parameter descriptions are common for all implemented interfaces with the exception of data types that refer here to the FORTRAN 77 standard types. Data types specific to the different interfaces are described in the section "Interfaces" below.
Different arrays must not overlap.
Input Parameters
- ordering
-
CHARACTER*1. 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
-
CHARACTER*1. 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
-
INTEGER. number of rows for the input matrix A. Must be at least zero.
- cols
-
INTEGER. Number of columns for the input matrix A. Must be at least zero.
- alpha
-
REAL for mkl_somatcopy2.
DOUBLE PRECISION for mkl_domatcopy2.
COMPLEX for mkl_comatcopy2.
DOUBLE COMPLEX for mkl_zomatcopy2.
Scaling factor for the matrix transposition or copy.
- a
-
REAL for mkl_somatcopy2.
DOUBLE PRECISION for mkl_domatcopy2.
COMPLEX for mkl_comatcopy2.
DOUBLE COMPLEX for mkl_zomatcopy2.
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
-
INTEGER.
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
-
INTEGER.
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
-
REAL for mkl_somatcopy2.
DOUBLE PRECISION for mkl_domatcopy2.
COMPLEX for mkl_comatcopy2.
DOUBLE COMPLEX for mkl_zomatcopy2.
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
-
INTEGER.
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
-
INTEGER.
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
-
REAL for mkl_somatcopy2.
DOUBLE PRECISION for mkl_domatcopy2.
COMPLEX for mkl_comatcopy2.
DOUBLE COMPLEX for mkl_zomatcopy2.
Array, size at least m.
Contains the destination matrix.
Interfaces
FORTRAN 77:
SUBROUTINE mkl_somatcopy2 ( ordering, trans, rows, cols, alpha, a, lda, stridea, b, ldb, strideb ) CHARACTER*1 ordering, trans INTEGER rows, cols, lda, stridea, ldb, strideb REAL alpha, b(*), a(*)
SUBROUTINE mkl_domatcopy2 ( ordering, trans, rows, cols, alpha, a, lda, stridea, b, ldb, strideb ) CHARACTER*1 ordering, trans INTEGER rows, cols, lda, stridea, ldb, strideb DOUBLE PRECISION alpha, b(*), a(*)
SUBROUTINE mkl_comatcopy2 ( ordering, trans, rows, cols, alpha, a, lda, stridea, b, ldb, strideb ) CHARACTER*1 ordering, trans INTEGER rows, cols, lda, stridea, ldb, strideb COMPLEX alpha, b(*), a(*)
SUBROUTINE mkl_zomatcopy2 ( ordering, trans, rows, cols, alpha, a, lda, stridea, b, ldb, strideb ) CHARACTER*1 ordering, trans INTEGER rows, cols, lda, stridea, ldb, strideb DOUBLE COMPLEX alpha, b(*), a(*)