|
|
| |
| # lines: |
220 | | # code: |
220 | | # comment: | 0 | |
# blank: | 0 |
| # Variables: | 30 |
| # Callers: | 15 |
| # Callings: | 1 |
| # Words: | 87 |
| # Keywords: | 54 |
|
|
|
|
|
..
.. Array Arguments ..
..
Purpose
=======
PDLASET 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) DOUBLE PRECISION
The constant to which the offdiagonal elements are to be
set.
BETA (global input) DOUBLE PRECISION
The constant to which the diagonal elements are to be set.
A (local output) DOUBLE PRECISION 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 PDLASET( 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 DOUBLE PRECISION 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 PDLASE2
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 PDLASE2 ( 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 PDLASE2 ( 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 PDLASE2 ( 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 PDLASE2 ( 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 PDLASE2 ( 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 PDLASE2 ( 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 PDLASE2 ( UPLO , IBLK , I - IA , ALPHA , ALPHA , A , I ,
074 $ JA , DESCA )
075 CALL PDLASE2 ( 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 PDLASE2 ( 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 PDLASE2 ( UPLO , J - JA , JBLK , ALPHA , ALPHA , A , IA ,
087 $ J , DESCA )
088 CALL PDLASE2 ( 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 PDLASET
099
100 END9
15
|
|
Variables in Routine PDLASET()
| Summary Report |
| Data Type | Quantity | Size(byte) |
| CHARACTER | 1 | 1 |
| DOUBLE PRECISION | 2 | 8 |
| INTEGER | 26 | 104 |
| LOGICAL | 1 | 1 |
| TOTAL | 30 | 114 |
List of Variables
CHARACTER
DOUBLE PRECISION
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
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 PDLASET() 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
240
| |