|
|
| |
| # lines: |
381 | | # code: |
381 | | # comment: | 0 | |
# blank: | 0 |
| # Variables: | 63 |
| # Callers: | 0 |
| # Callings: | 3 |
| # Words: | 153 |
| # Keywords: | 86 |
|
|
|
|
|
..
.. Array Arguments ..
..
Purpose
=======
PSGEHRD reduces a real general distributed matrix sub( A )
to upper Hessenberg form H by an orthogonal similarity transforma-
tion: Q' * sub( A ) * Q = H, where
sub( A ) = A(IA+N-1:IA+N-1,JA+N-1:JA+N-1).
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
=========
N (global input) INTEGER
The number of rows and columns to be operated on, i.e. the
order of the distributed submatrix sub( A ). N >= 0.
ILO (global input) INTEGER
IHI (global input) INTEGER
It is assumed that sub( A ) is already upper triangular in
rows IA:IA+ILO-2 and IA+IHI:IA+N-1 and columns JA:JA+ILO-2
and JA+IHI:JA+N-1. See Further Details. If N > 0,
1 <= ILO <= IHI <= N; otherwise set ILO = 1, IHI = N.
A (local input/local output) REAL pointer into the
local memory to an array of dimension (LLD_A,LOCc(JA+N-1)).
On entry, this array contains the local pieces of the N-by-N
general distributed matrix sub( A ) to be reduced. On exit,
the upper triangle and the first subdiagonal of sub( A ) are
overwritten with the upper Hessenberg matrix H, and the ele-
ments below the first subdiagonal, with the array TAU, repre-
sent the orthogonal matrix Q as a product of elementary
reflectors. See Further Details.
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.
TAU (local output) REAL array, dimension LOCc(JA+N-2)
The scalar factors of the elementary reflectors (see Further
Details). Elements JA:JA+ILO-2 and JA+IHI:JA+N-2 of TAU are
set to zero. TAU is tied to the distributed matrix A.
WORK (local workspace/local output) REAL array,
dimension (LWORK)
On exit, WORK( 1 ) returns the minimal and optimal LWORK.
LWORK (local or global input) INTEGER
The dimension of the array WORK.
LWORK is local input and must be at least
LWORK >= NB*NB + NB*MAX( IHIP+1, IHLP+INLQ )
where NB = MB_A = NB_A, IROFFA = MOD( IA-1, NB ),
ICOFFA = MOD( JA-1, NB ), IOFF = MOD( IA+ILO-2, NB ),
IAROW = INDXG2P( IA, NB, MYROW, RSRC_A, NPROW ),
IHIP = NUMROC( IHI+IROFFA, NB, MYROW, IAROW, NPROW ),
ILROW = INDXG2P( IA+ILO-1, NB, MYROW, RSRC_A, NPROW ),
IHLP = NUMROC( IHI-ILO+IOFF+1, NB, MYROW, ILROW, NPROW ),
ILCOL = INDXG2P( JA+ILO-1, NB, MYCOL, CSRC_A, NPCOL ),
INLQ = NUMROC( N-ILO+IOFF+1, NB, MYCOL, ILCOL, NPCOL ),
INDXG2P and NUMROC are ScaLAPACK tool functions;
MYROW, MYCOL, NPROW and NPCOL can be determined by calling
the subroutine BLACS_GRIDINFO.
If LWORK = -1, then LWORK is global input and a workspace
query is assumed; the routine only calculates the minimum
and optimal size for all work arrays. Each of these
values is returned in the first entry of the corresponding
work array, and no error message is issued by PXERBLA.
INFO (global output) INTEGER
= 0: successful exit
< 0: If the i-th argument is an array and the j-entry had
an illegal value, then INFO = -(i*100+j), if the i-th
argument is a scalar and had an illegal value, then
INFO = -i.
Further Details
===============
The matrix Q is represented as a product of (ihi-ilo) elementary
reflectors
Q = H(ilo) H(ilo+1) . . . H(ihi-1).
Each H(i) has the form
H(i) = I - tau * v * v'
where tau is a real scalar, and v is a real vector with
v(1:I) = 0, v(I+1) = 1 and v(IHI+1:N) = 0; v(I+2:IHI) is stored on
exit in A(IA+ILO+I:IA+IHI-1,JA+ILO+I-2), and tau in TAU(JA+ILO+I-2).
The contents of A(IA:IA+N-1,JA:JA+N-1) are illustrated by the follow-
ing example, with N = 7, ILO = 2 and IHI = 6:
on entry on exit
( a a a a a a a ) ( a a h h h h a )
( a a a a a a ) ( a h h h h a )
( a a a a a a ) ( h h h h h h )
( a a a a a a ) ( v2 h h h h h )
( a a a a a a ) ( v2 v3 h h h h )
( a a a a a a ) ( v2 v3 v4 h h h )
( a ) ( a )
where a denotes an element of the original matrix sub( A ), H denotes
a modified element of the upper Hessenberg matrix H, and vi denotes
an element of the vector defining H(JA+ILO+I-2).
Alignment requirements
======================
The distributed submatrix sub( A ) must verify some alignment proper-
ties, namely the following expression should be true:
( MB_A.EQ.NB_A .AND. IROFFA.EQ.ICOFFA )
=====================================================================
.. Parameters ..
|
|
|
|
001 SUBROUTINE PSGEHRD( N , ILO , IHI , A , IA , JA , DESCA , TAU , WORK ,
002 $LWORK , INFO )
003
004 * -- ScaLAPACK routine(version 1.7) --
005 * University of Tennessee , Knoxville , Oak Ridge National Laboratory ,
006 * and University of California , Berkeley.
007 * May 25 , 2001
008
009 * .. Scalar Arguments ..
010 INTEGER IA , IHI , ILO , INFO , JA , LWORK , N
011 INTEGER BLOCK_CYCLIC_2D , CSRC_ , CTXT_ , DLEN_ , DTYPE_ ,
012 $LLD_ , MB_ , M_ , NB_ , N_ , RSRC_
013 PARAMETER( BLOCK_CYCLIC_2D = 1 , DLEN_ = 9 , DTYPE_ = 1 ,
014 $CTXT_ = 2 , M_ = 3 , N_ = 4 , MB_ = 5 , NB_ = 6 ,
015 $RSRC_ = 7 , CSRC_ = 8 , LLD_ = 9 )
016 REAL ONE , ZERO
017 PARAMETER( ONE = 1.0E + 0 , ZERO = 0.0E + 0 )
018 * ..
019 * .. Local Scalars ..
020 LOGICAL LQUERY
021 CHARACTER COLCTOP , ROWCTOP
022 INTEGER I , IACOL , IAROW , IB , ICOFFA , ICTXT , IHIP ,
023 $IHLP , IIA , IINFO , ILCOL , ILROW , IMCOL , INLQ ,
024 $IOFF , IPT , IPW , IPY , IROFFA , J , JJ , JJA , JY ,
025 $K , L , LWMIN , MYCOL , MYROW , NB , NPCOL , NPROW ,
026 $NQ
027 REAL EI
028 * ..
029 * .. Local Arrays ..
030 INTEGER DESCY( DLEN_ ) , IDUM1( 3 ) , IDUM2( 3 )
031 * ..
032 * .. External Subroutines ..
033 EXTERNAL BLACS_GRIDINFO , CHK1MAT , DESCSET , INFOG1L ,
034 $INFOG2L , PCHK1MAT , PSGEMM , PSGEHD2 ,
035 $PSLAHRD , PSLARFB , PB_TOPGET , PB_TOPSET , PXERBLA
036 * ..
037 * .. External Functions ..
038 INTEGER INDXG2P , NUMROC
039 EXTERNAL INDXG2P , NUMROC
040 * ..
041 * .. Intrinsic Functions ..
042 INTRINSIC MAX , MIN , MOD , REAL
043 * ..
044 * .. Executable Statements ..
045
046 * Get grid parameters
047
048 ICTXT = DESCA( CTXT_ )
049 CALL BLACS_GRIDINFO( ICTXT , NPROW , NPCOL , MYROW , MYCOL )
050
051 * Test the input parameters
052
053 INFO = 0
054 IF( NPROW.EQ. - 1 ) THEN
054
055 INFO = - (700 + CTXT_)
056 ELSE
056
057 CALL CHK1MAT( N , 1 , N , 1 , IA , JA , DESCA , 7 , INFO )
058 IF( INFO.EQ.0 ) THEN
058
059 NB = DESCA( NB_ )
060 IROFFA = MOD( IA - 1 , NB )
061 ICOFFA = MOD( JA - 1 , NB )
062 CALL INFOG2L( IA , JA , DESCA , NPROW , NPCOL , MYROW , MYCOL ,
063 $ IIA , JJA , IAROW , IACOL )
064 IHIP = NUMROC( IHI + IROFFA , NB , MYROW , IAROW , NPROW )
065 IOFF = MOD( IA + ILO - 2 , NB )
066 ILROW = INDXG2P( IA + ILO - 1 , NB , MYROW , DESCA( RSRC_ ) ,
067 $ NPROW )
068 IHLP = NUMROC( IHI - ILO + IOFF + 1 , NB , MYROW , ILROW , NPROW )
069 ILCOL = INDXG2P( JA + ILO - 1 , NB , MYCOL , DESCA( CSRC_ ) ,
070 $ NPCOL )
071 INLQ = NUMROC( N - ILO + IOFF + 1 , NB , MYCOL , ILCOL , NPCOL )
072 LWMIN = NB*( NB + MAX( IHIP + 1 , IHLP + INLQ ) )
073
074 WORK( 1 ) = REAL( LWMIN )
075 LQUERY =( LWORK.EQ. - 1 )
076 IF( ILO.LT.1 .OR. ILO.GT.MAX( 1 , N ) ) THEN
076
077 INFO = - 2
078 ELSE IF( IHI.LT.MIN( ILO , N ) .OR. IHI.GT.N ) THEN
078
079 INFO = - 3
080 ELSE IF( IROFFA.NE.ICOFFA .OR. IROFFA.NE.0 ) THEN
080
081 INFO = - 6
082 ELSE IF( DESCA( MB_ ).NE.DESCA( NB_ ) ) THEN
082
083 INFO = - (700 + NB_)
084 ELSE IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
084
085 INFO = - 10
086 END IF
087 END IF
088 IDUM1( 1 ) = ILO
089 IDUM2( 1 ) = 2
090 IDUM1( 2 ) = IHI
091 IDUM2( 2 ) = 3
092 IF( LWORK.EQ. - 1 ) THEN
092
093 IDUM1( 3 ) = - 1
094 ELSE
094
095 IDUM1( 3 ) = 1
096 END IF
097 IDUM2( 3 ) = 10
098 CALL PCHK1MAT( N , 1 , N , 1 , IA , JA , DESCA , 7 , 3 , IDUM1 , IDUM2 ,
099 $ INFO )
100 END IF
101
102 IF( INFO.NE.0 ) THEN
102
103 CALL PXERBLA( ICTXT , 'PSGEHRD' , - INFO )
104 RETURN
105 ELSE IF( LQUERY ) THEN
105
106 RETURN
107 END IF
108
109 * Set elements JA : JA + ILO - 2 and JA + JHI - 1 : JA + N - 2 of TAU to zero.
110
111 NQ = NUMROC( JA + N - 2 , NB , MYCOL , DESCA( CSRC_ ) , NPCOL )
112 CALL INFOG1L( JA + ILO - 2 , NB , NPCOL , MYCOL , DESCA( CSRC_ ) , JJ ,
113 $IMCOL )
114 DO 10 J = JJA , MIN( JJ , NQ )
114
115 TAU( J ) = ZERO
116 10 CONTINUE
117
118 CALL INFOG1L( JA + IHI - 1 , NB , NPCOL , MYCOL , DESCA( CSRC_ ) , JJ ,
119 $IMCOL )
120 DO 20 J = JJ , NQ
120
121 TAU( J ) = ZERO
122 20 CONTINUE
123
124 * Quick return if possible
125
126 IF( IHI - ILO.LE.0 )
126
127 $ RETURN
128
129 CALL PB_TOPGET( ICTXT , 'Combine' , 'Columnwise' , COLCTOP )
130 CALL PB_TOPGET( ICTXT , 'Combine' , 'Rowwise' , ROWCTOP )
131 CALL PB_TOPSET( ICTXT , 'Combine' , 'Columnwise' , '1 - tree' )
132 CALL PB_TOPSET( ICTXT , 'Combine' , 'Rowwise' , '1 - tree' )
133
134 IPT = 1
135 IPY = IPT + NB * NB
136 IPW = IPY + IHIP * NB
137 CALL DESCSET( DESCY , IHI + IROFFA , NB , NB , NB , IAROW , ILCOL , ICTXT ,
138 $ MAX( 1 , IHIP ) )
139
140 K = ILO
141 IB = NB - IOFF
142 JY = IOFF + 1
143
144 * Loop over remaining block of columns
145
146 DO 30 L = 1 , IHI - ILO + IOFF - NB , NB
146
147 I = IA + K - 1
148 J = JA + K - 1
149
150 * Reduce columns j : j + ib - 1 to Hessenberg form , returning the
151 * matrices V and T of the block reflector H = I - V*T*V'
152 * which performs the reduction , and also the matrix Y = A*V*T
153
154 CALL PSLAHRD ( IHI , K , IB , A , IA , J , DESCA , TAU , WORK( IPT ) ,
155 $ WORK( IPY ) , 1 , JY , DESCY , WORK( IPW ) )
156
157 * Apply the block reflector H to A(ia : ia + ihi - 1 , j + ib : ja + ihi - 1)
158 * from the right , computing A := A - Y * V'.
159 * V(i + ib , ib - 1) must be set to 1.
160
161 CALL PSELSET2( EI , A , I + IB , J + IB - 1 , DESCA , ONE )
162 CALL PSGEMM( 'No transpose' , 'Transpose' , IHI , IHI - K - IB + 1 , IB ,
163 $ - ONE , WORK( IPY ) , 1 , JY , DESCY , A , I + IB , J ,
164 $ DESCA , ONE , A , IA , J + IB , DESCA )
165 CALL PSELSET( A , I + IB , J + IB - 1 , DESCA , EI )
166
167 * Apply the block reflector H to A(i + 1 : ia + ihi - 1 , j + ib : ja + n - 1) from
168 * the left
169
170 CALL PSLARFB ( 'Left' , 'Transpose' , 'Forward' , 'Columnwise' ,
171 $ IHI - K , N - K - IB + 1 , IB , A , I + 1 , J , DESCA ,
172 $ WORK( IPT ) , A , I + 1 , J + IB , DESCA , WORK( IPY ) )
173
174 K = K + IB
175 IB = NB
176 JY = 1
177 DESCY( CSRC_ ) = MOD( DESCY( CSRC_ ) + 1 , NPCOL )
178
179 30 CONTINUE
180
181 * Use unblocked code to reduce the rest of the matrix
182
182
183 CALL PSGEHD2 ( N , K , IHI , A , IA , JA , DESCA , TAU , WORK , LWORK ,
184 $ IINFO )
185
186 CALL PB_TOPSET( ICTXT , 'Combine' , 'Columnwise' , COLCTOP )
187 CALL PB_TOPSET( ICTXT , 'Combine' , 'Rowwise' , ROWCTOP )
188
189 WORK( 1 ) = REAL( LWMIN )
190
191 RETURN
192
193 * End of PSGEHRD
194
195 END33
17
|
|
Variables in Routine PSGEHRD()
| Summary Report |
| Data Type | Quantity | Size(byte) |
| CHARACTER | 2 | 2 |
| INTEGER | 55 | 240 |
| LOGICAL | 1 | 1 |
| REAL | 5 | 20 |
| TOTAL | 63 | 263 |
List of Variables
CHARACTER
INTEGER
| BLOCK_CYCLIC_2D | CSRC_ | CTXT_ | DESCY( DLEN_ ) | DLEN_ |
| DTYPE_ | I | IA | IACOL | IAROW |
| IB | ICOFFA | ICTXT | IDUM1( 3 ) | IDUM2( 3 ) |
| IHI | IHIP | IHLP | IIA | IINFO |
| ILCOL | ILO | ILROW | IMCOL | INDXG2P |
| INFO | INLQ | IOFF | IPT | IPW |
| IPY | IROFFA | J | JA | JJ |
| JJA | JY | K | L | LLD_ |
| LWMIN | LWORK | M_ | MB_ | MYCOL |
| MYROW | N | N_ | NB | NB_ |
| NPCOL | NPROW | NQ | NUMROC | RSRC_ |
LOGICAL
REAL
Variables Dependence Graph Put the mouse over a right hand side variable to display the corresponding line of the dependence | | - | | - | - | | DESCY | <--- | CSRC_DESCY( CSRC_ ) = MOD( DESCY( CSRC_ ) + 1, NPCOL ), DESCYDESCY( CSRC_ ) = MOD( DESCY( CSRC_ ) + 1, NPCOL ), NPCOLDESCY( CSRC_ ) = MOD( DESCY( CSRC_ ) + 1, NPCOL ) |
| I | <--- | IAI = IA + K - 1, KI = IA + K - 1 |
| IB | <--- | IOFFIB = NB - IOFF, NBIB = NB - IOFF{2IB = NB} |
| ICOFFA | <--- | JAICOFFA = MOD( JA-1, NB ), NBICOFFA = MOD( JA-1, NB ) |
| ICTXT | <--- | CTXT_ICTXT = DESCA( CTXT_ ) |
| IDUM1 | <--- | IHIIDUM1( 2 ) = IHI, ILOIDUM1( 1 ) = ILO |
| IHIP | <--- | IAROWIHIP = NUMROC( IHI+IROFFA, NB, MYROW, IAROW, NPROW ), IHIIHIP = NUMROC( IHI+IROFFA, NB, MYROW, IAROW, NPROW ), IROFFAIHIP = NUMROC( IHI+IROFFA, NB, MYROW, IAROW, NPROW ), MYROWIHIP = NUMROC( IHI+IROFFA, NB, MYROW, IAROW, NPROW ), NBIHIP = NUMROC( IHI+IROFFA, NB, MYROW, IAROW, NPROW ), NPROWIHIP = NUMROC( IHI+IROFFA, NB, MYROW, IAROW, NPROW ), NUMROCIHIP = NUMROC( IHI+IROFFA, NB, MYROW, IAROW, NPROW ) |
| IHLP | <--- | IHIIHLP = NUMROC( IHI-ILO+IOFF+1, NB, MYROW, ILROW, NPROW ), ILOIHLP = NUMROC( IHI-ILO+IOFF+1, NB, MYROW, ILROW, NPROW ), ILROWIHLP = NUMROC( IHI-ILO+IOFF+1, NB, MYROW, ILROW, NPROW ), IOFFIHLP = NUMROC( IHI-ILO+IOFF+1, NB, MYROW, ILROW, NPROW ), MYROWIHLP = NUMROC( IHI-ILO+IOFF+1, NB, MYROW, ILROW, NPROW ), NBIHLP = NUMROC( IHI-ILO+IOFF+1, NB, MYROW, ILROW, NPROW ), NPROWIHLP = NUMROC( IHI-ILO+IOFF+1, NB, MYROW, ILROW, NPROW ), NUMROCIHLP = NUMROC( IHI-ILO+IOFF+1, NB, MYROW, ILROW, NPROW ) |
| ILCOL | <--- | ILOILCOL = INDXG2P( JA+ILO-1, NB, MYCOL, DESCA( CSRC_ ),, INDXG2PILCOL = INDXG2P( JA+ILO-1, NB, MYCOL, DESCA( CSRC_ ),, CSRC_ILCOL = INDXG2P( JA+ILO-1, NB, MYCOL, DESCA( CSRC_ ),, JAILCOL = INDXG2P( JA+ILO-1, NB, MYCOL, DESCA( CSRC_ ),, MYCOLILCOL = INDXG2P( JA+ILO-1, NB, MYCOL, DESCA( CSRC_ ),, NBILCOL = INDXG2P( JA+ILO-1, NB, MYCOL, DESCA( CSRC_ ),, NPCOLILCOL = INDXG2P( JA+ILO-1, NB, MYCOL, DESCA( CSRC_ ), |
| ILROW | <--- | IAILROW = INDXG2P( IA+ILO-1, NB, MYROW, DESCA( RSRC_ ),, ILOILROW = INDXG2P( IA+ILO-1, NB, MYROW, DESCA( RSRC_ ),, INDXG2PILROW = INDXG2P( IA+ILO-1, NB, MYROW, DESCA( RSRC_ ),, MYROWILROW = INDXG2P( IA+ILO-1, NB, MYROW, DESCA( RSRC_ ),, NBILROW = INDXG2P( IA+ILO-1, NB, MYROW, DESCA( RSRC_ ),, NPROWILROW = INDXG2P( IA+ILO-1, NB, MYROW, DESCA( RSRC_ ),, RSRC_ILROW = INDXG2P( IA+ILO-1, NB, MYROW, DESCA( RSRC_ ), |
| INFO | <--- | CTXT_INFO = -(700+CTXT_), NB_INFO = -(700+NB_) |
| INLQ | <--- | ILCOLINLQ = NUMROC( N-ILO+IOFF+1, NB, MYCOL, ILCOL, NPCOL ), ILOINLQ = NUMROC( N-ILO+IOFF+1, NB, MYCOL, ILCOL, NPCOL ), IOFFINLQ = NUMROC( N-ILO+IOFF+1, NB, MYCOL, ILCOL, NPCOL ), MYCOLINLQ = NUMROC( N-ILO+IOFF+1, NB, MYCOL, ILCOL, NPCOL ), NINLQ = NUMROC( N-ILO+IOFF+1, NB, MYCOL, ILCOL, NPCOL ), NBINLQ = NUMROC( N-ILO+IOFF+1, NB, MYCOL, ILCOL, NPCOL ), NPCOLINLQ = NUMROC( N-ILO+IOFF+1, NB, MYCOL, ILCOL, NPCOL ), NUMROCINLQ = NUMROC( N-ILO+IOFF+1, NB, MYCOL, ILCOL, NPCOL ) |
| IOFF | <--- | IAIOFF = MOD( IA+ILO-2, NB ), ILOIOFF = MOD( IA+ILO-2, NB ), NBIOFF = MOD( IA+ILO-2, NB ) |
| IPW | <--- | IHIPIPW = IPY + IHIP * NB, IPYIPW = IPY + IHIP * NB, NBIPW = IPY + IHIP * NB |
| IPY | <--- | IPTIPY = IPT + NB * NB, NBIPY = IPT + NB * NB |
| IROFFA | <--- | IAIROFFA = MOD( IA-1, NB ), NBIROFFA = MOD( IA-1, NB ) |
| J | <--- | JAJ = JA + K - 1, JJDO 10 J = JJA, MIN( JJ, NQ ){2DO 20 J = JJ, NQ}, JJADO 10 J = JJA, MIN( JJ, NQ ), KJ = JA + K - 1, NQDO 10 J = JJA, MIN( JJ, NQ ){2DO 20 J = JJ, NQ} |
| JY | <--- | IOFFJY = IOFF + 1 |
| K | <--- | IBK = K + IB, ILOK = ILO, KK = K + IB |
| L | <--- | IHIDO 30 L = 1, IHI-ILO+IOFF-NB, NB, ILODO 30 L = 1, IHI-ILO+IOFF-NB, NB, IOFFDO 30 L = 1, IHI-ILO+IOFF-NB, NB, NBDO 30 L = 1, IHI-ILO+IOFF-NB, NB |
| LWMIN | <--- | IHIPLWMIN = NB*( NB + MAX( IHIP+1, IHLP+INLQ ) ), IHLPLWMIN = NB*( NB + MAX( IHIP+1, IHLP+INLQ ) ), INLQLWMIN = NB*( NB + MAX( IHIP+1, IHLP+INLQ ) ), NBLWMIN = NB*( NB + MAX( IHIP+1, IHLP+INLQ ) ) |
| NB | <--- | NB_NB = DESCA( NB_ ) |
| NQ | <--- | CSRC_NQ = NUMROC( JA+N-2, NB, MYCOL, DESCA( CSRC_ ), NPCOL ), JANQ = NUMROC( JA+N-2, NB, MYCOL, DESCA( CSRC_ ), NPCOL ), MYCOLNQ = NUMROC( JA+N-2, NB, MYCOL, DESCA( CSRC_ ), NPCOL ), NNQ = NUMROC( JA+N-2, NB, MYCOL, DESCA( CSRC_ ), NPCOL ), NBNQ = NUMROC( JA+N-2, NB, MYCOL, DESCA( CSRC_ ), NPCOL ), NPCOLNQ = NUMROC( JA+N-2, NB, MYCOL, DESCA( CSRC_ ), NPCOL ), NUMROCNQ = NUMROC( JA+N-2, NB, MYCOL, DESCA( CSRC_ ), NPCOL ) |
| TAU | <--- | ZEROTAU( J ) = ZERO{2TAU( J ) = ZERO} |
| WORK | <--- | LWMINWORK( 1 ) = REAL( LWMIN ){2WORK( 1 ) = REAL( LWMIN )} |
|
|
Analysis elements of the routine PSGEHRD() Put the mouse over each element to display detailed matching information
Assigned variables |
| | | A , BLOCK_CYCLIC_2D , CSRC_ , CTXT_ , DLEN_ , DTYPE_ , I , IB , ICOFFA , ICTXT , IDUM1 , IDUM2 , IHIP , IHLP , ILCOL , ILROW , INFO , INLQ , IOFF , IPT , IPW , IPY , IROFFA , J , JY , K , L , LLD_ , LQUERY , LWMIN , M_ , MB_ , N_ , NB , NB_ , NQ , ONE , RSRC_ , WORK , ZERO |
|
Active variables |
| | | A , BLOCK_CYCLIC_2D , COLCTOP , CSRC_ , CTXT_ , DESCA , DESCY , DLEN_ , DTYPE_ , EI , I , IA , IACOL , IAROW , IB , ICOFFA , ICTXT , IDUM1 , IDUM2 , IHI , IHIP , IHLP , IIA , IINFO , ILCOL , ILO , ILROW , IMCOL , INDXG2P , INFO , INLQ , IOFF , IPT , IPW , IPY , IROFFA , J , JA , JJ , JJA , JY , K , L , LLD_ , LQUERY , LWMIN , LWORK , M_ , MB_ , MYCOL , MYROW , N , N_ , NB , NB_ , NPCOL , NPROW , NQ , NUMROC , ONE , ROWCTOP , RSRC_ , TAU , WORK , ZERO |
|
Accessed arrays [ array name : associated index ] |
| | A | : i+1:ia+ihi-1,j+ib:ja+n-1 , ia:ia+ihi-1,j+ib:ja+ihi-1 |
| | DESCA | : CSRC_ , CSRC_ , CSRC_ , CSRC_ , CTXT_ , MB_ , NB_ , NB_ , RSRC_ |
| | DESCY | : CSRC_ , DLEN_ |
| | IDUM1 | : 1 , 2 , 3 , 3 , 3 |
| | IDUM2 | : 1 , 2 , 3 , 3 |
| | NUMROC | : IHI+IROFFA, NB, MYROW, IAROW, NPROW , IHI-ILO+IOFF+1, NB, MYROW, ILROW, NPROW , JA+N-2, NB, MYCOL, DESCA( CSRC_ ), NPCOL , N-ILO+IOFF+1, NB, MYCOL, ILCOL, NPCOL |
| | TAU | : J , J |
| | WORK | : 1 , 1 , IPT , IPT , IPW , IPY , IPY , IPY |
|
Conditional statements [ statement : associated predicate ] |
| | do | : ( 10 J = JJA , MIN( JJ , NQ ) ) , ( 20 J = JJ , NQ ) , ( 30 L = 1 , IHI - ILO + IOFF - NB , NB ) |
| | if | : ( NPROW.EQ. - 1 ) , ( INFO.EQ.0 ) , ( (ILO.LT.1 .OR. ILO.GT.MAX( 1 , N ) ) ) , ( (IHI.LT.MIN( ILO , N ) .OR. IHI.GT.N ) ) , ( IROFFA.NE.ICOFFA .OR. IROFFA.NE.0 ) , ( (DESCA( MB_ ).NE.DESCA( NB_ ) ) ) , ( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) , ( LWORK.EQ. - 1 ) , ( INFO.NE.0 ) , ( LQUERY ) , ( possible ) , ( IHI-ILO.LE.0 ) |
|
| List of variables | BLOCK_CYCLIC_2D COLCTOP CSRC_ CTXT_ DESCY( DLEN_ ) DLEN_ DTYPE_
| EI I IA IACOL IAROW IB ICOFFA ICTXT
| IDUM1( 3 ) IDUM2( 3 ) IHI IHIP IHLP IIA IINFO ILCOL
| ILO ILROW IMCOL INDXG2P INFO INLQ IOFF IPT
| IPW IPY IROFFA J JA JJ JJA JY
| K L LLD_ LQUERY LWMIN LWORK M_ MB_
| MYCOL MYROW N N_ NB NB_ NPCOL NPROW
| NQ NUMROC ONE ROWCTOP RSRC_ TAU WORK ZERO | | close
| |
BLOCK_CYCLIC_2D
COLCTOP
CSRC_
CTXT_
DESCY( DLEN_ )
DLEN_
DTYPE_
EI
I
IA
IACOL
IAROW
IB
ICOFFA
ICTXT
IDUM1( 3 )
IDUM2( 3 )
IHI
IHIP
IHLP
IIA
IINFO
ILCOL
ILO
ILROW
IMCOL
INDXG2P
INFO
INLQ
IOFF
IPT
IPW
IPY
IROFFA
J
JA
JJ
JJA
JY
K
L
LLD_
LQUERY
LWMIN
LWORK
M_
MB_
MYCOL
MYROW
N
N_
NB
NB_
NPCOL
NPROW
NQ
NUMROC
ONE
ROWCTOP
RSRC_
TAU
WORK
ZERO
368#383#330
| |