PBLAS Home Page
Parallel Basic Linear Algebra Subprograms (PBLAS)
All routines appear in the order in which they are listed on the PBLAS
Quick Reference Card.
Clicking on the name of a routine will take you to a description of
that routine and its parameters.
Routine names are type-dependent. The lower case 'v' is replaced as
shown in the following table to arrive at the correct routine name for
a given data type:
v MEANING
----- ------------------------------
S Single precision real data
D Double precision real data
C Single precision complex data
Z Double precision complex data
Notes:
A description vector is associated with each 2D block-cyclicly distributed
matrix. This vector stores the information required to establish the mapping
between a matrix entry and its corresponding process and memory location.
In the following comments, the character _ should be read as "of
the distributed matrix". Let A be a generic term for any 2D block
cyclicly distributed matrix. Its description vector is DESC_A:
NOTATION STORED IN EXPLANATION
--------------- ------------- ---------------------------------------
DT_A (global) desc_A[DT_] The descriptor type.
CTXT_A (global) desc_A[CTXT_] The BLACS context handle, indicating
the BLACS process grid A is distribu-
ted over. The context itself is global,
but the handle (the integer value) may
vary.
M_A (global) desc_A[M_] The number of rows in the distributed
matrix.
N_A (global) desc_A[N_] The number of columns in the distribu-
ted matrix.
MB_A (global) desc_A[MB_] The blocking factor used to distribute
the rows of the matrix.
NB_A (global) desc_A[NB_] The blocking factor used to distribute
the columns of the matrix.
RSRC_A (global) desc_A[RSRC_] The process row over which the first
row of the matrix is distributed.
CSRC_A (global) desc_A[CSRC_] The process column over which the first
column of the matrix is distributed.
LLD_A (local) desc_A[LLD_] The leading dimension of the local
array storing the local blocks of the
distributed matrix A.
LLD_A >= MAX(1,LOCp(M_A)).
Let K be the number of rows or columns of a distributed matrix, and
assume that its process grid has dimension p x q. LOCp( K ) denotes the
number of elements of K that a process would receive if K were distributed
over the p processes of its process column.
Similarly, LOCq( K ) denotes the number of elements of K that a process
would receive if K were distributed over the q processes of its process
row.
The values of LOCp() and LOCq() may be determined via a call to the
ScaLAPACK tool function, NUMROC.
- LOCp( M ) = NUMROC( M, MB_A, MYROW, RSRC_A, NPROW ),
- LOCq( N ) = NUMROC( N, NB_A, MYCOL, CSRC_A, NPCOL ).
Because vectors may be seen as particular matrices, a distributed vector
is considered to be a distributed matrix.
Level 1 PBLAS
PvSWAP( N, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY, INCY )
PvSCAL( N, ALPHA, X, IX, JX, DESCX, INCX )
PvCOPY( N, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY, INCY )
PvAXPY( N, ALPHA, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY, INCY )
PvDOT ( N, DOT, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY, INCY )
PvDOTU( N, DOTC, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY, INCY )
PvDOTC( N, DOTU, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY, INCY )
PvNRM2( N, NORM2, X, IX, JX, DESCX, INCX )
PvASUM( N, ASUM, X, IX, JX, DESCX, INCX )
PvAMAX( N, AMAX, INDX, X, IX, JX, DESCX, INCX )
Level 2 PBLAS
PvGEMV( TRANS, M, N, ALPHA, A, IA, JA, DESCA, X, IX, JX, DESCX, INCX, BETA, Y, IY, JY, DESCY, INCY )
PvHEMV( UPLO, M, N, ALPHA, A, IA, JA, DESCA, X, IX, JX, DESCX, INCX, BETA, Y, IY, JY, DESCY, INCY )
PvSYMV( UPLO, M, N, ALPHA, A, IA, JA, DESCA, X, IX, JX, DESCX, INCX, BETA, Y, IY, JY, DESCY, INCY )
PvTRMV( UPLO, TRANS, DIAG, M, N, A, IA, JA, DESCA, X, IX, JX, DESCX, INCX )
PvTRSV( UPLO, TRANS, DIAG, N, A, IA, JA, DESCA, X, IX, JX, DESCX, INCX )
PvGER ( M, N, ALPHA, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY, INCY, A, IA, JA, DESCA )
PvGERU ( M, N, ALPHA, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY, INCY, A, IA, JA, DESCA )
PvGERC ( M, N, ALPHA, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY, INCY, A, IA, JA, DESCA )
PvHER ( UPLO, N, ALPHA, X, IX, JX, DESCX, INCX, A, IA, JA, DESCA )
PvHER2 (UPLO, N, ALPHA, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY, INCY, A, IA, JA, DESCA )
PvSYR ( UPLO, N, ALPHA, X, IX, JX, DESCX, INCX, A, IA, JA, DESCA )
PvSYR2 (UPLO, N, ALPHA, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY, INCY, A, IA, JA, DESCA )
Level 3 PBLAS
PvGEMM( TRANSA, TRANSB, M, N, K, ALPHA, A, IA, JA, DESCA, B, IB, JB, DESCB, BETA, C, IC, JC, DESCC )
PvSYMM( SIDE, UPLO, M, N, ALPHA, A, IA, JA, DESCA, B, IB, JB, DESCB, BETA, C, IC, JC, DESCC )
PvHEMM( SIDE, UPLO, M, N, ALPHA, A, IA, JA, DESCA, B, IB, JB, DESCB, BETA, C, IC, JC, DESCC )
PvSYRK( UPLO, TRANS, N, K, ALPHA, A, IA, JA, DESCA, BETA, C, IC, JC, DESCC )
PvHERK( UPLO, TRANS, N, K, ALPHA, A, IA, JA, DESCA, BETA, C, IC, JC, DESCC )
PvSYR2K( UPLO, TRANS, N, K, ALPHA, A, IA, JA, DESCA, B, IB, JB, DESCB, BETA, C, IC, JC, DESCC )
PvHER2K( UPLO, TRANS, N, K, ALPHA, A, IA, JA, DESCA, B, IB, JB, DESCB, BETA, C, IC, JC, DESCC )
PvTRAN( M, N, ALPHA, A, IA, JA, DESCA, BETA, C, IC, JC, DESCC )
PvTRANU( M, N, ALPHA, A, IA, JA, DESCA, BETA, C, IC, JC, DESCC )
PvTRANC( M, N, ALPHA, A, IA, JA, DESCA, BETA, C, IC, JC, DESCC )
PvTRMM( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, IA, JA, DESCA, B, IB, JB, DESCB )
PvTRSM( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, IA, JA, DESCA, B, IB, JB, DESCB )
PvSWAP
SUBROUTINE PvSWAP( N, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY, INCY
)
Purpose
PvSWAP swaps two distributed vectors,
- sub( Y ) := sub( X ) and sub( X ) := sub( Y )
where sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
sub( Y ) denotes Y(IY,JY:JY+N-1) if INCY = M_Y,
Y(IY:IY+N-1,JY) if INCY = 1 and INCY <> M_Y.
Arguments
- N
- (global input) INTEGER
The length of the distributed vectors to be swapped. N >= 0.
- X
- (local input/local output) array of dimension ( (JX-1)*M_X + IX + (
N - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ). On
exit sub( X ) is overwritten by sub( Y ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
- Y
- (local input/local output) array of dimension ( (JY-1)*M_Y + IY + (
N - 1 )*abs( INCY ) )
This array contains the entries of the distributed vector sub( Y ). On
exit sub( Y ) is overwritten by sub( X ).
- IY
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix Y to operate
on.
- JY
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix Y to
operate on.
- DESCY
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix Y.
- INCY
- (global input) INTEGER
The global increment for the elements of Y. Only two values of INCY are
supported in this version, namely 1 and M_Y.
PvSCAL
SUBROUTINE PvSCAL( N, ALPHA, X, IX, JX, DESCX, INCX )
Purpose
PvSCAL multiplies an N-element real distributed vector sub( X ) by
the real scalar alpha,
where sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X.
Arguments
- N
- (global input) INTEGER
The number of components of the distributed vector sub( X ). N >= 0.
- ALPHA
- (global input) REAL/COMPLEX
The scalar used to multiply each component of sub( X ).
- X
- (local input/local output) array of dimension ( (JX-1)*M_X + IX + (
N - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
PvCOPY
SUBROUTINE PvCOPY( N, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY, INCY
)
Purpose
PvCOPY copies one distributed vector into another,
where sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
sub( Y ) denotes Y(IY,JY:JY+N-1) if INCY = M_Y,
Y(IY:IY+N-1,JY) if INCY = 1 and INCY <> M_Y.
Arguments
- N
- (global input) INTEGER
The length of the distributed vectors to be copied. N >= 0.
- X
- (local input/local output) array of dimension ( (JX-1)*M_X + IX + (
N - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
- Y
- (local input/local output) array of dimension ( (JY-1)*M_Y + IY + (
N - 1 )*abs( INCY ) )
This array contains the entries of the distributed vector sub( Y ). On
exit sub( Y ) is overwritten by sub( X ).
- IY
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix Y to operate
on.
- JY
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix Y to
operate on.
- DESCY
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix Y.
- INCY
- (global input) INTEGER
The global increment for the elements of Y. Only two values of INCY are
supported in this version, namely 1 and M_Y.
PvAXPY
SUBROUTINE PvAXPY( N, ALPHA, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY,
INCY )
Purpose
PvAXPY adds one distributed vector to another,
- sub( Y ) := sub( Y ) + alpha * sub( X )
where sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
sub( Y ) denotes Y(IY,JY:JY+N-1) if INCY = M_Y,
Y(IY:IY+N-1,JY) if INCY = 1 and INCY <> M_Y.
Arguments
- N
- (global input) INTEGER
The length of the distributed vectors to be added. N >= 0.
- ALPHA
- (global input) REAL/COMPLEX
The scalar used to multiply each component of sub( X ).
- X
- (local input/local output) array of dimension ( (JX-1)*M_X + IX + (
N - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
- Y
- (local input/local output) array of dimension ( (JY-1)*M_Y + IY + (
N - 1 )*abs( INCY ) )
This array contains the entries of the distributed vector sub( Y ). On
exit sub( Y ) is overwritten by sub( Y ) + alpha*sub( X ).
- IY
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix Y to operate
on.
- JY
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix Y to
operate on.
- DESCY
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix Y.
- INCY
- (global input) INTEGER
The global increment for the elements of Y. Only two values of INCY are
supported in this version, namely 1 and M_Y.
PvDOT
SUBROUTINE PvDOT( N, DOT, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY,
INCY )
Purpose
PvDOT forms the dot product of two distributed vectors,
- dot := sub( X )**T * sub( Y )
where sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
sub( Y ) denotes Y(IY,JY:JY+N-1) if INCY = M_Y,
Y(IY:IY+N-1,JY) if INCY = 1 and INCY <> M_Y.
Arguments
- N
- (global input) INTEGER
The length of the distributed vectors to be multiplied. N >= 0.
- DOT
- (local output) REAL/COMPLEX
The dot product of sub( X ) and sub( Y ) only in their scope.
- X
- (local input/local output) array of dimension ( (JX-1)*M_X + IX + (
N - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
- Y
- (local input/local output) array of dimension ( (JY-1)*M_Y + IY + (
N - 1 )*abs( INCY ) )
This array contains the entries of the distributed vector sub( Y ).
- IY
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix Y to operate
on.
- JY
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix Y to
operate on.
- DESCY
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix Y.
- INCY
- (global input) INTEGER
The global increment for the elements of Y. Only two values of INCY are
supported in this version, namely 1 and M_Y.
PvDOTU
SUBROUTINE PvDOTU( N, DOTU, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY,
INCY )
Purpose
PvDOTU forms the dot product of two distributed vectors,
- dotu := sub( X )**T * sub( Y )
where sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
sub( Y ) denotes Y(IY,JY:JY+N-1) if INCY = M_Y,
Y(IY:IY+N-1,JY) if INCY = 1 and INCY <> M_Y.
Arguments
- N
- (global input) INTEGER
The length of the distributed vectors to be multiplied. N >= 0.
- DOTU
- (local output) COMPLEX
The dot product of sub( X ) and sub( Y ) only in their scope.
- X
- (local input/local output) COMPLEX array of dimension ( (JX-1)*M_X
+ IX + ( N - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
- Y
- (local input/local output) COMPLEX array of dimension ( (JY-1)*M_Y
+ IY + ( N - 1 )*abs( INCY ) )
This array contains the entries of the distributed vector sub( Y ).
- IY
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix Y to operate
on.
- JY
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix Y to
operate on.
- DESCY
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix Y.
- INCY
- (global input) INTEGER
The global increment for the elements of Y. Only two values of INCY are
supported in this version, namely 1 and M_Y.
PvDOTC
SUBROUTINE PvDOTC( N, DOTC, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY,
INCY )
Purpose
PvDOTC forms the dot product of two distributed vectors,
- dotc := sub( X )**T * sub( Y )
where sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
sub( Y ) denotes Y(IY,JY:JY+N-1) if INCY = M_Y,
Y(IY:IY+N-1,JY) if INCY = 1 and INCY <> M_Y.
Arguments
- N
- (global input) INTEGER
The length of the distributed vectors to be multiplied. N >= 0.
- DOTC
- (local output) COMPLEX
The dot product of sub( X ) and sub( Y ) only in their scope.
- X
- (local input/local output) COMPLEX array of dimension ( (JX-1)*M_X
+ IX + ( N - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
- Y
- (local input/local output) COMPLEX array of dimension ( (JY-1)*M_Y
+ IY + ( N - 1 )*abs( INCY ) )
This array contains the entries of the distributed vector sub( Y ).
- IY
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix Y to operate
on.
- JY
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix Y to
operate on.
- DESCY
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix Y.
- INCY
- (global input) INTEGER
The global increment for the elements of Y. Only two values of INCY are
supported in this version, namely 1 and M_Y.
PvNRM2
SUBROUTINE PvNRM2( N, NORM2, X, IX, JX, DESCX, INCX )
Purpose
PvNRM2 returns the 2-norm of a distributed vector sub( X ),
where sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X.
Arguments
- N
- (global input) INTEGER
The length of the distributed vectors to be multiplied. N >= 0.
- NORM2
- (local output) REAL/COMPLEX
The dot product of sub( X ) and sub( Y ) only in their scope.
- X
- (local input/local output) REAL/COMPLEX array of dimension ( (JX-1)*M_X
+ IX + ( N - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
PvASUM
SUBROUTINE PvASUM( N, ASUM, X, IX, JX, DESCX, INCX )
Purpose
PvASUM returns the sum of absolute values of the entries of a distributed
vector sub( X ),
where sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X.
Arguments
- N
- (global input) INTEGER
The length of the distributed vectors to be multiplied. N >= 0.
- ASUM
- (local output) REAL/COMPLEX
The sum of absolute values of the distributed vector sub( X ) only in its
scope.
- X
- (local input/local output) REAL/COMPLEX array of dimension ( (JX-1)*M_X
+ IX + ( N - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
PvAMAX
SUBROUTINE PvAMAX( N, AMAX, INDX, X, IX, JX, DESCX, INCX )
Purpose
PvAMAX computes the global index of the maximum element in absolute
value of a distributed vector sub( X ). The global index is returned in
INDX and the value is returned in AMAX,
where sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X.
Arguments
- N
- (global input) INTEGER
The length of the distributed vectors to be multiplied. N >= 0.
- AMAX
- (global output) REAL/COMPLEX
The absolute value of the largest entry of the distributed vector sub(
X ) only in the scope of sub( X ).
- INDX
- (global output) INTEGER
The global index of the maximum element in absolute value of the distributed
vector sub( X ) only in its scope.
- X
- (local input/local output) REAL/COMPLEX array of dimension ( (JX-1)*M_X
+ IX + ( N - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
PvGEMV
SUBROUTINE PvGEMV( TRANS, M, N, ALPHA, A, IA, JA, DESCA, X, IX, JX,
DESCX, INCX, BETA, Y, IY, JY, DESCY, INCY )
Purpose
PvGEMV performs one of the distributed matrix-vector operations
- sub( Y ) := alpha*sub( A ) * sub( X ) + beta*sub( Y ), or
- sub( Y ) := alpha*sub( A )' * sub( X ) + beta*sub( Y ),
where sub( A ) denotes A(IA:IA+M-1,JA:JA+N-1),
sub( X ) denotes if TRANS = 'N',
X(IX:IX,JX:JX+N-1), if INCX = M_X,
X(IX:IX+N-1,JX:JX), if INCX = 1 and INCX <> M_X,
else
X(IX:IX,JX:JX+M-1), if INCX = M_X,
X(IX:IX+M-1,JX:JX), if INCX = 1 and INCX <> M_X,
end if
sub( Y ) denotes if trans = 'N',
Y(IY:IY,JY:JY+M-1), if INCY = M_Y,
Y(IY:IY+M-1,JY:JY), if INCY = 1 and INCY <> M_Y,
else
Y(IY:IY,JY:JY+N-1), if INCY = M_Y,
Y(IY:IY+N-1,JY:JY), if INCY = 1 and INCY <> M_Y,
end if
alpha and beta are scalars, and sub( X ) and sub( Y ) are distributed
vectors and sub( A ) is a M-by-N distributed submatrix.
Arguments
- TRANS
- (global input) CHARACTER
On entry, TRANS specifies the operation to be performed as follows:
- if TRANS = 'N',
- sub( Y ) := alpha*sub( A ) * sub( X ) + beta*sub( Y ),
- else if TRANS = 'T',
- sub( Y ) := alpha*sub( A )' * sub( X ) + beta*sub( Y ),
- else if TRANS = 'C',
- sub( Y ) := alpha*sub( A )' * sub( X ) + beta*sub( Y ).
- M
- (global input) INTEGER
The number of rows to be operated on i.e the number of rows of the distributed
submatrix sub( A ). M >= 0.
- N
- (global input) INTEGER
The number of columns to be operated on i.e the number of columns of the
distributed submatrix sub( A ). N >= 0.
- ALPHA
- (global input) REAL/COMPLEX
On entry, ALPHA specifies the scalar alpha.
- A
- (local input) array of dimension (LLD_A, LOCq(JA+N-1))
This array contains the local pieces of the distributed matrix sub( A ).
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- X
- (local input/local output) array of dimension at least
if TRANS = 'N',
- ( (JX-1)*M_X + IX + ( N - 1 )*abs( INCX ) )
else
- ( (JX-1)*M_X + IX + ( M - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
- BETA
- (global input) REAL/COMPLEX
On entry, BETA specifies the scalar beta. When BETA is supplied as zero
then sub( Y ) need not be set on input.
- Y
- (local input/local output) array of dimension at least
if TRANS = 'N',
- ( (JY-1)*M_Y + IY + ( M - 1 )*abs( INCY ) )
else
- ( (JY-1)*M_Y + IY + ( N - 1 )*abs( INCY ) )
This array contains the entries of the distributed vector sub( Y ).
On exit, sub( Y ) is overwritten by the updated distributed vector sub(
Y ).
- IY
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix Y to operate
on.
- JY
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix Y to
operate on.
- DESCY
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix Y.
- INCY
- (global input) INTEGER
The global increment for the elements of Y. Only two values of INCY are
supported in this version, namely 1 and M_Y.
PvHEMV
SUBROUTINE PvHEMV( UPLO, N, ALPHA, A, IA, JA, DESCA, X, IX, JX, DESCX,
INCX, BETA, Y, IY, JY, DESCY, INCY )
Purpose
PvHEMV performs the distributed matrix-vector operation
- sub( Y ) := alpha*sub( A ) * sub( X ) + beta*sub( Y )
where sub( A ) denotes A(IA:IA+M-1,JA:JA+N-1),
sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
sub( Y ) denotes Y(IY,JY:JY+N-1) if INCY = M_Y,
Y(IY:IY+N-1,JY) if INCY = 1 and INCY <> M_Y.
alpha and beta are scalars, sub( X ) and sub( Y ) are N element distributed
vectors and sub( A ) is an N-by-N Hermitian distributed matrix.
Arguments
- UPLO
- (global input) CHARACTER
On entry, UPLO specifies whether the upper or lower triangular part of
the distributed matrix sub( A ) is to be referenced as follows:
- UPLO = 'U' Only the upper triangular part of sub( A ) is to be referenced.
- UPLO = 'L' Only the lower triangular part of sub( A ) is to be referenced.
- N
- (global input) INTEGER
The order of the distributed matrix sub( A ). N >= 0.
- ALPHA
- (global input) COMPLEX
On entry, ALPHA specifies the scalar alpha.
- A
- (local input) COMPLEX array of dimension (LLD_A, LOCq(JA+N-1))
This array contains the local pieces of the distributed matrix sub( A ).
Before entry with UPLO = 'U', the leading N-by-N upper triangular part
of the distributed matrix sub( A ) must and the strictly lower triangular
part of sub( A ) is not referenced.
Before entry with UPLO = 'L', the leading N-by-N lower triangular part
of the distributed matrix sub( A ) must contain the lower triangular part
of the Hermitian matrix and the strictly upper triangular part of sub(
A ) is not referenced.
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- X
- (local input/local output) COMPLEX array of dimension at least ( (JX-1)*M_X
+ IX + ( N - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
- BETA
- (global input) COMPLEX
On entry, BETA specifies the scalar beta. When BETA is supplied as zero
then sub( Y ) need not be set on input.
- Y
- (local input/local output) COMPLEX array of dimension at least ( (JY-1)*M_Y
+ IY + ( N - 1 )*abs( INCY ) )
This array contains the entries of the distributed vector sub( Y ). On
exit, sub( Y ) is overwritten by the updated distributed vector sub( Y
).
- IY
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix Y to operate
on.
- JY
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix Y to
operate on.
- DESCY
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix Y.
- INCY
- (global input) INTEGER
The global increment for the elements of Y. Only two values of INCY are
supported in this version, namely 1 and M_Y.
PvSYMV
SUBROUTINE PvSYMV( UPLO, N, ALPHA, A, IA, JA, DESCA, X, IX, JX, DESCX,
INCX, BETA, Y, IY, JY, DESCY, INCY )
Purpose
PvSYMV performs the distributed matrix-vector operation
- sub( Y ) := alpha*sub( A ) * sub( X ) + beta*sub( Y )
where sub( A ) denotes A(IA:IA+M-1,JA:JA+N-1),
sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
sub( Y ) denotes Y(IY,JY:JY+N-1) if INCY = M_Y,
Y(IY:IY+N-1,JY) if INCY = 1 and INCY <> M_Y.
alpha and beta are scalars, sub( X ) and sub( Y ) are N element distributed
vectors and sub( A ) is an N-by-N symmetric distributed matrix.
Arguments
- UPLO
- (global input) CHARACTER
On entry, UPLO specifies whether the upper or lower triangular part of
the distributed matrix sub( A ) is to be referenced as follows:
- UPLO = 'U' Only the upper triangular part of sub( A ) is to be referenced.
- UPLO = 'L' Only the lower triangular part of sub( A ) is to be referenced.
- N
- (global input) INTEGER
The order of the distributed matrix sub( A ). N >= 0.
- ALPHA
- (global input) REAL
On entry, ALPHA specifies the scalar alpha.
- A
- (local input) REAL array of dimension (LLD_A, LOCq(JA+N-1))
This array contains the local pieces of the distributed matrix sub( A ).
Before entry with UPLO = 'U', the leading N-by-N upper triangular part
of the distributed matrix sub( A ) must and the strictly lower triangular
part of sub( A ) is not referenced.
Before entry with UPLO = 'L', the leading N-by-N lower triangular part
of the distributed matrix sub( A ) must contain the lower triangular part
of the symmetric matrix and the strictly upper triangular part of sub(
A ) is not referenced.
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- X
- (local input/local output) REAL array of dimension at least ( (JX-1)*M_X
+ IX + ( N - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
- BETA
- (global input) REAL
On entry, BETA specifies the scalar beta. When BETA is supplied as zero
then sub( Y ) need not be set on input.
- Y
- (local input/local output) REAL array of dimension at least ( (JY-1)*M_Y
+ IY + ( N - 1 )*abs( INCY ) )
This array contains the entries of the distributed vector sub( Y ). On
exit, sub( Y ) is overwritten by the updated distributed vector sub( Y
).
- IY
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix Y to operate
on.
- JY
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix Y to
operate on.
- DESCY
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix Y.
- INCY
- (global input) INTEGER
The global increment for the elements of Y. Only two values of INCY are
supported in this version, namely 1 and M_Y.
PvTRMV
SUBROUTINE PvTRMV( UPLO, TRANS, DIAG, N, A, IA, JA, DESCA, X, IX,
JX, DESCX, INCX )
Purpose
PvTRMV performs one of the distributed matrix-vector operations
- sub( X ) := sub( A )*sub( X ) or sub( X ) := sub( A )'*sub( X ),
where sub( A ) denotes A(IA:IA+N-1,JA:JA+N-1),
sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
sub( X ) is an N element vector and sub( A ) is an N-by-N unit, or non-unit,
upper or lower triangular distributed matrix.
Arguments
- UPLO
- (global input) CHARACTER
On entry, UPLO specifies whether the upper or lower triangular part of
the distributed matrix sub( A ) is to be referenced as follows:
- UPLO = 'U' Only the upper triangular part of sub( A ) is to be referenced.
- UPLO = 'L' Only the lower triangular part of sub( A ) is to be referenced.
- TRANS
- (global input) CHARACTER
On entry, TRANS specifies the operation to be performed as follows:
- TRANS = 'N' sub( x ) := sub( A )*sub( x ).
- TRANS = 'T' sub( x ) := sub( A )'*sub( x ).
- TRANS = 'C' sub( x ) := sub( A )'*sub( x ).
- DIAG
- (global input) CHARACTER
On entry, DIAG specifies whether or not sub( A ) is unit triangular as
follows:
- DIAG = 'U' sub( A ) is assumed to be unit triangular.
- DIAG = 'N' sub( A ) is not assumed to be unit triangular.
- N
- (global input) INTEGER
The order of the distributed matrix sub( A ). N >= 0.
- A
- (local input) array of dimension (LLD_A, LOCq(JA+N-1))
This array contains the local pieces of the distributed matrix sub( A ).
Before entry with UPLO = 'U', the leading N-by-N upper triangular part
of the distributed matrix sub( A ) must contain the upper triangular distributed
matrix and the strictly lower triangular part of sub( A ) is not referenced.
Before entry with UPLO = 'L', the leading N-by-N lower triangular part
of the distributed matrix sub( A ) must contain the lower triangular distributed
matrix and the strictly upper triangular part of sub( A ) is not referenced.
Note that when DIAG = 'U', the diagonal elements of sub( A ) are not
referenced either, but are assumed to be unity.
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- X
- (local input/local output) array of dimension at least ( (JX-1)*M_X
+ IX + ( N - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
PvTRSV
SUBROUTINE PvTRSV( UPLO, TRANS, DIAG, N, A, IA, JA, DESCA, X, IX,
JX, DESCX, INCX )
Purpose
PvTRSV solves one of the systems of equations
- sub( A )*sub( X ) = b, or sub( A )'*sub( X ) = b,
where sub( A ) denotes A(IA:IA+N-1,JA:JA+N-1),
sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
b and sub( X ) are N element distributed vectors and sub( A ) is an
N-by-N unit, or non-unit, upper or lower triangular distributed matrix.
No test for singularity or near-singularity is included in this routine.
Such tests must be performed before calling this routine.
Arguments
- UPLO
- (global input) CHARACTER
On entry, UPLO specifies whether the distributed matrix sub( A ) is an
upper or lower triangular matrix as follows:
- UPLO = 'U' sub( A ) is an upper triangular distributed matrix.
- UPLO = 'L' sub( A ) is a lower triangular distributed matrix.
- TRANS
- (global input) CHARACTER
On entry, TRANS specifies the operation to be performed as follows:
- TRANS = 'N' sub( A )*sub( X ) = b.
- TRANS = 'T' sub( A )'*sub( X ) = b.
- TRANS = 'C' sub( A )'*sub( X ) = b.
- DIAG
- (global input) CHARACTER
On entry, DIAG specifies whether or not sub( A ) is unit triangular as
follows:
- DIAG = 'U' sub( A ) is assumed to be unit triangular.
- DIAG = 'N' sub( A ) is not assumed to be unit triangular.
- N
- (global input) INTEGER
The order of the distributed matrix sub( A ). N >= 0.
- A
- (local input) array of dimension (LLD_A, LOCq(JA+N-1))
This array contains the local pieces of the distributed matrix sub( A ).
Before entry with UPLO = 'U', the leading N-by-N upper triangular part
of the distributed matrix sub( A ) must contain the upper triangular distributed
matrix and the strictly lower triangular part of sub( A ) is not referenced.
Before entry with UPLO = 'L', the leading N-by-N lower triangular part
of the distributed matrix sub( A ) must contain the lower triangular distributed
matrix and the strictly upper triangular part of sub( A ) is not referenced.
Note that when DIAG = 'U', the diagonal elements of sub( A ) are not
referenced either, but are assumed to be unity.
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- X
- (local input/local output) array of dimension at least ( (JX-1)*M_X
+ IX + ( N - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ). Before
entry, sub( X ) must contain the N element right-hand side distributed
vector b. On exit, sub( X ) is overwritten with the solution vector.
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
PvGER
SUBROUTINE PvGER( M, N, ALPHA, X, IX, JX, DESCX, INCX, Y, IY, JY,
DESCY, INCY, A, IA, JA, DESCA )
Purpose
PvGER performs the rank 1 operation
- sub( A ) := alpha*sub( X )*sub( Y )' + sub( A ),
where sub( A ) denotes A(IA:IA+M-1,JA:JA+N-1),
sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
sub( Y ) denotes Y(IY,JY:JY+N-1) if INCY = M_Y,
Y(IY:IY+N-1,JY) if INCY = 1 and INCY <> M_Y.
alpha is a scalar, sub( X ) is an M element distributed vector, sub(
Y ) is an N element distributed vector and sub( A ) is an M-by-N distributed
matrix.
Arguments
- M
- (global input) INTEGER
The number of rows to be operated on i.e the number of rows of the distributed
submatrix sub( A ). M >= 0.
- N
- (global input) INTEGER
The number of columns to be operated on i.e the number of columns of the
distributed submatrix sub( A ). N >= 0.
- ALPHA
- (global input) REAL
On entry, ALPHA specifies the scalar alpha.
- X
- (local input/local output) REAL array of dimension at least ( (JX-1)*M_X
+ IX + ( M - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
- Y
- (local input/local output) REAL array of dimension at least ( (JY-1)*M_Y
+ IY + ( N - 1 )*abs( INCY ) )
This array contains the entries of the distributed vector sub( Y ).
- IY
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix Y to operate
on.
- JY
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix Y to
operate on.
- DESCY
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix Y.
- INCY
- (global input) INTEGER
The global increment for the elements of Y. Only two values of INCY are
supported in this version, namely 1 and M_Y.
- A
- (local input) REAL array of dimension (LLD_A, LOCq(JA+N-1))
Before entry, the leading M-by-N part of the distributed matrix sub( A
) must contain the matrix of coefficients. On exit, sub( A ) is overwritten
by the updated distributed matrix.
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
PvGERU
SUBROUTINE PvGERU( M, N, ALPHA, X, IX, JX, DESCX, INCX, Y, IY, JY,
DESCY, INCY, A, IA, JA, DESCA )
Purpose
PvGERU performs the rank 1 operation
- sub( A ) := alpha*sub( X )*sub( Y )' + sub( A ),
where sub( A ) denotes A(IA:IA+M-1,JA:JA+N-1),
sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
sub( Y ) denotes Y(IY,JY:JY+N-1) if INCY = M_Y,
Y(IY:IY+N-1,JY) if INCY = 1 and INCY <> M_Y.
alpha is a scalar, sub( X ) is an M element distributed vector, sub(
Y ) is an N element distributed vector and sub( A ) is an M-by-N distributed
matrix.
Arguments
- M
- (global input) INTEGER
The number of rows to be operated on i.e the number of rows of the distributed
submatrix sub( A ). M >= 0.
- N
- (global input) INTEGER
The number of columns to be operated on i.e the number of columns of the
distributed submatrix sub( A ). N >= 0.
- ALPHA
- (global input) COMPLEX
On entry, ALPHA specifies the scalar alpha.
- X
- (local input/local output) COMPLEX array of dimension at least ( (JX-1)*M_X
+ IX + ( M - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
- Y
- (local input/local output) COMPLEX array of dimension at least ( (JY-1)*M_Y
+ IY + ( N - 1 )*abs( INCY ) )
This array contains the entries of the distributed vector sub( Y ).
- IY
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix Y to operate
on.
- JY
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix Y to
operate on.
- DESCY
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix Y.
- INCY
- (global input) INTEGER
The global increment for the elements of Y. Only two values of INCY are
supported in this version, namely 1 and M_Y.
- A
- (local input) COMPLEX array of dimension (LLD_A, LOCq(JA+N-1))
Before entry, the leading M-by-N part of the distributed matrix sub( A
) must contain the matrix of coefficients. On exit, sub( A ) is overwritten
by the updated distributed matrix.
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
PvGERC
SUBROUTINE PvGERC( M, N, ALPHA, X, IX, JX, DESCX, INCX, Y, IY, JY,
DESCY, INCY, A, IA, JA, DESCA )
Purpose
PvGERC performs the rank 1 operation
- sub( A ) := alpha*sub( X )*conjg( sub( Y )' ) + sub( A ),
where sub( A ) denotes A(IA:IA+M-1,JA:JA+N-1),
sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
sub( Y ) denotes Y(IY,JY:JY+N-1) if INCY = M_Y,
Y(IY:IY+N-1,JY) if INCY = 1 and INCY <> M_Y.
alpha is a scalar, sub( X ) is an M element distributed vector, sub(
Y ) is an N element distributed vector and sub( A ) is an M-by-N distributed
matrix.
Arguments
- M
- (global input) INTEGER
The number of rows to be operated on i.e the number of rows of the distributed
submatrix sub( A ). M >= 0.
- N
- (global input) INTEGER
The number of columns to be operated on i.e the number of columns of the
distributed submatrix sub( A ). N >= 0.
- ALPHA
- (global input) COMPLEX
On entry, ALPHA specifies the scalar alpha.
- X
- (local input/local output) COMPLEX array of dimension at least ( (JX-1)*M_X
+ IX + ( M - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
- Y
- (local input/local output) COMPLEX array of dimension at least ( (JY-1)*M_Y
+ IY + ( N - 1 )*abs( INCY ) )
This array contains the entries of the distributed vector sub( Y ).
- IY
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix Y to operate
on.
- JY
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix Y to
operate on.
- DESCY
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix Y.
- INCY
- (global input) INTEGER
The global increment for the elements of Y. Only two values of INCY are
supported in this version, namely 1 and M_Y.
- A
- (local input) COMPLEX array of dimension (LLD_A, LOCq(JA+N-1))
Before entry, the leading M-by-N part of the distributed matrix sub( A
) must contain the matrix of coefficients. On exit, sub( A ) is overwritten
by the updated distributed matrix.
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
PvHER
SUBROUTINE PvHER( UPLO, N, ALPHA, X, IX, JX, DESCX, INCX, A, IA,
JA, DESCA )
Purpose
PvHER performs the Hermitian rank 1 operation
- sub( A ) := alpha*sub( X )*conjg( sub( X )' ) + sub( A ),
where sub( A ) denotes A(IA:IA+N-1,JA:JA+N-1),
sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
alpha is a real scalar, sub( X ) is an N element distributed vector
and sub( A ) is an N-by-N distributed Hermitian matrix.
Arguments
- UPLO
- (global input) CHARACTER On entry, UPLO specifies whether the upper
or lower triangular part of the distributed matrix sub( A ) is to be referenced
as follows:
- UPLO = 'U' Only the upper triangular part of sub( A ) is to be referenced.
- UPLO = 'L' Only the lower triangular part of sub( A ) is to be referenced.
- N
- (global input) INTEGER
The order of the distributed matrix sub( A ). N >= 0.
- ALPHA
- (global input) COMPLEX
On entry, ALPHA specifies the scalar alpha.
- X
- (local input/local output) COMPLEX array of dimension at least ( (JX-1)*M_X
+ IX + ( M - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
- A
- (local input) COMPLEX array of dimension (LLD_A, LOCq(JA+N-1))
Before entry with UPLO = 'U', the leading N-by-N upper triangular part
of the distributed matrix sub( A ) must contain the upper triangular part
of the hermitian distributed matrix and the strictly lower triangular part
of sub( A ) is not referenced. On exit, the upper triangular part of sub(
A ) is overwritten by the upper triangular part of the updated distributed
matrix.
Before entry with UPLO = 'L', the leading N-by-N lower triangular part
of the distributed matrix sub( A ) must contain the lower triangular part
of the hermitian distributed matrix and the strictly upper triangular part
of sub( A ) is not referenced. On exit, the lower triangular part of sub(
A ) is overwritten by the lower triangular part of the updated distributed
matrix.
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
PvHER2
SUBROUTINE PvHER2( UPLO, N, ALPHA, X, IX, JX, DESCX, INCX, Y, IY,
JY, DESCY, INCY, A, IA, JA, DESCA )
Purpose
PvHER2 performs the Hermitian rank 2 operation
- sub( A ) := alpha*sub( X )*conjg( sub( Y )' ) + conjg( alpha )*sub(
Y )*conjg( sub( X )' ) + sub( A ),
where sub( A ) denotes A(IA:IA+N-1,JA:JA+N-1),
where sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
sub( Y ) denotes Y(IY,JY:JY+N-1) if INCY = M_Y,
Y(IY:IY+N-1,JY) if INCY = 1 and INCY <> M_Y,
alpha is a scalar, sub( X ) and sub( Y ) are N element distributed vectors
and sub( A ) is an N-by-N Hermitian distributed matrix.
Arguments
- UPLO
- (global input) CHARACTER On entry, UPLO specifies whether the upper
or lower triangular part of the distributed matrix sub( A ) is to be referenced
as follows:
- UPLO = 'U' Only the upper triangular part of sub( A ) is to be referenced.
- UPLO = 'L' Only the lower triangular part of sub( A ) is to be referenced.
- N
- (global input) INTEGER
The order of the distributed matrix sub( A ). N >= 0.
- ALPHA
- (global input) COMPLEX
On entry, ALPHA specifies the scalar alpha.
- X
- (local input/local output) COMPLEX array of dimension at least ( (JX-1)*M_X
+ IX + ( M - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
- Y
- (local input/local output) COMPLEX array of dimension at least ( (JY-1)*M_Y
+ IY + ( N - 1 )*abs( INCY ) )
This array contains the entries of the distributed vector sub( Y ).
- IY
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix Y to operate
on.
- JY
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix Y to
operate on.
- DESCY
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix Y.
- INCY
- (global input) INTEGER
The global increment for the elements of Y. Only two values of INCY are
supported in this version, namely 1 and M_Y.
- A
- (local input) COMPLEX array of dimension (LLD_A, LOCq(JA+N-1))
Before entry with UPLO = 'U', the leading N-by-N upper triangular part
of the distributed matrix sub( A ) must contain the upper triangular part
of the Hermitian distributed matrix and the strictly lower triangular part
of sub( A ) is not referenced. On exit, the upper triangular part of sub(
A ) is overwritten by the upper triangular part of the updated distributed
matrix.
Before entry with UPLO = 'L', the leading N-by-N lower triangular part
of the distributed matrix sub( A ) must contain the lower triangular part
of the Hermitian distributed matrix and the strictly upper triangular part
of sub( A ) is not referenced. On exit, the lower triangular part of sub(
A ) is overwritten by the lower triangular part of the updated distributed
matrix.
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
PvSYR
SUBROUTINE PvSYR( UPLO, N, ALPHA, X, IX, JX, DESCX, INCX, A, IA,
JA, DESCA )
Purpose
PvSYR performs the symmetric rank 1 operation
- sub( A ) := alpha*sub( X )*sub( X )' + sub( A ),
where sub( A ) denotes A(IA:IA+N-1,JA:JA+N-1),
sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
alpha is a real scalar, sub( X ) is an N element distributed vector
and sub( A ) is an N-by-N distributed symmetric matrix.
Arguments
- UPLO
- (global input) CHARACTER On entry, UPLO specifies whether the upper
or lower triangular part of the distributed matrix sub( A ) is to be referenced
as follows:
- UPLO = 'U' Only the upper triangular part of sub( A ) is to be referenced.
- UPLO = 'L' Only the lower triangular part of sub( A ) is to be referenced.
- N
- (global input) INTEGER
The order of the distributed matrix sub( A ). N >= 0.
- ALPHA
- (global input) REAL
On entry, ALPHA specifies the scalar alpha.
- X
- (local input/local output) REAL array of dimension at least ( (JX-1)*M_X
+ IX + ( M - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
- A
- (local input) REAL array of dimension (LLD_A, LOCq(JA+N-1))
Before entry with UPLO = 'U', the leading N-by-N upper triangular part
of the distributed matrix sub( A ) must contain the upper triangular part
of the symmetric distributed matrix and the strictly lower triangular part
of sub( A ) is not referenced. On exit, the upper triangular part of sub(
A ) is overwritten by the upper triangular part of the updated distributed
matrix.
Before entry with UPLO = 'L', the leading N-by-N lower triangular part
of the distributed matrix sub( A ) must contain the lower triangular part
of the symmetric distributed matrix and the strictly upper triangular part
of sub( A ) is not referenced. On exit, the lower triangular part of sub(
A ) is overwritten by the lower triangular part of the updated distributed
matrix.
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
PvSYR2
SUBROUTINE PvSYR2( UPLO, N, ALPHA, X, IX, JX, DESCX, INCX, Y, IY,
JY, DESCY, INCY, A, IA, JA, DESCA )
Purpose
PvSYR2 performs the symmetric rank 2 operation
- sub( A ) := alpha*sub( X )*sub( Y )' + alpha*sub( Y )*sub( X )' + sub(
A ) ,
where sub( A ) denotes A(IA:IA+N-1,JA:JA+N-1),
where sub( X ) denotes X(IX,JX:JX+N-1) if INCX = M_X,
X(IX:IX+N-1,JX) if INCX = 1 and INCX <> M_X,
sub( Y ) denotes Y(IY,JY:JY+N-1) if INCY = M_Y,
Y(IY:IY+N-1,JY) if INCY = 1 and INCY <> M_Y,
alpha is a scalar, sub( X ) and sub( Y ) are N element distributed vectors
and sub( A ) is an N-by-N symmetric distributed matrix.
Arguments
- UPLO
- (global input) CHARACTER On entry, UPLO specifies whether the upper
or lower triangular part of the distributed matrix sub( A ) is to be referenced
as follows:
- UPLO = 'U' Only the upper triangular part of sub( A ) is to be referenced.
- UPLO = 'L' Only the lower triangular part of sub( A ) is to be referenced.
- N
- (global input) INTEGER
The order of the distributed matrix sub( A ). N >= 0.
- ALPHA
- (global input) REAL
On entry, ALPHA specifies the scalar alpha.
- X
- (local input/local output) REAL array of dimension at least ( (JX-1)*M_X
+ IX + ( M - 1 )*abs( INCX ) )
This array contains the entries of the distributed vector sub( X ).
- IX
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix X to operate
on.
- JX
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix X to
operate on.
- DESCX
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix X.
- INCX
- (global input) INTEGER
The global increment for the elements of X. Only two values of INCX are
supported in this version, namely 1 and M_X.
- Y
- (local input/local output) REAL array of dimension at least ( (JY-1)*M_Y
+ IY + ( N - 1 )*abs( INCY ) )
This array contains the entries of the distributed vector sub( Y ).
- IY
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix Y to operate
on.
- JY
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix Y to
operate on.
- DESCY
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix Y.
- INCY
- (global input) INTEGER
The global increment for the elements of Y. Only two values of INCY are
supported in this version, namely 1 and M_Y.
- A
- (local input) REAL array of dimension (LLD_A, LOCq(JA+N-1))
Before entry with UPLO = 'U', the leading N-by-N upper triangular part
of the distributed matrix sub( A ) must contain the upper triangular part
of the symmetric distributed matrix and the strictly lower triangular part
of sub( A ) is not referenced. On exit, the upper triangular part of sub(
A ) is overwritten by the upper triangular part of the updated distributed
matrix.
Before entry with UPLO = 'L', the leading N-by-N lower triangular part
of the distributed matrix sub( A ) must contain the lower triangular part
of the symmetric distributed matrix and the strictly upper triangular part
of sub( A ) is not referenced. On exit, the lower triangular part of sub(
A ) is overwritten by the lower triangular part of the updated distributed
matrix.
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
PvGEMM
SUBROUTINE PvGEMM( TRANSA, TRANSB, M, N, K, ALPHA, A, IA, JA, DESCA,
B, IB, JB, DESCB, BETA, C, IC, JC, DESCC )
Purpose
PvGEMM performs one of the matrix-matrix operations
- sub( C ) := alpha*op( sub( A ) )*op( sub( B ) ) + beta*sub( C ),
where sub( C ) denotes C(IC:IC+M-1,JC:JC+N-1),
op( X ) is one of
op( X ) = X or op( X ) = X',
thus op( sub( A ) ) denotes A(IA:IA+M-1,JA:JA+K-1) if TRANSA = 'N',
A(IA:IA+K-1,JA:JA+M-1)' if TRANSA = 'T',
A(IA:IA+K-1,JA:JA+M-1)' if TRANSA = 'C',
op( sub( B ) ) denotes B(IB:IB+K-1,JB:JB+N-1) if TRANSB = 'N',
B(IB:IB+N-1,JB:JB+K-1)' if TRANSB = 'T',
B(IB:IB+N-1,JB:JB+K-1)' if TRANSB = 'C',
alpha and beta are scalars, and sub( A ), sub( B ) and sub( C ) are
distributed matrices, with op( sub( A ) ) an M-by-K distributed matrix,
op( sub( B ) ) a K-by-N distributed matrix and sub( C ) an M-by-N distributed
matrix.
Arguments
- TRANSA
- (global input) CHARACTER
The form of op( A ) to be used in the matrix multiplication as follows:
- TRANSA = 'N', op( A ) = A,
- TRANSA = 'T', op( A ) = A',
- TRANSA = 'C', op( A ) = A'.
- TRANSB
- (global input) CHARACTER
The form of op( B ) to be used in the matrix multiplication as follows:
- TRANSB = 'N', op( B ) = B,
- TRANSB = 'T', op( B ) = B',
- TRANSB = 'C', op( B ) = B'.
- M
- (global input) INTEGER
The number of rows of the distributed matrices op( sub( A ) ) and sub(
C ). M >= 0.
- N
- (global input) INTEGER
The number of columns of the distributed matrices op( sub( B ) ) and sub(
C ). N >= 0.
- K
- (global input) INTEGER
The number of columns of the distributed matrix op( sub( A ) ) and the
number of rows of the distributed matrix op( B ). K >= 0.
- ALPHA
- (global input) REAL/COMPLEX
On entry, ALPHA specifies the scalar alpha.
- A
- (local input) array of dimension (LLD_A, KLa)
where KLa is LOCq(JA+K-1) when TRANSA = 'N', and is LOCq(JA+M-1) otherwise.
Before entry, this array must contain the local pieces of the distributed
matrix sub( A ).
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- B
- (local input) array of dimension (LLD_B, KLb)
where KLb is LOCq(JB+N-1) when TRANSB = 'N', and is LOCq(JB+K-1) otherwise.
Before entry this array must contain the local pieces of the distributed
matrix sub( B ).
- IB
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix B to operate
on.
- JB
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix B to
operate on.
- DESCB
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix B.
- BETA
- (global input) REAL/COMPLEX
On entry, BETA specifies the scalar beta. When BETA is supplied as zero
then sub( Y ) need not be set on input.
- C
- (local input/local output) array of dimension (LLD_C, LOCq(JC+N-1))
Before entry, this array must contain the local pieces of the distributed
matrix sub( C ). On exit, the distributed matrix sub( C ) is overwritten
by the M-by-N distributed matrix alpha*op( sub( A ) )*op( sub( B ) ) +
beta*sub( C ).
- IC
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix C to operate
on.
- JC
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix C to
operate on.
- DESCC
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix C.
PvSYMM
SUBROUTINE PvSYMM( SIDE, UPLO, M, N, ALPHA, A, IA, JA, DESCA, B,
IB, JB, DESCB, BETA, C, IC, JC, DESCC )
Purpose
PvSYMM performs one of the distributed matrix-matrix operations
- sub( C ) := alpha*sub( A )*sub( B ) + beta*sub( C ), or
- sub( C ) := alpha*sub( B )*sub( A ) + beta*sub( C ),
where sub( C ) denotes C(IC:IC+M-1,JC:JC+N-1),
sub( A ) denotes A(IA:IA+M-1,JA:JA+M-1) if SIDE = 'L',
A(IA:IA+N-1,JA:JA+N-1) if SIDE = 'R',
sub( B ) denotes B(IB:IB+M-1,JB:JB+N-1).
Alpha and beta are scalars, sub( A ) is a symmetric distributed matrix
and sub( B ) and sub( C ) are M-by-N distributed matrices.
Arguments
- SIDE
- (global input) CHARACTER
On entry, SIDE specifies whether the symmetric distributed matrix sub(
A ) appears on the left or right in the operation as follows:
- SIDE = 'L' sub( C ) := alpha*sub( A )*sub( B ) + beta*sub( C ),
- SIDE = 'R' sub( C ) := alpha*sub( B )*sub( A ) + beta*sub( C ),
- UPLO
- (global input) CHARACTER
On entry, UPLO specifies whether the upper or lower triangular part of
the symmetric distributed matrix sub( A ) is to be referenced as follows:
- UPLO = 'U' Only the upper triangular part of the symmetric distributed
matrix is to be referenced.
- UPLO = 'L' Only the lower triangular part of the symmetric distributed
matrix is to be referenced.
- M
- (global input) INTEGER
The number of rows to be operated on i.e., the number of rows of the distributed
submatrix sub( C ). M >= 0.
- N
- (global input) INTEGER
The number of columns to be operated on i.e the number of columns of the
distributed submatrix sub( C ). N >= 0.
- ALPHA
- (global input) REAL/COMPLEX
On entry, ALPHA specifies the scalar alpha.
- A
- (local input) array of dimension (LLD_A, LOCq(JA+NA-1))
Before entry this array contains the local pieces of the symmetric distributed
matrix sub( A ), such that when UPLO = 'U', the NA-by-NA upper triangular
part of the distributed matrix sub( A ) must contain the upper triangular
part of the symmetric distributed matrix and the strictly lower triangular
part of sub( A ) is not referenced, and when UPLO = 'L', the NA-by-NA lower
triangular part of the distributed matrix sub( A ) must contain the lower
triangular part of the symmetric distributed matrix and the strictly lower
triangular part of sub( A ) is not referenced.
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- B
- (local input) array of dimension (LLD_B, LOCq(JB+N-1))
Before entry, this array contains the local pieces of the distributed matrix
sub( B ).
- IB
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix B to operate
on.
- JB
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix B to
operate on.
- DESCB
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix B.
- BETA
- (global input) REAL/COMPLEX
On entry, BETA specifies the scalar beta. When BETA is supplied as zero
then sub( C ) need not be set on input.
- C
- (local input/local output) array of dimension (LLD_C, LOCq(JC+N-1))
Before entry, this array must contain the local pieces of the distributed
matrix sub( C ). On exit, the distributed matrix sub( C ) is overwritten
by the M-by-N updated distributed matrix.
- IC
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix C to operate
on.
- JC
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix C to
operate on.
- DESCC
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix C.
PvHEMM
SUBROUTINE PvHEMM( SIDE, UPLO, M, N, ALPHA, A, IA, JA, DESCA, B,
IB, JB, DESCB, BETA, C, IC, JC, DESCC )
Purpose
PvHEMM performs one of the distributed matrix-matrix operations
- sub( C ) := alpha*sub( A )*sub( B ) + beta*sub( C ), or
- sub( C ) := alpha*sub( B )*sub( A ) + beta*sub( C ),
where sub( C ) denotes C(IC:IC+M-1,JC:JC+N-1),
sub( A ) denotes A(IA:IA+M-1,JA:JA+M-1) if SIDE = 'L',
A(IA:IA+N-1,JA:JA+N-1) if SIDE = 'R',
sub( B ) denotes B(IB:IB+M-1,JB:JB+N-1).
Alpha and beta are scalars, sub( A ) is a Hermitian distributed matrix
and sub( B ) and sub( C ) are M-by-N distributed matrices.
Arguments
- SIDE
- (global input) CHARACTER
On entry, SIDE specifies whether the Hermitian distributed matrix sub(
A ) appears on the left or right in the operation as follows:
- SIDE = 'L' sub( C ) := alpha*sub( A )*sub( B ) + beta*sub( C ),
- SIDE = 'R' sub( C ) := alpha*sub( B )*sub( A ) + beta*sub( C ),
- UPLO
- (global input) CHARACTER
On entry, UPLO specifies whether the upper or lower triangular part of
the Hermitian distributed matrix sub( A ) is to be referenced as follows:
- UPLO = 'U' Only the upper triangular part of the Hermitian distributed
matrix is to be referenced.
- UPLO = 'L' Only the lower triangular part of the Hermitian distributed
matrix is to be referenced.
- M
- (global input) INTEGER
The number of rows to be operated on i.e., the number of rows of the distributed
submatrix sub( C ). M >= 0.
- N
- (global input) INTEGER
The number of columns to be operated on i.e the number of columns of the
distributed submatrix sub( C ). N >= 0.
- ALPHA
- (global input) COMPLEX
On entry, ALPHA specifies the scalar alpha.
- A
- (local input) COMPLEX array of dimension (LLD_A, LOCq(JA+NA-1))
Before entry this array contains the local pieces of the Hermitian distributed
matrix sub( A ), such that when UPLO = 'U', the NA-by-NA upper triangular
part of the distributed matrix sub( A ) must contain the upper triangular
part of the Hermitian distributed matrix and the strictly lower triangular
part of sub( A ) is not referenced, and when UPLO = 'L', the NA-by-NA lower
triangular part of the distributed matrix sub( A ) must contain the lower
triangular part of the Hermitian distributed matrix and the strictly lower
triangular part of sub( A ) is not referenced.
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- B
- (local input) COMPLEX array of dimension (LLD_B, LOCq(JB+N-1))
Before entry, this array contains the local pieces of the distributed matrix
sub( B ).
- IB
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix B to operate
on.
- JB
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix B to
operate on.
- DESCB
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix B.
- BETA
- (global input) COMPLEX
On entry, BETA specifies the scalar beta. When BETA is supplied as zero
then sub( C ) need not be set on input.
- C
- (local input/local output) COMPLEX array of dimension (LLD_C, LOCq(JC+N-1))
Before entry, this array must contain the local pieces of the distributed
matrix sub( C ). On exit, the distributed matrix sub( C ) is overwritten
by the M-by-N updated distributed matrix.
- IC
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix C to operate
on.
- JC
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix C to
operate on.
- DESCC
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix C.
PvSYRK
SUBROUTINE PvSYRK( UPLO, TRANS, N, K, ALPHA, A, IA, JA, DESCA, BETA,
C, IC, JC, DESCC )
Purpose
PvSYRK performs one of the symmetric rank k operations
- sub( C ) := alpha*sub( A )*sub( A )' + beta*sub( C ), or
- sub( C ) := alpha*sub( A )'*sub( A ) + beta*sub( C ),
where sub( C ) denotes C(IC:IC+N-1,JC:JC+N-1),
sub( A ) denotes A(IA:IA+N-1,JA:JA+K-1) if TRANS = 'N',
A(IA:IA+K-1,JA:JA+N-1) otherwise.
Alpha and beta are scalars, sub( C ) is an N-by-N symmetric distributed
matrix and sub( A ) is an N-by-K distributed matrix in the first case and
a K-by-N distributed matrix in the second case.
Arguments
- UPLO
- (global input) CHARACTER
On entry, UPLO specifies whether the upper or lower triangular part of
the distributed matrix sub( C ) is to be referenced as follows:
- UPLO = 'U' Only the upper triangular part of sub( C ) is to be referenced.
- UPLO = 'L' Only the lower triangular part of sub( C ) is to be referenced.
- TRANS
- (global input) CHARACTER
On entry, TRANS specifies the operation to be performed as follows:
- TRANS = 'N', sub( C ) := alpha*sub( A )*sub( A )' + beta*sub( C ),
- TRANS = 'T', sub( C ) := alpha*sub( A )'*sub( A ) + beta*sub( C ).
- N
- (global input) INTEGER
The order of the distributed matrix sub( C ). N >= 0.
- K
- (global input) INTEGER
On entry with TRANS = 'N', K specifies the number of columns of the distributed
matrix sub( A ), and on entry with TRANS = 'T', K specifies the number
of rows of the distributed matrix sub( A ). K >= 0.
- ALPHA
- (global input) REAL/COMPLEX
On entry, ALPHA specifies the scalar alpha.
- A
- (local input) array of dimension (LLD_A, KLa)
where KLa is LOCq(JA+K-1) when TRANS = 'N', and is LOCq(JA+N-1) otherwise.
Before entry with TRANS = 'N', this array contains the local pieces of
the distributed matrix sub( A ).
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- BETA
- (global input) REAL/COMPLEX
On entry, BETA specifies the scalar beta.
- C
- (local input/local output) array of dimension (LLD_C, LOCq(JC+N-1))
Before entry with UPLO = 'U', this array contains the local pieces of the
N-by-N upper triangular part of the symmetric distributed matrix sub( C
) and its strictly lower triangular part is not referenced. On exit, the
upper triangular part of sub( C ) is overwritten by the upper triangular
part of the updated distributed matrix.
Before entry with UPLO = 'L', this array contains the local pieces
of the N-by-N lower triangular part of the symmetric distributed matrix
sub( C ) and its strictly upper triangular part is not referenced. On exit,
the lower triangular part of sub( C ) is overwritten by the lower triangular
part of the updated distributed matrix.
- IC
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix C to operate
on.
- JC
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix C to
operate on.
- DESCC
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix C.
PvHERK
SUBROUTINE PvHERK( UPLO, TRANS, N, K, ALPHA, A, IA, JA, DESCA, BETA,
C, IC, JC, DESCC )
Purpose
PvHERK performs one of the Hermitian rank k operations
- sub( C ) := alpha*sub( A )*sub( A )' + beta*sub( C ), or
- sub( C ) := alpha*sub( A )'*sub( A ) + beta*sub( C ),
where sub( C ) denotes C(IC:IC+N-1,JC:JC+N-1),
sub( A ) denotes A(IA:IA+N-1,JA:JA+K-1) if TRANS = 'N',
A(IA:IA+K-1,JA:JA+N-1) otherwise.
Alpha and beta are scalars, sub( C ) is an N-by-N Hermitian distributed
matrix and sub( A ) is an N-by-K distributed matrix in the first case and
a K-by-N distributed matrix in the second case.
Arguments
- UPLO
- (global input) CHARACTER
On entry, UPLO specifies whether the upper or lower triangular part of
the distributed matrix sub( C ) is to be referenced as follows:
- UPLO = 'U' Only the upper triangular part of sub( C ) is to be referenced.
- UPLO = 'L' Only the lower triangular part of sub( C ) is to be referenced.
- TRANS
- (global input) CHARACTER
On entry, TRANS specifies the operation to be performed as follows:
- TRANS = 'N', sub( C ) := alpha*sub( A )*sub( A )' + beta*sub( C ),
- TRANS = 'T', sub( C ) := alpha*sub( A )'*sub( A ) + beta*sub( C ).
- N
- (global input) INTEGER
The order of the distributed matrix sub( C ). N >= 0.
- K
- (global input) INTEGER
On entry with TRANS = 'N', K specifies the number of columns of the distributed
matrix sub( A ), and on entry with TRANS = 'C', K specifies the number
of rows of the distributed matrix sub( A ). K >= 0.
- ALPHA
- (global input) COMPLEX
On entry, ALPHA specifies the scalar alpha.
- A
- (local input) COMPLEX array of dimension (LLD_A, KLa)
where KLa is LOCq(JA+K-1) when TRANS = 'N', and is LOCq(JA+N-1) otherwise.
Before entry with TRANS = 'N', this array contains the local pieces of
the distributed matrix sub( A ).
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- BETA
- (global input) COMPLEX
On entry, BETA specifies the scalar beta.
- C
- (local input/local output) COMPLEX array of dimension (LLD_C, LOCq(JC+N-1))
Before entry with UPLO = 'U', this array contains the local pieces of the
N-by-N upper triangular part of the Hermitian distributed matrix sub( C
) and its strictly lower triangular part is not referenced. On exit, the
upper triangular part of sub( C ) is overwritten by the upper triangular
part of the updated distributed matrix.
Before entry with UPLO = 'L', this array contains the local pieces
of the N-by-N lower triangular part of the Hermitian distributed matrix
sub( C ) and its strictly upper triangular part is not referenced. On exit,
the lower triangular part of sub( C ) is overwritten by the lower triangular
part of the updated distributed matrix.
- IC
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix C to operate
on.
- JC
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix C to
operate on.
- DESCC
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix C.
PvSYRK2
SUBROUTINE PvSYRK2( UPLO, TRANS, N, K, ALPHA, A, IA, JA, DESCA, B,
IB, JB, DESCB, BETA, C, IC, JC, DESCC )
Purpose
PvSYR2K performs one of the symmetric rank 2k operations
- sub( C ) := alpha*sub( A )*sub( B )' + alpha*sub( B )*sub( A )' + beta*sub(
C ), or
- sub( C ) := alpha*sub( A )'*sub( B ) + alpha*sub( B )'*sub( A ) + beta*sub(
C ),
where sub( C ) denotes C(IC:IC+N-1,JC:JC+N-1),
sub( A ) denotes A(IA:IA+N-1,JA:JA+K-1) if TRANS = 'N',
A(IA:IA+K-1,JA:JA+N-1) otherwise,
sub( B ) denotes B(IB:IB+N-1,JB:JB+K-1) if TRANS = 'N',
B(IB:IB+K-1,JB:JB+N-1) otherwise.
Alpha and beta are scalars, sub( C ) is an N-by-N symmetric distributed
matrix and sub( A ) and sub( B ) are N-by-K distributed matrices in the
first case and a K-by-N distributed matrices in the second case.
Arguments
- UPLO
- (global input) CHARACTER
On entry, UPLO specifies whether the upper or lower triangular part of
the distributed matrix sub( C ) is to be referenced as follows:
- UPLO = 'U' Only the upper triangular part of sub( C ) is to be referenced.
- UPLO = 'L' Only the lower triangular part of sub( C ) is to be referenced.
- TRANS
- (global input) CHARACTER
On entry, TRANS specifies the operation to be performed as follows:
- TRANS = 'N', sub( C ) := alpha*sub( A )*sub( B )' + alpha*sub( B )*sub(
A )' + beta*sub( C ),
- TRANS = 'T', sub( C ) := alpha*sub( B )'*sub( A ) + alpha*sub( A )'*sub(
B ) + beta*sub( C ).
- N
- (global input) INTEGER
The order of the distributed matrix sub( C ). N >= 0.
- K
- (global input) INTEGER
On entry with TRANS = 'N', K specifies the number of columns of the distributed
matrices sub( A ) and sub( B ), and on entry with TRANS = 'T', K specifies
the number of rows of the distributed matrices sub( A ) and sub( B ). K
>= 0.
- ALPHA
- (global input) REAL/COMPLEX
On entry, ALPHA specifies the scalar alpha.
- A
- (local input) array of dimension (LLD_A, KLa)
where KLa is LOCq(JA+K-1) when TRANS = 'N', and is LOCq(JA+N-1) otherwise.
Before entry with TRANS = 'N', this array contains the local pieces of
the distributed matrix sub( A ).
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- B
- (local input) array of dimension (LLD_B, KLb)
where KLb is LOCq(JB+K-1) when TRANS = 'N', and is LOCq(JB+N-1) otherwise.
Before entry with TRANS = 'N', this array contains the local pieces of
the distributed matrix sub( B ).
- IB
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix B to operate
on.
- JB
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix B to
operate on.
- DESCB
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix B.
- BETA
- (global input) REAL/COMPLEX
On entry, BETA specifies the scalar beta.
- C
- (local input/local output) array of dimension (LLD_C, LOCq(JC+N-1))
Before entry with UPLO = 'U', this array contains the local pieces of the
N-by-N upper triangular part of the symmetric distributed matrix sub( C
) and its strictly lower triangular part is not referenced. On exit, the
upper triangular part of sub( C ) is overwritten by the upper triangular
part of the updated distributed matrix.
Before entry with UPLO = 'L', this array contains the local pieces
of the N-by-N lower triangular part of the symmetric distributed matrix
sub( C ) and its strictly upper triangular part is not referenced. On exit,
the lower triangular part of sub( C ) is overwritten by the lower triangular
part of the updated distributed matrix.
- IC
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix C to operate
on.
- JC
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix C to
operate on.
- DESCC
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix C.
PvHERK2
SUBROUTINE PvHERK2( UPLO, TRANS, N, K, ALPHA, A, IA, JA, DESCA, B,
IB, JB, DESCB, BETA, C, IC, JC, DESCC )
Purpose
PvSYR2K performs one of the Hermitian rank 2k operations
- sub( C ) := alpha*sub( A )*conjg( sub( B ) )' + conjg( alpha )*sub(
B )*conjg( sub( A ) )' + beta*sub( C ), or
- sub( C ) := alpha*conjg( sub( A )' )*sub( B ) + conjg( alpha )*conjg(
sub( B )' )*sub( A ) + beta*sub( C ),
where sub( C ) denotes C(IC:IC+N-1,JC:JC+N-1),
sub( A ) denotes A(IA:IA+N-1,JA:JA+K-1) if TRANS = 'N',
A(IA:IA+K-1,JA:JA+N-1) otherwise,
sub( B ) denotes B(IB:IB+N-1,JB:JB+K-1) if TRANS = 'N',
B(IB:IB+K-1,JB:JB+N-1) otherwise.
Alpha and beta are scalars with beta real, sub( C ) is an N-by-N Hermitian
distributed matrix and sub( A ) and sub( B ) are N-by-K distributed matrices
in the first case and a K-by-N distributed matrices in the second case.
Arguments
- UPLO
- (global input) CHARACTER
On entry, UPLO specifies whether the upper or lower triangular part of
the distributed matrix sub( C ) is to be referenced as follows:
- UPLO = 'U' Only the upper triangular part of sub( C ) is to be referenced.
- UPLO = 'L' Only the lower triangular part of sub( C ) is to be referenced.
- TRANS
- (global input) CHARACTER
On entry, TRANS specifies the operation to be performed as follows:
- TRANS = 'N', sub( C ) := alpha*sub( A )*conjg( sub( B )' ) + conjg(
alpha )*sub( B )*conjg( sub( A )' ) + beta*C,
- TRANS = 'C', sub( C ) := alpha*conjg( sub( A )' )*sub( B ) + conjg(
alpha )*conjg( sub( B )' )*sub( A ) + beta*sub( C ).
- N
- (global input) INTEGER
The order of the distributed matrix sub( C ). N >= 0.
- K
- (global input) INTEGER
On entry with TRANS = 'N', K specifies the number of columns of the distributed
matrices sub( A ) and sub( B ), and on entry with TRANS = 'C', K specifies
the number of rows of the distributed matrices sub( A ) and sub( B ). K
>= 0.
- ALPHA
- (global input) COMPLEX
On entry, ALPHA specifies the scalar alpha.
- A
- (local input) COMPLEX array of dimension (LLD_A, KLa)
where KLa is LOCq(JA+K-1) when TRANS = 'N', and is LOCq(JA+N-1) otherwise.
Before entry with TRANS = 'N', this array contains the local pieces of
the distributed matrix sub( A ).
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- B
- (local input) COMPLEX array of dimension (LLD_B, KLb)
where KLb is LOCq(JB+K-1) when TRANS = 'N', and is LOCq(JB+N-1) otherwise.
Before entry with TRANS = 'N', this array contains the local pieces of
the distributed matrix sub( B ).
- IB
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix B to operate
on.
- JB
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix B to
operate on.
- DESCB
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix B.
- BETA
- (global input) COMPLEX
On entry, BETA specifies the scalar beta.
- C
- (local input/local output) COMPLEX array of dimension (LLD_C, LOCq(JC+N-1))
Before entry with UPLO = 'U', this array contains the local pieces of the
N-by-N upper triangular part of the symmetric distributed matrix sub( C
) and its strictly lower triangular part is not referenced. On exit, the
upper triangular part of sub( C ) is overwritten by the upper triangular
part of the updated distributed matrix.
Before entry with UPLO = 'L', this array contains the local pieces
of the N-by-N lower triangular part of the symmetric distributed matrix
sub( C ) and its strictly upper triangular part is not referenced. On exit,
the lower triangular part of sub( C ) is overwritten by the lower triangular
part of the updated distributed matrix.
- IC
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix C to operate
on.
- JC
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix C to
operate on.
- DESCC
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix C.
PvTRAN
SUBROUTINE PvTRAN( M, N, ALPHA, A, IA, JA, DESCA, BETA, C, IC, JC,
DESCC )
Purpose
PvTRAN transposes a distributed matrix
- sub( C ) = beta * sub( C ) + alpha * op( sub( A ) )
where sub( C ) denotes C(IC:IC+M-1,JC:JC+N-1),
sub( A ) denotes A(IA:IA+N-1,JA:JA+M-1),
op( A ) denotes A**T.
Beta is a scalar, sub( C ) is an M-by-N distributed matrix, sub( A )
is an N-by-M distributed matrix.
Arguments
- M
- (global input) INTEGER
The number of rows to be operated on i.e., the number of rows of the distributed
submatrix sub( C ). M >= 0.
- N
- (global input) INTEGER
The number of columns to be operated on i.e the number of columns of the
distributed submatrix sub( C ). N >= 0.
- ALPHA
- (global input) REAL
On entry, ALPHA specifies the scalar alpha.
- A
- (local input) REAL array of dimension (LLD_A, LOCq(JA+M-1))
This array contains the local pieces of the distributed matrix sub( A ).
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- BETA
- (global input) REAL
On entry, BETA specifies the scalar beta. When BETA is supplied as zero
then sub( C ) need not be set on input.
- C
- (local input/local output) array of dimension (LLD_C, LOCq(JC+N-1))
This array contains the local pieces of the distributed matrix sub( C ).
On exit, the distributed matrix sub( C ) is over- written by the updated
matrix.
- IC
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix C to operate
on.
- JC
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix C to
operate on.
- DESCC
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix C.
PvTRANU
SUBROUTINE PvTRANU( M, N, ALPHA, A, IA, JA, DESCA, BETA, C, IC, JC,
DESCC )
Purpose
PvTRANU transposes a distributed matrix
- sub( C ) = beta * sub( C ) + alpha * op( sub( A ) )
where sub( C ) denotes C(IC:IC+M-1,JC:JC+N-1),
sub( A ) denotes A(IA:IA+N-1,JA:JA+M-1),
op( A ) denotes A**T.
Beta is a scalar, sub( C ) is an M-by-N distributed matrix, sub( A )
is an N-by-M distributed matrix.
Arguments
- M
- (global input) INTEGER
The number of rows to be operated on i.e., the number of rows of the distributed
submatrix sub( C ). M >= 0.
- N
- (global input) INTEGER
The number of columns to be operated on i.e the number of columns of the
distributed submatrix sub( C ). N >= 0.
- ALPHA
- (global input) COMPLEX
On entry, ALPHA specifies the scalar alpha.
- A
- (local input) COMPLEX array of dimension (LLD_A, LOCq(JA+M-1))
This array contains the local pieces of the distributed matrix sub( A ).
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- BETA
- (global input) COMPLEX
On entry, BETA specifies the scalar beta. When BETA is supplied as zero
then sub( C ) need not be set on input.
- C
- (local input/local output) COMPLEX array of dimension (LLD_C, LOCq(JC+N-1))
This array contains the local pieces of the distributed matrix sub( C ).
On exit, the distributed matrix sub( C ) is over- written by the updated
matrix.
- IC
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix C to operate
on.
- JC
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix C to
operate on.
- DESCC
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix C.
PvTRANC
SUBROUTINE PvTRANC( M, N, ALPHA, A, IA, JA, DESCA, BETA, C, IC, JC,
DESCC )
Purpose
PvTRANC transposes a distributed matrix
- sub( C ) = beta * sub( C ) + alpha * op( sub( A ) )
where sub( C ) denotes C(IC:IC+M-1,JC:JC+N-1),
sub( A ) denotes A(IA:IA+N-1,JA:JA+M-1),
op( A ) denotes A**H.
Beta is a scalar, sub( C ) is an M-by-N distributed matrix, sub( A )
is an N-by-M distributed matrix.
Arguments
- M
- (global input) INTEGER
The number of rows to be operated on i.e., the number of rows of the distributed
submatrix sub( C ). M >= 0.
- N
- (global input) INTEGER
The number of columns to be operated on i.e the number of columns of the
distributed submatrix sub( C ). N >= 0.
- ALPHA
- (global input) COMPLEX
On entry, ALPHA specifies the scalar alpha.
- A
- (local input) COMPLEX array of dimension (LLD_A, LOCq(JA+M-1))
This array contains the local pieces of the distributed matrix sub( A ).
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- BETA
- (global input) COMPLEX
On entry, BETA specifies the scalar beta. When BETA is supplied as zero
then sub( C ) need not be set on input.
- C
- (local input/local output) COMPLEX array of dimension (LLD_C, LOCq(JC+N-1))
This array contains the local pieces of the distributed matrix sub( C ).
On exit, the distributed matrix sub( C ) is over- written by the updated
matrix.
- IC
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix C to operate
on.
- JC
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix C to
operate on.
- DESCC
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix C.
PvTRMM
SUBROUTINE PvTRMM( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, IA,
JA, DESCA, B, IB, JB, DESCB )
Purpose
PvTRMM performs one of the distributed matrix-matrix operations
- sub( B ) := alpha*op( sub( A ) )*sub( B ),
where sub( A ) denotes A(IA:IA+M-1,JA:JA+M-1) if SIDE = 'L',
sub( A ) denotes A(IA:IA+N-1,JA:JA+N-1) if SIDE = 'R',
sub( B ) denotes B(IB:IB+M-1,JB:JB+N-1),
alpha is a scalar, sub( B ) is an M-by-N distributed matrix, sub( A
) is a unit, or non-unit, upper or lower triangular distributed matrix
and op( A ) is one of
- op( A ) = A or op( A ) = A'.
Arguments
- SIDE
- (global input) CHARACTER
On entry, SIDE specifies whether op( sub( A ) ) multiplies sub( B ) from
the left or right as follows:
- SIDE = 'L', sub( B ) := alpha*op( sub( A ) )*sub( B ),
- SIDE = 'R', sub( B ) := alpha*sub( B )*op( sub( A ) ).
- UPLO
- (global input) CHARACTER
On entry, UPLO specifies whether the distributed matrix sub( A ) is an
upper or lower triangular distributed matrix as follows:
- UPLO = 'U', sub( A ) is an upper triangular distributed matrix,
- UPLO = 'L', sub( A ) is a lower triangular distributed matrix.
- TRANSA
- (global input) CHARACTER
The form of op( A ) to be used in the matrix multiplication as follows:
- TRANSA = 'N', op( A ) = A,
- TRANSA = 'T', op( A ) = A',
- TRANSA = 'C', op( A ) = A'.
- DIAG
- (global input) CHARACTER
On entry, DIAG specifies whether or not sub( A ) is unit triangular as
follows:
- DIAG = 'U', sub( A ) is assumed to be unit triangular,
- DIAG = 'N', sub( A ) is not assumed to be unit triangular.
- M
- (global input) INTEGER
The number of rows to be operated on i.e., the number of rows of the distributed
submatrix sub( B ). M >= 0.
- N
- (global input) INTEGER
The number of columns to be operated on i.e the number of columns of the
distributed submatrix sub( B ). N >= 0.
- ALPHA
- (global input) REAL/COMPLEX
On entry, ALPHA specifies the scalar alpha.
- A
- (local input) array of dimension (LLD_A, LOCq(JA+NA-1)
Before entry with UPLO = 'U', the leading NA-by-NA upper triangular part
of the distributed matrix sub( A ) must contain the local pieces of the
upper triangular distributed matrix and its strictly lower triangular part
is not referenced.
Before entry with UPLO = 'L', the leading NA-by-NA lower triangular
part of the distributed matrix sub( A ) must contain the lower triangular
distributed matrix and its strictly upper triangular part is not referenced.
Note that when DIAG = 'U', the diagonal elements of sub( A ) are not referenced
either, but are assumed to be unity.
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- B
- (local input) array of dimension (LLD_B, LOCq(JB+N-1))
Before entry, this array contains the local pieces of the distributed matrix
sub( B ). On exit, sub( B ) is overwritten by the transformed distributed
matrix.
- IB
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix B to operate
on.
- JB
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix B to
operate on.
- DESCB
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix B.
PvTRSM
SUBROUTINE PvTRSM( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, IA,
JA, DESCA, B, IB, JB, DESCB )
Purpose
PvTRSM solves one of the distributed matrix equations
- op( sub( A ) )*X = alpha*sub( B ), or
- X*op( sub( A ) ) = alpha*sub( B ),
where sub( A ) denotes A(IA:IA+M-1,JA:JA+M-1) if SIDE = 'L',
sub( A ) denotes A(IA:IA+N-1,JA:JA+N-1) if SIDE = 'R',
sub( B ) denotes B(IB:IB+M-1,JB:JB+N-1),
alpha is a scalar, X and sub( B ) are an M-by-N distributed matrix,
sub( A ) is a unit, or non-unit, upper or lower triangular distributed
matrix and op( A ) is one of
- op( A ) = A or op( A ) = A'.
The distributed matrix X is overwritten on sub( B ). Arguments
- SIDE
- (global input) CHARACTER
On entry, SIDE specifies whether op( A ) appears on the left or right of
X as follows:
- SIDE = 'L', op( sub( A ) )*X = alpha*sub( B ),
- SIDE = 'R', X*op( sub( A ) ) = alpha*sub( B ).
- UPLO
- (global input) CHARACTER
On entry, UPLO specifies whether the distributed matrix sub( A ) is an
upper or lower triangular distributed matrix as follows:
- UPLO = 'U', sub( A ) is an upper triangular distributed matrix,
- UPLO = 'L', sub( A ) is a lower triangular distributed matrix.
- TRANSA
- (global input) CHARACTER
The form of op( A ) to be used in the matrix multiplication as follows:
- TRANSA = 'N', op( A ) = A,
- TRANSA = 'T', op( A ) = A',
- TRANSA = 'C', op( A ) = A'.
- DIAG
- (global input) CHARACTER
On entry, DIAG specifies whether or not sub( A ) is unit triangular as
follows:
- DIAG = 'U', sub( A ) is assumed to be unit triangular,
- DIAG = 'N', sub( A ) is not assumed to be unit triangular.
- M
- (global input) INTEGER
The number of rows to be operated on i.e., the number of rows of the distributed
submatrix sub( B ). M >= 0.
- N
- (global input) INTEGER
The number of columns to be operated on i.e., the number of columns of
the distributed submatrix sub( B ). N >= 0.
- ALPHA
- (global input) REAL/COMPLEX
On entry, ALPHA specifies the scalar alpha.
- A
- (local input) array of dimension (LLD_A, LOCq(JA+NA-1)
Before entry with UPLO = 'U', the leading NA-by-NA upper triangular part
of the distributed matrix sub( A ) must contain the local pieces of the
upper triangular distributed matrix and its strictly lower triangular part
is not referenced.
Before entry with UPLO = 'L', the leading NA-by-NA lower triangular
part of the distributed matrix sub( A ) must contain the lower triangular
distributed matrix and its strictly upper triangular part is not referenced.
Note that when DIAG = 'U', the diagonal elements of sub( A ) are not referenced
either, but are assumed to be unity.
- IA
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix A to operate
on.
- JA
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix A to
operate on.
- DESCA
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix A.
- B
- (local input) array of dimension (LLD_B, LOCq(JB+N-1))
Before entry, this array contains the local pieces of the distributed matrix
sub( B ). On exit, sub( B ) is overwritten by the solution distributed
matrix.
- IB
- (global input) INTEGER
The global row index of the submatrix of the distributed matrix B to operate
on.
- JB
- (global input) INTEGER
The global column index of the submatrix of the distributed matrix B to
operate on.
- DESCB
- (global and local input) INTEGER array of dimension 8
The array descriptor of the distributed matrix B.