3 SUBROUTINE pdsepinfo( CONTEXT, IAM, NIN, NOUT, MAXSETSIZE,
4 $ NMATSIZES, MATSIZES, NUPLOS, UPLOS,
5 $ NPCONFIGS, NPROWS, NPCOLS, NBS, NMATTYPES,
6 $ MATTYPES, MAXTYPE, SUBTESTS, THRESH, ORDER,
123 INTEGER CONTEXT, IAM, INFO, MAXSETSIZE, MAXTYPE, NIN,
124 $ NMATSIZES, NMATTYPES, NOUT, NPCONFIGS, NUPLOS,
126 DOUBLE PRECISION ABSTOL, THRESH
130 INTEGER MATSIZES( MAXSETSIZE ), MATTYPES( MAXSETSIZE ),
131 $ NBS( MAXSETSIZE ), NPCOLS( MAXSETSIZE ),
132 $ NPROWS( MAXSETSIZE )
135 INTEGER BLOCK_CYCLIC_2D, DLEN_, DTYPE_, CTXT_, M_, N_,
136 $ MB_, NB_, RSRC_, CSRC_, LLD_
137 PARAMETER ( BLOCK_CYCLIC_2D = 1, dlen_ = 9, dtype_ = 1,
138 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
139 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
140 DOUBLE PRECISION TWO, TEN, TWENTY
141 parameter( two = 2.0d0, ten = 10.0d0, twenty = 20.0d0 )
144 CHARACTER*80 TESTSUMMRY
149 DOUBLE PRECISION PDLAMCH
150 EXTERNAL LSAME, PDLAMCH
154 EXTERNAL dgebr2d, dgebs2d, igebr2d, igebs2d
162 IF( block_cyclic_2d*csrc_*ctxt_*dlen_*dtype_*lld_*mb_*m_*nb_*n_*
167 READ( nin, fmt = 9997 )testsummry
169 READ( nin, fmt = 9997 )testsummry
170 WRITE( nout, fmt = 9997 )testsummry
174 READ( nin, fmt = * )nmatsizes
175 CALL igebs2d( context,
'All',
' ', 1, 1, nmatsizes, 1 )
177 CALL igebr2d( context,
'All',
' ', 1, 1, nmatsizes, 1, 0, 0 )
179 IF( nmatsizes.EQ.-1 )
THEN
183 IF( nmatsizes.LT.1 .OR. nmatsizes.GT.maxsetsize )
THEN
185 WRITE( nout, fmt = 9999 )
'Matrix size', nmatsizes, 1,
194 READ( nin, fmt = * )( matsizes( i ), i = 1, nmatsizes )
195 CALL igebs2d( context,
'All',
' ', 1, nmatsizes, matsizes, 1 )
197 CALL igebr2d( context,
'All',
' ', 1, nmatsizes, matsizes, 1,
202 READ( nin, fmt = * )nuplos
203 CALL igebs2d( context,
'All',
' ', 1, 1, nuplos, 1 )
205 CALL igebr2d( context,
'All',
' ', 1, 1, nuplos, 1, 0, 0 )
207 IF( nuplos.LT.1 .OR. nuplos.GT.2 )
THEN
209 WRITE( nout, fmt = 9999 )
'# of UPLOs', nuplos, 1, 2
216 READ( nin, fmt = * )( uplos( i ), i = 1, nuplos )
218 IF( lsame( uplos( i ),
'L' ) )
THEN
224 CALL igebs2d( context,
'All',
' ', 1, nuplos, iuplos, 1 )
226 CALL igebr2d( context,
'All',
' ', 1, nuplos, iuplos, 1, 0, 0 )
229 IF( iuplos( i ).EQ.1 )
THEN
237 READ( nin, fmt = * )npconfigs
238 CALL igebs2d( context,
'All',
' ', 1, 1, npconfigs, 1 )
240 CALL igebr2d( context,
'All',
' ', 1, 1, npconfigs, 1, 0, 0 )
242 IF( npconfigs.LT.1 .OR. npconfigs.GT.maxsetsize )
THEN
244 WRITE( nout, fmt = 9999 )
'# proc configs', npconfigs, 1,
252 READ( nin, fmt = * )( nprows( i ), i = 1, npconfigs )
253 CALL igebs2d( context,
'All',
' ', 1, npconfigs, nprows, 1 )
255 CALL igebr2d( context,
'All',
' ', 1, npconfigs, nprows, 1, 0,
258 DO 30 i = 1, npconfigs
259 IF( nprows( i ).LE.0 )
262 IF( info.EQ.-2 )
THEN
264 WRITE( nout, fmt = 9996 )
' NPROW'
270 READ( nin, fmt = * )( npcols( i ), i = 1, npconfigs )
271 CALL igebs2d( context,
'All',
' ', 1, npconfigs, npcols, 1 )
273 CALL igebr2d( context,
'All',
' ', 1, npconfigs, npcols, 1, 0,
276 DO 40 i = 1, npconfigs
277 IF( npcols( i ).LE.0 )
280 IF( info.EQ.-2 )
THEN
282 WRITE( nout, fmt = 9996 )
' NPCOL'
289 READ( nin, fmt = * )( nbs( i ), i = 1, npconfigs )
290 CALL igebs2d( context,
'All',
' ', 1, npconfigs, nbs, 1 )
292 CALL igebr2d( context,
'All',
' ', 1, npconfigs, nbs, 1, 0, 0 )
294 DO 50 i = 1, npconfigs
298 IF( info.EQ.-2 )
THEN
300 WRITE( nout, fmt = 9996 )
' NB'
307 READ( nin, fmt = * )nmattypes
308 CALL igebs2d( context,
'All',
' ', 1, 1, nmattypes, 1 )
310 CALL igebr2d( context,
'All',
' ', 1, 1, nmattypes, 1, 0, 0 )
312 IF( nmattypes.LT.1 .OR. nmattypes.GT.maxsetsize )
THEN
314 WRITE( nout, fmt = 9999 )
'matrix types', nmattypes, 1,
322 READ( nin, fmt = * )( mattypes( i ), i = 1, nmattypes )
323 CALL igebs2d( context,
'All',
' ', 1, nmattypes, mattypes, 1 )
325 CALL igebr2d( context,
'All',
' ', 1, nmattypes, mattypes, 1,
329 DO 60 i = 1, nmattypes
330 IF( mattypes( i ).LT.1 .OR. mattypes( i ).GT.maxtype )
THEN
332 WRITE( nout, fmt = 9999 )
'matrix type', mattypes( i ),
340 READ( nin, fmt = * )subtests
341 IF( lsame( subtests,
'Y' ) )
THEN
346 CALL igebs2d( context,
'All',
' ', 1, 1, isubtests, 1 )
348 CALL igebr2d( context,
'All',
' ', 1, 1, isubtests, 1, 0, 0 )
350 IF( isubtests.EQ.2 )
THEN
357 READ( nin, fmt = * )thresh
359 $ thresh = thresh / ten
361 $ thresh = thresh / twenty
362 CALL dgebs2d( context,
'All',
' ', 1, 1, thresh, 1 )
364 CALL dgebr2d( context,
'All',
' ', 1, 1, thresh, 1, 0, 0 )
370 READ( nin, fmt = * )abstol
371 CALL dgebs2d( context,
'All',
' ', 1, 1, abstol, 1 )
373 CALL dgebr2d( context,
'All',
' ', 1, 1, abstol, 1, 0, 0 )
376 $ abstol = two*pdlamch( context,
'U' )
383 9999
FORMAT( a20,
' is:', i5,
' must be between:', i5,
' and', i5 )
384 9998
FORMAT( a20,
' is:', i5,
' must be:', i5,
' or', i5 )
386 9996
FORMAT( a20,
' must be positive' )