PLASMA
2.8.0
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
|
int CORE_slarfb_gemm | ( | PLASMA_enum | side, |
PLASMA_enum | trans, | ||
int | direct, | ||
int | storev, | ||
int | M, | ||
int | N, | ||
int | K, | ||
const float * | V, | ||
int | LDV, | ||
const float * | T, | ||
int | LDT, | ||
float * | C, | ||
int | LDC, | ||
float * | WORK, | ||
int | LDWORK | ||
) |
CORE_slarfb_gemm applies a complex block reflector H or its transpose H' to a complex M-by-N matrix C, from either the left or the right. this kernel is similar to the lapack slarfb but it do a full gemm on the triangular Vs assuming that the upper part of Vs is zero and ones are on the diagonal. It is also based on the fact that a gemm on a small block of k reflectors is faster than a trmm on the triangular (k,k) + gemm below.
NOTE THAT: Only Columnwise/Forward cases are treated here.
[in] | side |
|
[in] | trans |
|
[in] | direct | Indicates how H is formed from a product of elementary reflectors
|
[in] | storev | Indicates how the vectors which define the elementary reflectors are stored:
|
[in] | M | The number of rows of the matrix C. |
[in] | N | The number of columns of the matrix C. |
[in] | K | The order of the matrix T (= the number of elementary reflectors whose product defines the block reflector). |
[in] | V | REAL array, dimension (LDV,K) if storev = 'C' (LDV,M) if storev = 'R' and side = 'L' (LDV,N) if storev = 'R' and side = 'R' The matrix V. See further details. |
[in] | LDV | The leading dimension of the array V. If storev = 'C' and side = 'L', LDV >= max(1,M); if storev = 'C' and side = 'R', LDV >= max(1,N); if storev = 'R', LDV >= K. |
[in] | T | The triangular K-by-K matrix T in the representation of the block reflector. T is upper triangular by block (economic storage); The rest of the array is not referenced. |
[in] | LDT | The leading dimension of the array T. LDT >= K. |
[in,out] | C | REAL array, dimension (LDC,N) On entry, the M-by-N matrix C. On exit, C is overwritten by H*C or H'*C or C*H or C*H'. |
[in] | LDC | The leading dimension of the array C. LDC >= max(1,M). |
[in,out] | WORK | (workspace) REAL array, dimension (LDWORK,K). |
[in] | LDWORK | The dimension of the array WORK. If side = PlasmaLeft, LDWORK >= max(1,N); if side = PlasmaRight, LDWORK >= max(1,M). |
PLASMA_SUCCESS | successful exit |
<0 | if -i, the i-th argument had an illegal value |