3 SUBROUTINE pcgsepreq( NIN, MEM, MEMSIZE, NOUT, ISEED, NTESTS,
4 $ NSKIPPED, NNOCHECK, NPASSED, INFO )
12 INTEGER INFO, MEMSIZE, NIN, NNOCHECK, NOUT, NPASSED,
17 COMPLEX MEM( MEMSIZE )
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 )
81 parameter( five = 5.0e+0 )
82 INTEGER CPLXSZ, INTGSZ
83 parameter( cplxsz = 8, intgsz = 4 )
85 parameter( realsz = 4 )
87 parameter( maxsetsize = 50 )
91 INTEGER CONTEXT, IAM, IBTYPE, IMIDPAD, INITCON,
92 $ ipostpad, iprepad, isizeheevx, isizesubtst,
93 $ isizetst, lda, llrwork, matsize, mattype,
94 $ mycol, myrow, n, nb, nibtypes, nmatsizes,
95 $ nmattypes, nnodes, np, npcol, npconfigs, nprow,
96 $ nq, nuplos, order, pconfig, ptra, ptrb,
97 $ ptrcopya, ptrcopyb, ptrgap, ptriclus, ptrifail,
98 $ ptriwrk, ptrrwork, ptrw, ptrw2, ptrwork, ptrz,
99 $ res, rsizechk, rsizeheevx, rsizeqtq,
100 $ rsizesubtst, rsizetst, sizeheevx, sizemqrleft,
101 $ sizemqrright, sizeqrf, sizesubtst, sizetms,
107 INTEGER DESCA( DLEN_ ), MATSIZES( MAXSETSIZE ),
108 $ mattypes( maxsetsize ), nbs( maxsetsize ),
109 $ npcols( maxsetsize ), nprows( maxsetsize )
113 INTEGER ICEIL, NUMROC
114 EXTERNAL lsame, iceil, numroc
117 EXTERNAL blacs_abort, blacs_get, blacs_gridexit,
118 $ blacs_gridinfo, blacs_gridinit, blacs_pinfo,
126 IF( block_cyclic_2d*csrc_*ctxt_*dlen_*dtype_*lld_*mb_*m_*nb_*n_*
129 CALL blacs_pinfo( iam, nnodes )
130 CALL blacs_get( -1, 0, initcon )
131 CALL blacs_gridinit( initcon,
'R', 1, nnodes )
133 CALL pssepinfo( initcon, iam, nin, nout, maxsetsize, nmatsizes,
134 $ matsizes, nuplos, uplos, npconfigs, nprows,
135 $ npcols, nbs, nmattypes, mattypes, 22, subtests,
136 $ thresh, order, abstol, info )
138 CALL blacs_gridexit( initcon )
146 DO 50 matsize = 1, nmatsizes
148 DO 40 pconfig = 1, npconfigs
150 DO 30 mattype = 1, nmattypes
152 DO 20 uplo = 1, nuplos
153 IF( lsame( subtests,
'Y' ) )
THEN
158 DO 10 ibtype = 1, nibtypes
160 n = matsizes( matsize )
163 nprow = nprows( pconfig )
164 npcol = npcols( pconfig )
167 np = numroc( n, nb, 0, 0, nprow )
168 nq = numroc( n, nb, 0, 0, npcol )
169 iprepad =
max( nb, np )
171 ipostpad =
max( nb, nq )
173 lda =
max( np, 1 ) + imidpad
175 CALL blacs_get( -1, 0, context )
176 CALL blacs_gridinit( context,
'R', nprow,
178 CALL blacs_gridinfo( context, nprow, npcol,
180 IF( myrow.GE.0 )
THEN
181 CALL descinit( desca, n, n, nb, nb, 0, 0,
182 $ context, lda, info )
184 $ sizemqrleft, sizemqrright,
186 $ rsizeqtq, rsizechk,
187 $ sizeheevx, rsizeheevx,
188 $ isizeheevx, sizesubtst,
189 $ rsizesubtst, isizesubtst,
194 ptrz = ptra + lda*nq + iprepad + ipostpad
195 ptrcopyb = ptrz + lda*nq + iprepad + ipostpad
196 ptrb = ptrcopyb + lda*nq + iprepad + ipostpad
197 ptrcopya = ptrb + lda*nq + iprepad + ipostpad
198 ptrw = ptrcopya + lda*nq + iprepad + ipostpad
199 ptrw2 = ptrw + iceil(
max( n, 1 )+iprepad+
200 $ ipostpad, cplxsz / realsz )
201 ptrwork = ptrw2 + iceil(
max( n, 1 )+iprepad+
202 $ ipostpad, cplxsz / realsz )
203 ptrgap = ptrwork + sizetst + iprepad +
205 ptrifail = ptrgap + iceil( nprow*npcol+
208 ptriclus = ptrifail +
209 $ iceil( n+iprepad+ipostpad,
211 ptriwrk = ptriclus + iceil( 2*nprow*npcol+
212 $ iprepad+ipostpad, cplxsz / intgsz )
213 ptrrwork = ptriwrk + iceil( isizetst+iprepad+
214 $ ipostpad, cplxsz / intgsz )
215 llrwork = ( memsize - ptrrwork - ipostpad -
216 $ iprepad + 1 )* ( cplxsz / realsz )
218 IF( llrwork.LT.rsizetst )
THEN
219 nskipped = nskipped + 1
222 $ mattypes( mattype ),
223 $ ibtype, subtests, thresh,
230 $ mem( ptrw ), mem( ptrw2 ),
233 $ mem( ptrgap ), iprepad,
234 $ ipostpad, mem( ptrwork ),
235 $ sizetst, mem( ptrrwork ),
236 $ llrwork, mem( ptriwrk ),
237 $ isizetst, nout, res )
240 npassed = npassed + 1
241 ELSE IF( res.EQ.2 )
THEN
242 nnocheck = nnocheck + 1
243 ELSE IF( res.EQ.3 )
THEN
244 nskipped = nskipped + 1
245 WRITE( nout, fmt = * )
246 $
' pCGSEPREQ failed'
247 CALL blacs_abort( context, -1 )
249 CALL blacs_gridexit( context )
subroutine pcgseptst(desca, uplo, n, mattype, ibtype, subtests, thresh, order, abstol, iseed, a, copya, b, copyb, z, lda, win, wnew, ifail, iclustr, gap, iprepad, ipostpad, work, lwork, rwork, lrwork, iwork, liwork, nout, info)