omatcopy#

Computes an out-of-place scaled matrix transpose or copy operation using a general dense matrix.

Description

The omatcopy routine performs an out-of-place scaled matrix copy or transposition.

The operation is defined as:

\[B \leftarrow \alpha * op(A)\]

where:

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

alpha is a scalar,

A and B are matrices,

A is m x n matrix,

B is m x n matrix if op is non-transpose and an n x m matrix otherwise.,

omatcopy supports the following precisions:

T

float

double

std::complex<float>

std::complex<double>

omatcopy (Buffer Version)#

Syntax

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

Input Parameters

queue

The queue where the routine should be executed.

trans

Specifies op(A), the transposition operation applied to the matrix A. See oneMath defined datatypes for more details.

m

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

n

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

alpha

Scaling factor for the matrix transposition or copy.

a

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

lda

Leading dimension of the matrix A. 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.

b

Buffer 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 m.

ldb must be at least n.

Row major

ldb must be at least n.

ldb must be at least m.

Output Parameters

b

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

Throws

This routine shall throw the following exceptions if the associated condition is detected. An implementation may throw additional implementation-specific exception(s) in case of error conditions not covered here.

oneapi::math::invalid_argument

oneapi::math::unsupported_device

oneapi::math::host_bad_alloc

oneapi::math::device_bad_alloc

oneapi::math::unimplemented

omatcopy (USM Version)#

Syntax

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

Input Parameters

queue

The queue where the routine will be executed.

trans

Specifies op(A), the transposition operation applied to the matrix A. See oneMath defined datatypes for more details.

m

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

n

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

alpha

Scaling factor for the matrix transposition or copy. See Scalar Arguments in BLAS for more details.

a

Pointer to input matrix A. Must have size at least lda * n for column-major and at least lda * m for row-major.

lda

Leading dimension of the matrix A. 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.

b

Pointer to 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

Leading dimension of the matrix B. 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

b

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

Return Values

Output event to wait on to ensure computation is complete.

Throws

This routine shall throw the following exceptions if the associated condition is detected. An implementation may throw additional implementation-specific exception(s) in case of error conditions not covered here.

oneapi::math::invalid_argument

oneapi::math::unsupported_device

oneapi::math::host_bad_alloc

oneapi::math::device_bad_alloc

oneapi::math::unimplemented

Parent topic: BLAS-like Extensions