imatcopy#

Computes an in-place scaled matrix transpose or copy operation using a general matrix.

Description#

The imatcopy routine performs an in-place scaled matrix copy or transposition. The operation is defined as:

\[AB \leftarrow alpha*op(AB)\]

where:

  • op(X) is one of op(X) = X, or op(X) = XT, or op(X) = XH

  • alpha is a scalar

  • AB is a matrix

  • AB is m x n on input.

imatcopy supports the following precisions:

T

float

double

std::complex<float>

std::complex<double>

imatcopy (Buffer Version)#

Syntax#

namespace oneapi::mkl::blas::column_major {
    void imatcopy(sycl::queue &queue,
                  oneapi::mkl::transpose trans,
                  std::int64_t m,
                  std::int64_t n,
                  T alpha,
                  sycl::buffer<T, 1> &ab,
                  std::int64_t lda,
                  std::int64_t ldb);
}
namespace oneapi::mkl::blas::row_major {
    void imatcopy(sycl::queue &queue,
                  oneapi::mkl::transpose trans,
                  std::int64_t m,
                  std::int64_t n,
                  T alpha,
                  sycl::buffer<T, 1> &ab,
                  std::int64_t lda,
                  std::int64_t ldb);
}

Input Parameters#

queue

The queue where the routine will be executed.

trans

Specifies op(AB), the transposition operation applied to the matrix AB. See Data Types for more details.

m

Number of rows for the matrix AB on input. Must be at least zero.

n

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

alpha

Scaling factor for the matrix transposition or copy.

ab

Buffer holding the input/output matrix AB. Must have size as follows:

trans = transpose::nontrans

trans = transpose::trans or trans = transpose::conjtrans

Column major

Size of array ab must be at least max(lda, ldb) * n

Size of array ab must be at least max(lda, ldb) * max(m, n)

Row major

Size of array ab must be at least max(lda, ldb) * m

Size of array ab must be at least max(lda, ldb) * max(m, n)

lda

Leading dimension of the matrix AB on input. If matrices are stored using column major layout, lda must be at least m. If matrices are stored using row major layout, lda must be at least n. Must be positive.

ldb

Leading dimension of the matrix AB on output. Must be positive.

trans = transpose::nontrans

trans = transpose::trans or trans = transpose::conjtrans

Column major

Must be at least m

Must be at least n

Row major

Must be at least n

Must be at least m

Output Parameters#

ab

Output buffer, overwritten by alpha * op(AB).

imatcopy (USM Version)#

Syntax#

namespace oneapi::mkl::blas::column_major {
    sycl::event imatcopy(sycl::queue &queue,
                         oneapi::mkl::transpose trans,
                         std::int64_t m,
                         std::int64_t n,
                         oneapi::mkl::value_or_pointer<T> alpha,
                         T *ab,
                         std::int64_t lda,
                         std::int64_t ldb,
                         const std::vector<sycl::event> &dependencies = {});
}
namespace oneapi::mkl::blas::row_major {
    sycl::event imatcopy(sycl::queue &queue,
                         oneapi::mkl::transpose trans,
                         std::int64_t m,
                         std::int64_t n,
                         oneapi::mkl::value_or_pointer<T> alpha,
                         T *ab,
                         std::int64_t lda,
                         std::int64_t ldb,
                         const std::vector<sycl::event> &dependencies = {});
}

Input Parameters#

queue

The queue where the routine will be executed.

trans

Specifies op(AB), the transposition operation applied to the matrix AB. See Data Types for more details.

m

Number of rows for the matrix AB on input. Must be at least zero.

n

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

alpha

Scaling factor for the matrix transposition or copy. See Scalar Arguments for more information on the value_or_pointer data type.

ab

Pointer to input/output matrix AB. Must have size as follows:

trans = transpose::nontrans

trans = transpose::trans or trans = transpose::conjtrans

Column major

Size of array ab must be at least max(lda, ldb) * n

Size of array ab must be at least max(lda, ldb) * max(m, n)

Row major

Size of array ab must be at least max(lda, ldb) * m

Size of array ab must be at least max(lda, ldb) * max(m, n)

lda

Leading dimension of the matrix AB on input. If matrices are stored using column major layout, lda must be at least m. If matrices are stored using row major layout, lda must be at least n. Must be positive.

ldb

Leading dimension of the matrix AB on output. Must be positive.

trans = transpose::nontrans

trans = transpose::trans or trans = transpose::conjtrans

Column major

Must be at least m

Must be at least n

Row major

Must be at least n

Must be at least m

dependencies

List of events to wait for before starting computation, if any. If omitted, defaults to no dependencies.

Output Parameters#

ab

Pointer to output matrix AB overwritten by alpha * op(AB).

Return Values#

Output event to wait for to ensure computation is complete.