|
|
| |
| # lines: |
220 | | # code: |
220 | | # comment: | 0 | |
# blank: | 0 |
| # Variables: | 30 |
| # Callers: | 15 |
| # Callings: | 1 |
| # Words: | 86 |
| # Keywords: | 54 |
|
|
|
|
|
..
.. Array Arguments ..
..
Purpose
=======
PSLASET initializes an M-by-N distributed matrix sub( A ) denoting
A(IA:IA+M-1,JA:JA+N-1) to BETA on the diagonal and ALPHA on the
offdiagonals.
Notes
=====
Each global data object is described by an associated description
vector. This vector stores the information required to establish
the mapping between an object element and its corresponding process
and memory location.
Let A be a generic term for any 2D block cyclicly distributed array.
Such a global array has an associated description vector DESCA.
In the following comments, the character _ should be read as
"of the global array".
NOTATION STORED IN EXPLANATION
--------------- -------------- --------------------------------------
DTYPE_A(global) DESCA( DTYPE_ )The descriptor type. In this case,
DTYPE_A = 1.
CTXT_A (global) DESCA( CTXT_ ) The BLACS context handle, indicating
the BLACS process grid A is distribu-
ted over. The context itself is glo-
bal, but the handle (the integer
value) may vary.
M_A (global) DESCA( M_ ) The number of rows in the global
array A.
N_A (global) DESCA( N_ ) The number of columns in the global
array A.
MB_A (global) DESCA( MB_ ) The blocking factor used to distribute
the rows of the array.
NB_A (global) DESCA( NB_ ) The blocking factor used to distribute
the columns of the array.
RSRC_A (global) DESCA( RSRC_ ) The process row over which the first
row of the array A is distributed.
CSRC_A (global) DESCA( CSRC_ ) The process column over which the
first column of the array A is
distributed.
LLD_A (local) DESCA( LLD_ ) The leading dimension of the local
array. LLD_A >= MAX(1,LOCr(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.
LOCr( 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, LOCc( 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 LOCr() and LOCc() may be determined via a call to the
ScaLAPACK tool function, NUMROC:
LOCr( M ) = NUMROC( M, MB_A, MYROW, RSRC_A, NPROW ),
LOCc( N ) = NUMROC( N, NB_A, MYCOL, CSRC_A, NPCOL ).
An upper bound for these quantities may be computed by:
LOCr( M ) <= ceil( ceil(M/MB_A)/NPROW )*MB_A
LOCc( N ) <= ceil( ceil(N/NB_A)/NPCOL )*NB_A
Arguments
=========
UPLO (global input) CHARACTER
Specifies the part of the distributed matrix sub( A ) to be
set:
= 'U': Upper triangular part is set; the strictly lower
triangular part of sub( A ) is not changed;
= 'L': Lower triangular part is set; the strictly upper
triangular part of sub( A ) is not changed;
Otherwise: All of the matrix sub( A ) is set.
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
The constant to which the offdiagonal elements are to be
set.
BETA (global input) REAL
The constant to which the diagonal elements are to be set.
A (local output) REAL pointer into the local memory
to an array of dimension (LLD_A,LOCc(JA+N-1)). This array
contains the local pieces of the distributed matrix sub( A )
to be set. On exit, the leading M-by-N submatrix sub( A )
is set as follows:
if UPLO = 'U', A(IA+i-1,JA+j-1) = ALPHA, 1<=i<=j-1, 1<=j<=N,
if UPLO = 'L', A(IA+i-1,JA+j-1) = ALPHA, j+1<=i<=M, 1<=j<=N,
otherwise, A(IA+i-1,JA+j-1) = ALPHA, 1<=i<=M, 1<=j<=N,
IA+i.NE.JA+j,
and, for all UPLO, A(IA+i-1,JA+i-1) = BETA, 1<=i<=min(M,N).
IA (global input) INTEGER
The row index in the global array A indicating the first
row of sub( A ).
JA (global input) INTEGER
The column index in the global array A indicating the
first column of sub( A ).
DESCA (global and local input) INTEGER array of dimension DLEN_.
The array descriptor for the distributed matrix A.
=====================================================================
.. Parameters ..
|
|
|
|
001 SUBROUTINE PSLASET( UPLO , M , N , ALPHA , BETA , A , IA , JA , DESCA )
002
003 * -- ScaLAPACK auxiliary routine(version 1.7) --
004 * University of Tennessee , Knoxville , Oak Ridge National Laboratory ,
005 * and University of California , Berkeley.
006 * May 1 , 1997
007
008 * .. Scalar Arguments ..
009 CHARACTER UPLO
010 INTEGER IA , JA , M , N
011 REAL ALPHA , BETA
012 INTEGER BLOCK_CYCLIC_2D , CSRC_ , CTXT_ , DLEN_ , DTYPE_ ,
013 $LLD_ , MB_ , M_ , NB_ , N_ , RSRC_
014 PARAMETER( BLOCK_CYCLIC_2D = 1 , DLEN_ = 9 , DTYPE_ = 1 ,
015 $CTXT_ = 2 , M_ = 3 , N_ = 4 , MB_ = 5 , NB_ = 6 ,
016 $RSRC_ = 7 , CSRC_ = 8 , LLD_ = 9 )
017 * ..
018 * .. Local Scalars ..
019 INTEGER I , IAA , IBLK , IN , ITMP , J , JAA , JBLK , JN , JTMP
020 * ..
021 * .. External Subroutines ..
022 EXTERNAL PSLASE2
023 * ..
024 * .. External Functions ..
025 LOGICAL LSAME
026 INTEGER ICEIL
027 EXTERNAL ICEIL , LSAME
028 * ..
029 * .. Intrinsic Functions ..
030 INTRINSIC MIN , MOD
031 * ..
032 * .. Executable Statements ..
033
034 IF( M.EQ.0 .OR. N.EQ.0 )
034
035 $ RETURN
036
037 IF( M.LE.( DESCA( MB_ ) - MOD( IA - 1 , DESCA( MB_ ) ) ) .OR.
038 $ N.LE.( DESCA( NB_ ) - MOD( JA - 1 , DESCA( NB_ ) ) ) ) THEN
039 CALL PSLASE2 ( UPLO , M , N , ALPHA , BETA , A , IA , JA , DESCA )
040 ELSE
041
041
042 IF( LSAME( UPLO , 'U' ) ) THEN
042
043 IN = MIN( ICEIL( IA , DESCA( MB_ ) ) * DESCA( MB_ ) , IA + M - 1 )
044 CALL PSLASE2 ( UPLO , IN - IA + 1 , N , ALPHA , BETA , A , IA , JA ,
045 $ DESCA )
046 DO 10 I = IN + 1 , IA + M - 1 , DESCA( MB_ )
046
047 ITMP = I - IA
048 IBLK = MIN( DESCA( MB_ ) , M - ITMP )
049 JAA = JA + ITMP
050 CALL PSLASE2 ( UPLO , IBLK , N - ITMP , ALPHA , BETA ,
051 $ A , I , JAA , DESCA )
052 10 CONTINUE
052
053 ELSE IF( LSAME( UPLO , 'L' ) ) THEN
053
054 JN = MIN( ICEIL( JA , DESCA( NB_ ) ) * DESCA( NB_ ) , JA + N - 1 )
055 CALL PSLASE2 ( UPLO , M , JN - JA + 1 , ALPHA , BETA , A , IA , JA ,
056 $ DESCA )
057 DO 20 J = JN + 1 , JA + N - 1 , DESCA( NB_ )
057
058 JTMP = J - JA
059 JBLK = MIN( DESCA( NB_ ) , N - JTMP )
060 IAA = IA + JTMP
061 CALL PSLASE2 ( UPLO , M - JTMP , JBLK , ALPHA , BETA , A , IAA ,
062 $ J , DESCA )
063 20 CONTINUE
063
064 ELSE
064
065 IF( M.LE.N ) THEN
065
066 IN = MIN( ICEIL( IA , DESCA( MB_ ) ) * DESCA( MB_ ) ,
067 $ IA + M - 1 )
068 CALL PSLASE2 ( UPLO , IN - IA + 1 , N , ALPHA , BETA , A , IA ,
069 $ JA , DESCA )
070 DO 30 I = IN + 1 , IA + M - 1 , DESCA( MB_ )
070
071 ITMP = I - IA
072 IBLK = MIN( DESCA( MB_ ) , M - ITMP )
073 CALL PSLASE2 ( UPLO , IBLK , I - IA , ALPHA , ALPHA , A , I ,
074 $ JA , DESCA )
075 CALL PSLASE2 ( UPLO , IBLK , N - I + IA , ALPHA , BETA , A , I ,
076 $ JA + I - IA , DESCA )
077 30 CONTINUE
077
078 ELSE
078
079 JN = MIN( ICEIL( JA , DESCA( NB_ ) ) * DESCA( NB_ ) ,
080 $ JA + N - 1 )
081 CALL PSLASE2 ( UPLO , M , JN - JA + 1 , ALPHA , BETA , A , IA ,
082 $ JA , DESCA )
083 DO 40 J = JN + 1 , JA + N - 1 , DESCA( NB_ )
083
084 JTMP = J - JA
085 JBLK = MIN( DESCA( NB_ ) , N - JTMP )
086 CALL PSLASE2 ( UPLO , J - JA , JBLK , ALPHA , ALPHA , A , IA ,
087 $ J , DESCA )
088 CALL PSLASE2 ( UPLO , M - J + JA , JBLK , ALPHA , BETA , A ,
089 $ IA + J - JA , J , DESCA )
090 40 CONTINUE
090
091 END IF
092 END IF
093
094 END IF
095
096 RETURN
097
098 * End of PSLASET
099
100 END9
15
|
|
Variables in Routine PSLASET()
| Summary Report |
| Data Type | Quantity | Size(byte) |
| CHARACTER | 1 | 1 |
| INTEGER | 26 | 104 |
| LOGICAL | 1 | 1 |
| REAL | 2 | 8 |
| TOTAL | 30 | 114 |
List of Variables
CHARACTER
INTEGER
| BLOCK_CYCLIC_2D | CSRC_ | CTXT_ | DLEN_ | DTYPE_ |
| I | IA | IAA | IBLK | ICEIL |
| IN | ITMP | J | JA | JAA |
| JBLK | JN | JTMP | LLD_ | M |
| M_ | MB_ | N | N_ | NB_ |
| RSRC_ | | | | |
LOGICAL
REAL
Variables Dependence Graph Put the mouse over a right hand side variable to display the corresponding line of the dependence | | - | | - | - | | I | <--- | INDO 10 I = IN+1, IA+M-1, DESCA( MB_ ){2DO 30 I = IN+1, IA+M-1, DESCA( MB_ )}, MDO 10 I = IN+1, IA+M-1, DESCA( MB_ ){2DO 30 I = IN+1, IA+M-1, DESCA( MB_ )}, MB_DO 10 I = IN+1, IA+M-1, DESCA( MB_ ){2DO 30 I = IN+1, IA+M-1, DESCA( MB_ )}, IADO 10 I = IN+1, IA+M-1, DESCA( MB_ ){2DO 30 I = IN+1, IA+M-1, DESCA( MB_ )} |
| IAA | <--- | JTMPIAA = IA + JTMP, IAIAA = IA + JTMP |
| IBLK | <--- | ITMPIBLK = MIN( DESCA( MB_ ), M-ITMP ){2IBLK = MIN( DESCA( MB_ ), M-ITMP )}, MIBLK = MIN( DESCA( MB_ ), M-ITMP ){2IBLK = MIN( DESCA( MB_ ), M-ITMP )}, MB_IBLK = MIN( DESCA( MB_ ), M-ITMP ){2IBLK = MIN( DESCA( MB_ ), M-ITMP )} |
| IN | <--- | ICEILIN = MIN( ICEIL( IA, DESCA( MB_ ) ) * DESCA( MB_ ), IA+M-1 ){2IN = MIN( ICEIL( IA, DESCA( MB_ ) ) * DESCA( MB_ ),}, MIN = MIN( ICEIL( IA, DESCA( MB_ ) ) * DESCA( MB_ ), IA+M-1 ){2IN = MIN( ICEIL( IA, DESCA( MB_ ) ) * DESCA( MB_ ),}, MB_IN = MIN( ICEIL( IA, DESCA( MB_ ) ) * DESCA( MB_ ), IA+M-1 ){2IN = MIN( ICEIL( IA, DESCA( MB_ ) ) * DESCA( MB_ ),}, IAIN = MIN( ICEIL( IA, DESCA( MB_ ) ) * DESCA( MB_ ), IA+M-1 ){2IN = MIN( ICEIL( IA, DESCA( MB_ ) ) * DESCA( MB_ ),} |
| ITMP | <--- | IITMP = I-IA{2ITMP = I-IA}, IAITMP = I-IA{2ITMP = I-IA} |
| J | <--- | JADO 20 J = JN+1, JA+N-1, DESCA( NB_ ){2DO 40 J = JN+1, JA+N-1, DESCA( NB_ )}, JNDO 20 J = JN+1, JA+N-1, DESCA( NB_ ){2DO 40 J = JN+1, JA+N-1, DESCA( NB_ )}, NDO 20 J = JN+1, JA+N-1, DESCA( NB_ ){2DO 40 J = JN+1, JA+N-1, DESCA( NB_ )}, NB_DO 20 J = JN+1, JA+N-1, DESCA( NB_ ){2DO 40 J = JN+1, JA+N-1, DESCA( NB_ )} |
| JAA | <--- | ITMPJAA = JA + ITMP, JAJAA = JA + ITMP |
| JBLK | <--- | JTMPJBLK = MIN( DESCA( NB_ ), N-JTMP ){2JBLK = MIN( DESCA( NB_ ), N-JTMP )}, NJBLK = MIN( DESCA( NB_ ), N-JTMP ){2JBLK = MIN( DESCA( NB_ ), N-JTMP )}, NB_JBLK = MIN( DESCA( NB_ ), N-JTMP ){2JBLK = MIN( DESCA( NB_ ), N-JTMP )} |
| JN | <--- | ICEILJN = MIN( ICEIL( JA, DESCA( NB_ ) ) * DESCA( NB_ ), JA+N-1 ){2JN = MIN( ICEIL( JA, DESCA( NB_ ) ) * DESCA( NB_ ),}, JAJN = MIN( ICEIL( JA, DESCA( NB_ ) ) * DESCA( NB_ ), JA+N-1 ){2JN = MIN( ICEIL( JA, DESCA( NB_ ) ) * DESCA( NB_ ),}, NJN = MIN( ICEIL( JA, DESCA( NB_ ) ) * DESCA( NB_ ), JA+N-1 ){2JN = MIN( ICEIL( JA, DESCA( NB_ ) ) * DESCA( NB_ ),}, NB_JN = MIN( ICEIL( JA, DESCA( NB_ ) ) * DESCA( NB_ ), JA+N-1 ){2JN = MIN( ICEIL( JA, DESCA( NB_ ) ) * DESCA( NB_ ),} |
| JTMP | <--- | JJTMP = J-JA{2JTMP = J-JA}, JAJTMP = J-JA{2JTMP = J-JA} |
|
|
Analysis elements of the routine PSLASET() Put the mouse over each element to display detailed matching information
Assigned variables |
| | | BLOCK_CYCLIC_2D , CSRC_ , CTXT_ , DLEN_ , DTYPE_ , I , IAA , IBLK , IN , ITMP , J , JAA , JBLK , JN , JTMP , LLD_ , M_ , MB_ , N_ , NB_ , RSRC_ |
|
Active variables |
| | | A , ALPHA , BETA , BLOCK_CYCLIC_2D , CSRC_ , CTXT_ , DESCA , DLEN_ , DTYPE_ , I , IA , IAA , IBLK , ICEIL , IN , ITMP , J , JA , JAA , JBLK , JN , JTMP , LLD_ , LSAME , M , M_ , MB_ , N , N_ , NB_ , RSRC_ , UPLO |
|
Accessed arrays [ array name : associated index ] |
| | DESCA | : MB_ , MB_ , MB_ , MB_ , MB_ , MB_ , MB_ , NB_ , NB_ , NB_ , NB_ , NB_ , NB_ , NB_ |
| | ICEIL | : IA, DESCA( MB_ ) , IA, DESCA( MB_ ) , JA, DESCA( NB_ ) , JA, DESCA( NB_ ) |
| | LSAME | : UPLO, 'L' , UPLO, 'U' |
|
Conditional statements [ statement : associated predicate ] |
| | do | : ( 10 I = IN + 1 , IA + M - 1 , DESCA( MB_ ) ) , ( 20 J = JN + 1 , JA + N - 1 , DESCA( NB_ ) ) , ( 30 I = IN + 1 , IA + M - 1 , DESCA( MB_ ) ) , ( 40 J = JN + 1 , JA + N - 1 , DESCA( NB_ ) ) |
| | if | : ( M.EQ.0 .OR. N.EQ.0 ) , ( (M.LE.( DESCA( MB_ ) - MOD( IA - 1 , DESCA( MB_ ) ) ) .OR. ) , ( (LSAME( UPLO , 'U' ) ) ) , ( (LSAME( UPLO , 'L' ) ) ) , ( M.LE.N ) |
|
| List of variables | ALPHA BETA BLOCK_CYCLIC_2D CSRC_ CTXT_ DLEN_ DTYPE_
| I IA IAA IBLK ICEIL IN ITMP J
| JA JAA JBLK JN JTMP LLD_ LSAME M
| M_ MB_ N N_ NB_ RSRC_ UPLO | | close
| |
ALPHA
BETA
BLOCK_CYCLIC_2D
CSRC_
CTXT_
DLEN_
DTYPE_
I
IA
IAA
IBLK
ICEIL
IN
ITMP
J
JA
JAA
JBLK
JN
JTMP
LLD_
LSAME
M
M_
MB_
N
N_
NB_
RSRC_
UPLO
390
| |