trmm#
Computes a matrix-matrix product where one input matrix is triangular and one input matrix is general.
Description
The trmm
routines compute a scalar-matrix-matrix product where one of
the matrices in the multiplication is triangular. The argument
left_right
determines if the triangular matrix, A
, is on the
left of the multiplication (left_right
= side::left
) or on
the right (left_right
= side::right
). Depending on
left_right
. The operation is defined as:
or
where:
op(A
) is one of op(A
) = A, or op(A
) = A
T,
or op(A
) = A
H,
alpha
is a scalar,
A
is a triangular matrix, and B
is a general matrix.
Here B
is m
x n
and A
is either m
x m
or
n
x n
, depending on left_right
.
trmm
supports the following precisions.
T
float
double
std::complex<float>
std::complex<double>
trmm (Buffer Version)#
Syntax
namespace oneapi::mkl::blas::column_major {
void trmm(sycl::queue &queue,
onemkl::uplo upper_lower,
onemkl::transpose transa,
onemkl::diag unit_diag,
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::mkl::blas::row_major {
void trmm(sycl::queue &queue,
onemkl::uplo upper_lower,
onemkl::transpose transa,
onemkl::diag unit_diag,
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.
- left_right
Specifies whether
A
is on the left side of the multiplication (side::left
) or on the right side (side::right
). See oneMKL Defined Datatypes for more details.- uplo
Specifies whether the matrix
A
is upper or lower triangular. See oneMKL Defined Datatypes for more details.- trans
Specifies op(
A
), the transposition operation applied toA
. See oneMKL Defined Datatypes for more details.- unit_diag
Specifies whether
A
is assumed to be unit triangular (all diagonal elements are 1). See oneMKL Defined Datatypes for more details.- m
Specifies the number of rows of
B
. The value ofm
must be at least zero.- n
Specifies the number of columns of
B
. The value ofn
must be at least zero.- alpha
Scaling factor for the matrix-matrix product.
- a
Buffer holding input matrix
A
. Must have size at leastlda
*m
ifleft_right
=side::left
, orlda
*n
ifleft_right
=side::right
. See Matrix Storage for more details.- lda
Leading dimension of
A
. Must be at leastm
ifleft_right
=side::left
, and at leastn
ifleft_right
=side::right
. Must be positive.- b
Buffer holding input/output matrix
B
. Must have size at leastldb
*n
if column major layout is used to store matrices or at leastldb
*m
if row major layout is used to store matrices. See Matrix Storage for more details.- ldb
Leading dimension of
B
. It must be positive and at leastm
if column major layout is used to store matrices or at leastn
if row major layout is used to store matrices.
Output Parameters
- b
Output buffer, overwritten by
alpha
*op(A
)*B
oralpha
*B
*op(A
).
Notes
If alpha
= 0, matrix B
is set to zero, and A
and B
do
not need to be initialized at entry.
trmm (USM Version)#
Syntax
namespace oneapi::mkl::blas::column_major {
sycl::event trmm(sycl::queue &queue,
onemkl::uplo upper_lower,
onemkl::transpose transa,
onemkl::diag unit_diag,
std::int64_t m,
std::int64_t n,
T alpha,
const T* a,
std::int64_t lda,
T* b,
std::int64_t ldb,
const std::vector<sycl::event> &dependencies = {})
}
namespace oneapi::mkl::blas::row_major {
sycl::event trmm(sycl::queue &queue,
onemkl::uplo upper_lower,
onemkl::transpose transa,
onemkl::diag unit_diag,
std::int64_t m,
std::int64_t n,
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 should be executed.
- left_right
Specifies whether
A
is on the left side of the multiplication (side::left
) or on the right side (side::right
). See oneMKL Defined Datatypes for more details.- uplo
Specifies whether the matrix
A
is upper or lower triangular. See oneMKL Defined Datatypes for more details.- trans
Specifies op(
A
), the transposition operation applied toA
. See oneMKL Defined Datatypes for more details.- unit_diag
Specifies whether
A
is assumed to be unit triangular (all diagonal elements are 1). See oneMKL Defined Datatypes for more details.- m
Specifies the number of rows of
B
. The value ofm
must be at least zero.- n
Specifies the number of columns of
B
. The value ofn
must be at least zero.- alpha
Scaling factor for the matrix-matrix product.
- a
Pointer to input matrix
A
. Must have size at leastlda
*m
ifleft_right
=side::left
, orlda
*n
ifleft_right
=side::right
. See Matrix Storage for more details.- lda
Leading dimension of
A
. Must be at leastm
ifleft_right
=side::left
, and at leastn
ifleft_right
=side::right
. Must be positive.- b
Pointer to input/output matrix
B
. Must have size at leastldb
*n
if column major layout is used to store matrices or at leastldb
*m
if row major layout is used to store matrices. See Matrix Storage for more details.- ldb
Leading dimension of
B
. It must be positive and at leastm
if column major layout is used to store matrices or at leastn
if row major layout is used to store matrices.- dependencies
List of events to wait for before starting computation, if any. If omitted, defaults to no dependencies.
Output Parameters
- b
Pointer to the output matrix, overwritten by
alpha
*op(A
)*B
oralpha
*B
*op(A
).
Notes
If alpha
= 0, matrix B
is set to zero, and A
and B
do not need to be initialized at entry.
Return Values
Output event to wait on to ensure computation is complete.
Parent topic: BLAS Level 3 Routines