5
6
7
8
9
10
11
12 INTEGER INFO, MEMSIZE, NIN, NNOCHECK, NOUT, NPASSED,
13 $ NSKIPPED, NTESTS
14
15
16 INTEGER ISEED( 4 )
17 COMPLEX*16 MEM( MEMSIZE )
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 INTEGER BLOCK_CYCLIC_2D, DLEN_, DTYPE_, CTXT_, M_, N_,
76 $ MB_, NB_, RSRC_, CSRC_, LLD_
77 parameter( block_cyclic_2d = 1, dlen_ = 9, dtype_ = 1,
78 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
79 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
80 INTEGER ZPLXSZ, INTGSZ
81 parameter( zplxsz = 16, intgsz = 4 )
82 INTEGER DBLESZ
83 parameter( dblesz = 8 )
84 INTEGER MAXSETSIZE
85 parameter( maxsetsize = 50 )
86
87
88 CHARACTER SUBTESTS
89 INTEGER CONTEXT, IAM, IMIDPAD, INITCON, IPOSTPAD,
90 $ IPREPAD, ISIZEHEEVX, ISIZESUBTST, ISIZETST,
91 $ LDA, LLRWORK, MATSIZE, MATTYPE, MYCOL, MYROW,
92 $ N, NB, NMATSIZES, NMATTYPES, NNODES, NP, NPCOL,
93 $ NPCONFIGS, NPROW, NQ, NUPLOS, ORDER, PCONFIG,
94 $ PTRA, PTRCOPYA, PTRGAP, PTRICLUS, PTRIFAIL,
95 $ PTRIWRK, , PTRW, PTRW2, PTRWORK, PTRZ,
96 $ RES, RSIZECHK, RSIZEHEEVX, RSIZEQTQ
97
98
99
100
101DOUBLE PRECISION ABSTOL, THRESH
102
103
104 CHARACTER UPLOS( 2 )
105 INTEGER DESCA( DLEN_ ), MATSIZES( MAXSETSIZE ),
106 $ MATTYPES( MAXSETSIZE ), NBS( MAXSETSIZE ),
107 $ NPCOLS( MAXSETSIZE ), NPROWS( MAXSETSIZE )
108
109
110 INTEGER ICEIL, NUMROC
112
113
117
118
120
121
122
123 IF( block_cyclic_2d*csrc_*ctxt_*dlen_*dtype_*lld_*mb_*m_*nb_*n_*
124 $ rsrc_.LT.0 )RETURN
125
126 CALL blacs_pinfo( iam, nnodes )
127 CALL blacs_get( -1, 0, initcon )
129
130 CALL pdsepinfo( initcon, iam, nin, nout, maxsetsize, nmatsizes,
131 $ matsizes, nuplos, uplos, npconfigs, nprows,
132 $ npcols, nbs, nmattypes, mattypes, 22, subtests,
133 $ thresh, order, abstol, info )
134
136
137 IF( info.EQ.0 ) THEN
138
139
140 DO 40 matsize = 1, nmatsizes
141
142 DO 30 pconfig = 1, npconfigs
143
144 DO 20 mattype = 1, nmattypes
145
146 DO 10 uplo = 1, nuplos
147
148 n = matsizes( matsize )
149 order = n
150
151 nprow = nprows( pconfig )
152 npcol = npcols( pconfig )
153 nb = nbs( pconfig )
154
155 np =
numroc( n, nb, 0, 0, nprow )
156 nq =
numroc( n, nb, 0, 0, npcol )
157 iprepad =
max( nb, np )
158 imidpad = nb
159 ipostpad =
max( nb, nq )
160
161 lda =
max( np, 1 ) + imidpad
162
163 CALL blacs_get( -1, 0, context )
165 CALL BLACS_GRIDINFO( CONTEXT, NPROW, NPCOL, MYROW,
166 $ MYCOL )
167.GE. IF( MYROW0 ) THEN
168 CALL DESCINIT( DESCA, N, N, NB, NB, 0, 0,
169 $ CONTEXT, LDA, INFO )
170 CALL PZLASIZESEP( DESCA, IPREPAD, IPOSTPAD,
171 $ SIZEMQRLEFT, SIZEMQRRIGHT,
172 $ SIZEQRF, SIZETMS, RSIZEQTQ,
173 $ RSIZECHK, SIZEHEEVX,
174 $ RSIZEHEEVX, ISIZEHEEVX,
175 $ SIZEHEEVD, RSIZEHEEVD,
176 $ ISIZEHEEVD,
177 $ SIZESUBTST, RSIZESUBTST,
178 $ ISIZESUBTST, SIZETST,
179 $ RSIZETST, ISIZETST )
180
181 PTRA = 1
182 PTRZ = PTRA + LDA*NQ + IPREPAD + IPOSTPAD
183 PTRCOPYA = PTRZ + LDA*NQ + IPREPAD + IPOSTPAD
184 PTRW = PTRCOPYA + LDA*NQ + IPREPAD + IPOSTPAD
185 PTRW2 = PTRW + ICEIL( MAX( N, 1 )+IPREPAD+
186 $ IPOSTPAD, ZPLXSZ / DBLESZ )
187 PTRWORK = PTRW2 + ICEIL( MAX( N, 1 )+IPREPAD+
188 $ IPOSTPAD, ZPLXSZ / DBLESZ )
189 PTRGAP = PTRWORK + SIZETST + IPREPAD + IPOSTPAD
190 PTRIFAIL = PTRGAP + ICEIL( NPROW*NPCOL+IPREPAD+
191 $ IPOSTPAD, ZPLXSZ / DBLESZ )
192 PTRICLUS = PTRIFAIL + ICEIL( N+IPREPAD+IPOSTPAD,
193 $ ZPLXSZ / INTGSZ )
194 PTRIWRK = PTRICLUS + ICEIL( 2*NPROW*NPCOL+
195 $ IPREPAD+IPOSTPAD, ZPLXSZ / INTGSZ )
196 PTRRWORK = PTRIWRK + ICEIL( ISIZETST+IPREPAD+
197 $ IPOSTPAD, ZPLXSZ / INTGSZ )
198 LLRWORK = ( MEMSIZE-PTRRWORK+1 )*ZPLXSZ / DBLESZ
199
200
201 NTESTS = NTESTS + 1
202.LT. IF( LLRWORKRSIZETST ) THEN
203 NSKIPPED = NSKIPPED + 1
204 ELSE
205 CALL PZSEPTST( DESCA, UPLOS( UPLO ), N,
206 $ MATTYPES( MATTYPE ), SUBTESTS,
207 $ THRESH, N, ABSTOL, ISEED,
208 $ MEM( PTRA ), MEM( PTRCOPYA ),
209 $ MEM( PTRZ ), LDA, MEM( PTRW ),
210 $ MEM( PTRW2 ), MEM( PTRIFAIL ),
211 $ MEM( PTRICLUS ),
212 $ MEM( PTRGAP ), IPREPAD,
213 $ IPOSTPAD, MEM( PTRWORK ),
214 $ SIZETST, MEM( PTRRWORK ),
215 $ LLRWORK, MEM( PTRIWRK ),
216 $ ISIZETST, NOUT, RES )
217
218.EQ. IF( RES0 ) THEN
219 NPASSED = NPASSED + 1
220.EQ. ELSE IF( RES2 ) THEN
221 NNOCHECK = NNOCHECK + 1
222.EQ. ELSE IF( RES3 ) THEN
223 NSKIPPED = NSKIPPED + 1
224 WRITE( NOUT, FMT=* )' pzsepreq failed
'
225 CALL BLACS_ABORT( CONTEXT, -1 )
226 END IF
227 END IF
228 CALL BLACS_GRIDEXIT( CONTEXT )
229 END IF
230 10 CONTINUE
231 20 CONTINUE
232 30 CONTINUE
233 40 CONTINUE
234 END IF
235
236
237 RETURN
238
239
240
integer function iceil(inum, idenom)
subroutine blacs_gridinit(cntxt, c, nprow, npcol)
subroutine descinit(desc, m, n, mb, nb, irsrc, icsrc, ictxt, lld, info)
subroutine blacs_gridexit(cntxt)
subroutine blacs_gridinfo(cntxt, nprow, npcol, myrow, mycol)
integer function numroc(n, nb, iproc, isrcproc, nprocs)
subroutine pdsepinfo(context, iam, nin, nout, maxsetsize, nmatsizes, matsizes, nuplos, uplos, npconfigs, nprows, npcols, nbs, nmattypes, mattypes, maxtype, subtests, thresh, order, abstol, info)
subroutine pzlasizesep(desca, iprepad, ipostpad, sizemqrleft, sizemqrright, sizeqrf, sizetms, rsizeqtq, rsizechk, sizeheevx, rsizeheevx, isizeheevx, sizeheevd, rsizeheevd, isizeheevd, sizesubtst, rsizesubtst, isizesubtst, sizetst, rsizetst, isizetst)
subroutine pzsepreq(nin, mem, memsize, nout, iseed, ntests, nskipped, nnocheck, npassed, info)
subroutine pzseptst(desca, uplo, n, mattype, subtests, thresh, order, abstol, iseed, a, copya, z, lda, win, wnew, ifail, iclustr, gap, iprepad, ipostpad, work, lwork, rwork, lrwork, iwork, liwork, nout, info)