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
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.
PvSYR2K
SUBROUTINE PvSYR2K( 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.
PvHER2K
SUBROUTINE PvHER2K( UPLO, TRANS, N, K, ALPHA, A, IA, JA, DESCA, B, IB, JB, DESCB, BETA, C, IC, JC, DESCC )
Purpose
PvHER2K 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.