3 SUBROUTINE pzsepreq( NIN, MEM, MEMSIZE, NOUT, ISEED, NTESTS,
4 $ NSKIPPED, NNOCHECK, NPASSED, INFO )
12 INTEGER INFO, MEMSIZE, NIN, NNOCHECK, NOUT, NPASSED,
17 COMPLEX*16 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 )
80 INTEGER ZPLXSZ, INTGSZ
81 parameter( zplxsz = 16, intgsz = 4 )
83 parameter( dblesz = 8 )
85 parameter( maxsetsize = 50 )
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, ptrrwork, ptrw, ptrw2, ptrwork, ptrz,
96 $ res, rsizechk, rsizeheevx, rsizeqtq,
97 $ rsizesubtst, rsizetst, sizeheevx, sizemqrleft,
98 $ sizemqrright, sizeqrf, sizesubtst, sizetms,
99 $ sizetst, uplo, sizeheevd, rsizeheevd,
101 DOUBLE PRECISION ABSTOL, THRESH
105 INTEGER DESCA( DLEN_ ), MATSIZES( MAXSETSIZE ),
106 $ mattypes( maxsetsize ), nbs( maxsetsize ),
107 $ npcols( maxsetsize ), nprows( maxsetsize )
110 INTEGER ICEIL, NUMROC
111 EXTERNAL iceil, numroc
114 EXTERNAL blacs_abort, blacs_get, blacs_gridexit,
115 $ blacs_gridinfo, blacs_gridinit, blacs_pinfo,
123 IF( block_cyclic_2d*csrc_*ctxt_*dlen_*dtype_*lld_*mb_*m_*nb_*n_*
126 CALL blacs_pinfo( iam, nnodes )
127 CALL blacs_get( -1, 0, initcon )
128 CALL blacs_gridinit( initcon,
'R', 1, nnodes )
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 )
135 CALL blacs_gridexit( initcon )
140 DO 40 matsize = 1, nmatsizes
142 DO 30 pconfig = 1, npconfigs
144 DO 20 mattype = 1, nmattypes
146 DO 10 uplo = 1, nuplos
148 n = matsizes( matsize )
151 nprow = nprows( pconfig )
152 npcol = npcols( pconfig )
155 np = numroc( n, nb, 0, 0, nprow )
156 nq = numroc( n, nb, 0, 0, npcol )
157 iprepad =
max( nb, np )
159 ipostpad =
max( nb, nq )
161 lda =
max( np, 1 ) + imidpad
163 CALL blacs_get( -1, 0, context )
164 CALL blacs_gridinit( context,
'R', nprow, npcol )
165 CALL blacs_gridinfo( context, nprow, npcol, myrow,
167 IF( myrow.GE.0 )
THEN
168 CALL descinit( desca, n, n, nb, nb, 0, 0,
169 $ context, lda, info )
171 $ sizemqrleft, sizemqrright,
172 $ sizeqrf, sizetms, rsizeqtq,
173 $ rsizechk, sizeheevx,
174 $ rsizeheevx, isizeheevx,
175 $ sizeheevd, rsizeheevd,
177 $ sizesubtst, rsizesubtst,
178 $ isizesubtst, sizetst,
179 $ rsizetst, isizetst )
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,
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
202 IF( llrwork.LT.rsizetst )
THEN
203 nskipped = nskipped + 1
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 ),
212 $ mem( ptrgap ), iprepad,
213 $ ipostpad, mem( ptrwork ),
214 $ sizetst, mem( ptrrwork ),
215 $ llrwork, mem( ptriwrk ),
216 $ isizetst, nout, res )
219 npassed = npassed + 1
220 ELSE IF( res.EQ.2 )
THEN
221 nnocheck = nnocheck + 1
222 ELSE IF( res.EQ.3 )
THEN
223 nskipped = nskipped + 1
224 WRITE( nout, fmt=* )
' PZSEPREQ failed'
225 CALL blacs_abort( context, -1 )
228 CALL blacs_gridexit( context )