p?hemm
p?hemm
Performs a scalar-matrix-matrix product (one matrix operand is Hermitian) and adds the result to a scalar-matrix product.
Syntax
void pchemm
(
const char
*side
,
const char
*uplo
,
const MKL_INT
*m
,
const MKL_INT
*n
,
const MKL_Complex8
*alpha
,
const MKL_Complex8
*a
,
const MKL_INT
*ia
,
const MKL_INT
*ja
,
const MKL_INT
*desca
,
const MKL_Complex8
*b
,
const MKL_INT
*ib
,
const MKL_INT
*jb
,
const MKL_INT
*descb
,
const MKL_Complex8
*beta
,
MKL_Complex8
*c
,
const MKL_INT
*ic
,
const MKL_INT
*jc
,
const MKL_INT
*descc
);
void pzhemm
(
const char
*side
,
const char
*uplo
,
const MKL_INT
*m
,
const MKL_INT
*n
,
const MKL_Complex16
*alpha
,
const MKL_Complex16
*a
,
const MKL_INT
*ia
,
const MKL_INT
*ja
,
const MKL_INT
*desca
,
const MKL_Complex16
*b
,
const MKL_INT
*ib
,
const MKL_INT
*jb
,
const MKL_INT
*descb
,
const MKL_Complex16
*beta
,
MKL_Complex16
*c
,
const MKL_INT
*ic
,
const MKL_INT
*jc
,
const MKL_INT
*descc
);
Include Files
- mkl_pblas.h
Description
The
p?hemm
routines
perform a matrix-matrix operation with distributed matrices. The operation is defined as sub(C):=alpha*sub(A)*sub(B)+ beta*sub(C),
or
sub(C):=alpha*sub(B)*sub(A)+ beta*sub(C),
where:
alpha
and beta
are scalars,sub(
is a Hermitian
distributed matrix, A
)sub(
,
if A
)=A
(ia
:ia
+m
-1, ja
:ja
+m
-1)side
= 'L'
sub(
,
if A
)=A
(ia
:ia
+n
-1, ja
:ja
+n
-1)side
= 'R'
sub(
and B
)sub(
are C
)m
-by-n
distributed matrices.sub(
,
B
)=B
(ib
:ib
+m
-1, jb
:jb
+n
-1)sub(
.C
)=C
(ic
:ic
+m
-1, jc
:jc
+n
-1)Input Parameters
- side
- (global) Specifies whether the Hermitian distributed matrixsub(appears on the left or right in the operation:A)iforside='L''l', thensub(;C) :=alpha*sub(A) *sub(B) +beta*sub(C)iforside='R''r', thensub(.C) :=alpha*sub(B) *sub(A) +beta*sub(C)
- uplo
- (global) Specifies whether the upper or lower triangular part of the Hermitian distributed matrixsub(is used:A)iforuplo='U''u', then the upper triangular part is used;iforuplo='L''l', then the lower triangular part is used.
- m
- (global) Specifies the number of rows of the distribute submatrixsub(,C)m≥0.
- n
- (global) Specifies the number of columns of the distribute submatrixsub(,C)n≥0.
- alpha
- (global)Specifies the scalaralpha.
- a
- (local)Array, size(.lld_a, LOCq(ja+na-1))Before entry this array must contain the local pieces of the symmetric distributed matrix sub(A), such that whenoruplo='U''u', thena-by-naupper triangular part of the distributed matrixsub(must contain the upper triangular part of the Hermitian distributed matrix and the strictly lower triangular part ofA)sub(is not referenced, and whenA)oruplo='L''l', thena-by-nalower triangular part of the distributed matrixsub(must contain the lower triangular part of the Hermitian distributed matrix and the strictly upper triangular part ofA)sub(is not referenced.A)
- ia,ja
- (global) The row and column indices in the distributed matrixAindicating the first row and the first column of the submatrixsub(, respectivelyA)
- desca
- (global and local) array of dimension 9. The array descriptor of the distributed matrixA.
- b
- (local)Array, size(. Before entry this array must contain the local pieces of the distributed matrixlld_b, LOCq(jb+n-1) )sub(.B)
- ib,jb
- (global) The row and column indices in the distributed matrixBindicating the first row and the first column of the submatrixsub(, respectively.B)
- descb
- (global and local) array of dimension 9. The array descriptor of the distributed matrixB.
- beta
- (global)Specifies the scalarbeta.Whenbetais set to zero, then sub(C) need not be set on input.
- c
- (local)Array, size(. Before entry this array must contain the local pieces of the distributed matrixlld_c, LOCq(jc+n-1))sub(.C)
- ic,jc
- (global) The row and column indices in the distributed matrixCindicating the first row and the first column of the submatrixsub(, respectivelyC)
- descc
- (global and local) array of dimension 9. The array descriptor of the distributed matrixC.
Output Parameters
- c
- Overwritten by them-by-nupdated distributed matrix.