omatadd#
Computes a sum of two general dense matrices, with optional transposes.
Description
The omatadd
routine performs an out-of-place scaled
matrix addition with optional transposes in the arguments.
The operation is defined as:
where:
op(X
) is one of op(X
) = X
, or op(X
) = X
T, or op(X
) = X
H
alpha
and beta
are scalars,
A
and B
are input matrices while C
is an output matrix,
C
is m
x n
,
A
is m
x n
if the op(A)
is not transposed or n
by m
if it is,
and B
is m
x n
if the op(B)
is not transposed or n
by m
if it is.
In general, A
, B
, and C
should not overlap in memory, with the exception of
the following in-place operations:
A
andC
may point to the same memory ifop(A)
is non-transpose andlda
=ldc
;
B
andC
may point to the same memory ifop(B)
is non-transpose andldb
=ldc
.
omatadd
supports the following precisions:
T
float
double
std::complex<float>
std::complex<double>
omatadd (Buffer Version)#
Syntax
namespace oneapi::math::blas::column_major {
void omatadd(sycl::queue &queue,
oneapi::math::transpose transa,
oneapi::math::transpose transb,
std::int64_t m,
std::int64_t n,
T alpha,
sycl::buffer<T, 1> &a,
std::int64_t lda,
T beta,
sycl::buffer<T, 1> &b,
std::int64_t ldb,
sycl::buffer<T, 1> &c,
std::int64_t ldc)
}
namespace oneapi::math::blas::row_major {
void omatadd(sycl::queue &queue,
oneapi::math::transpose transa,
oneapi::math::transpose transb,
std::int64_t m,
std::int64_t n,
T alpha,
sycl::buffer<T, 1> &a,
std::int64_t lda,
T beta,
sycl::buffer<T, 1> &b,
std::int64_t ldb,
sycl::buffer<T, 1> &c,
std::int64_t ldc)
}
Input Parameters
- queue
The queue where the routine should be executed.
- transa
Specifies op(
A
), the transposition operation applied to the matrixA
. See oneMath defined datatypes for more details.- transb
Specifies op(
B
), the transposition operation applied to the matrixB
. See oneMath defined datatypes for more details.- m
Number of rows for the result matrix
C
. Must be at least zero.- n
Number of columns for the result matrix
C
. Must be at least zero.- alpha
Scaling factor for the matrix
A
.- a
Buffer holding the input matrix
A
.transa
=transpose::nontrans
transa
=transpose::trans
ortransa
=transpose::conjtrans
Column major
A
ism
xn
matrix. Size of arraya
must be at leastlda
*n
A
isn
xm
matrix. Size of arraya
must be at leastlda
*m
Row major
A
ism
xn
matrix. Size of arraya
must be at leastlda
*m
A
isn
xm
matrix. Size of arraya
must be at leastlda
*n
- lda
The leading dimension of the matrix
A
. It must be positive.transa
=transpose::nontrans
transa
=transpose::trans
ortransa
=transpose::conjtrans
Column major
lda
must be at leastm
.lda
must be at leastn
.Row major
lda
must be at leastn
.lda
must be at leastm
.- beta
Scaling factor for the matrix
B
.- b
Buffer holding the input matrix
B
. Must have size at least:transb
=transpose::nontrans
transb
=transpose::trans
ortransb
=transpose::conjtrans
Column major
B
ism
xn
matrix. Size of arrayb
must be at leastldb
*n
B
isn
xm
matrix. Size of arrayb
must be at leastldb
*m
Row major
B
ism
xn
matrix. Size of arrayb
must be at leastldb
*m
B
isn
xm
matrix. Size of arrayb
must be at leastldb
*n
- ldb
The leading dimension of the
B
matrix. It must be positive.transb
=transpose::nontrans
transb
=transpose::trans
ortransb
=transpose::conjtrans
Column major
ldb
must be at leastm
.ldb
must be at leastn
.Row major
ldb
must be at leastn
.ldb
must be at leastm
.- c
Buffer holding the output matrix
C
.Column major
C
ism
xn
matrix. Size of arrayc
must be at leastldc
*n
Row major
C
ism
xn
matrix. Size of arrayc
must be at leastldc
*m
- ldc
Leading dimension of the C matrices. If matrices are stored using column major layout,
ldc
must be at leastm
. If matrices are stored using row major layout,ldc
must be at leastn
. Must be positive.
Output Parameters
- c
Output buffer overwritten by
alpha
* op(A
) +beta
* op(B
).
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
omatadd (USM Version)#
Syntax
namespace oneapi::math::blas::column_major {
sycl::event omatadd(sycl::queue &queue,
oneapi::math::transpose transa,
oneapi::math::transpose transb,
std::int64_t m,
std::int64_t n,
value_or_pointer<T> alpha,
const T *a,
std::int64_t lda,
value_or_pointer<T> beta,
const T *b,
std::int64_t ldb,
T *c,
std::int64_t ldc,
const std::vector<sycl::event> &dependencies = {});
}
namespace oneapi::math::blas::row_major {
sycl::event omatadd(sycl::queue &queue,
oneapi::math::transpose transa,
oneapi::math::transpose transb,
std::int64_t m,
std::int64_t n,
value_or_pointer<T> alpha,
const T *a,
std::int64_t lda,
value_or_pointer<T> beta,
const T *b,
std::int64_t ldb,
T *c,
std::int64_t ldc,
const std::vector<sycl::event> &dependencies = {});
}
Input Parameters
- queue
The queue where the routine should be executed.
- transa
Specifies op(
A
), the transposition operation applied to the matrixA
. See oneMath defined datatypes for more details.- transb
Specifies op(
B
), the transposition operation applied to the matrixB
. See oneMath defined datatypes for more details.- m
Number of rows for the result matrix
C
. Must be at least zero.- n
Number of columns for the result matrix
C
. Must be at least zero.- alpha
Scaling factor for the matrix
A
. See Scalar Arguments in BLAS for more details.- a
Array holding the input matrix
A
.transa
=transpose::nontrans
transa
=transpose::trans
ortransa
=transpose::conjtrans
Column major
A
ism
xn
matrix. Size of arraya
must be at leastlda
*n
A
isn
xm
matrix. Size of arraya
must be at leastlda
*m
Row major
A
ism
xn
matrix. Size of arraya
must be at leastlda
*m
A
isn
xm
matrix. Size of arraya
must be at leastlda
*n
- lda
The leading dimension of the matrix
A
. It must be positive.transa
=transpose::nontrans
transa
=transpose::trans
ortransa
=transpose::conjtrans
Column major
lda
must be at leastm
.lda
must be at leastn
.Row major
lda
must be at leastn
.lda
must be at leastm
.- beta
Scaling factor for the matrices
B
. See Scalar Arguments in BLAS for more details.- b
Array holding the input matrices
B
.transb
=transpose::nontrans
transb
=transpose::trans
ortransb
=transpose::conjtrans
Column major
B
ism
xn
matrix. Size of arrayb
must be at leastldb
*n
B
isn
xm
matrix. Size of arrayb
must be at leastldb
*m
Row major
B
ism
xn
matrix. Size of arrayb
must be at leastldb
*m
B
isn
xm
matrix. Size of arrayb
must be at leastldb
*n
- ldb
The leading dimension of the
B
matrix. It must be positive.transb
=transpose::nontrans
transb
=transpose::trans
ortransb
=transpose::conjtrans
Column major
ldb
must be at leastm
.ldb
must be at leastn
.Row major
ldb
must be at leastn
.ldb
must be at leastm
.- c
Array holding the output matrix
C
.Column major
C
ism
xn
matrix. Size of arrayc
must be at leastldc
*n
Row major
C
ism
xn
matrix. Size of arrayc
must be at leastldc
*m
- ldc
Leading dimension of the
C
matrix. If matrices are stored using column major layout,ldc
must be at leastm
. If matrices are stored using row major layout,ldc
must be at leastn
. Must be positive.- dependencies
List of events to wait for before starting computation, if any. If omitted, defaults to no dependencies.
Output Parameters
- c
Output array, overwritten by
alpha
* op(A
) +beta
* op(B
).
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::device_bad_alloc
Parent topic: BLAS-like Extensions