34 const idx_t m =
C.nrows();
35 const idx_t n =
C.ncols();
36 const idx_t
k = (
transA == Op::NoTrans) ?
A.ncols() :
A.nrows();
37 const idx_t nx =
C.get_nx();
38 const idx_t ny =
C.get_ny();
39 const idx_t
nz = (
transA == Op::NoTrans) ?
A.get_ny() :
A.get_nx();
42 if (m == 0 || n == 0)
return;
61 for (idx_t ix = 0; ix < nx; ++ix) {
62 for (idx_t iy = 0; iy < ny; ++iy) {
63 if (
transA == Op::NoTrans) {
64 if (
transB == Op::NoTrans) {
65 starpu::insert_task_gemm<TA, TB, TC>(
67 beta,
C.tile(ix, iy));
69 starpu::insert_task_gemm<TA, TB, TC>(
71 B_.tile(
iz, iy),
one,
C.tile(ix, iy));
74 starpu::insert_task_gemm<TA, TB, TC>(
76 beta,
C.tile(ix, iy));
78 starpu::insert_task_gemm<TA, TB, TC>(
80 B_.tile(iy,
iz),
one,
C.tile(ix, iy));
84 if (
transB == Op::NoTrans) {
85 starpu::insert_task_gemm<TA, TB, TC>(
87 beta,
C.tile(ix, iy));
89 starpu::insert_task_gemm<TA, TB, TC>(
91 B_.tile(
iz, iy),
one,
C.tile(ix, iy));
94 starpu::insert_task_gemm<TA, TB, TC>(
96 beta,
C.tile(ix, iy));
98 starpu::insert_task_gemm<TA, TB, TC>(
100 B_.tile(iy,
iz),
one,
C.tile(ix, iy));
void gemm(Op transA, Op transB, const alpha_t &alpha, const matrixA_t &A, const matrixB_t &B, const beta_t &beta, matrixC_t &C)
General matrix-matrix multiply:
Definition gemm.hpp:61
#define tlapack_check(cond)
Throw an error if cond is false.
Definition exceptionHandling.hpp:98
typename traits::real_type_traits< Types..., int >::type real_type
The common real type of the list of types.
Definition scalar_type_traits.hpp:113