3 SUBROUTINE pssepinfo( 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,
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 REAL TWO, TEN, TWENTY
141 parameter( two = 2.0e0, ten = 10.0e0, twenty = 20.0e0 )
144 CHARACTER*80 TESTSUMMRY
150 EXTERNAL LSAME, PSLAMCH
162 IF( block_cyclic_2d*csrc_*ctxt_*dlen_*dtype_*lld_*mb_*m_*nb_*n_*
166 READ( nin, fmt = 9997 )testsummry
168 READ( nin, fmt = 9997 )testsummry
169 WRITE( nout, fmt = 9997 )testsummry
176 READ( nin, fmt = * )nmatsizes
177 CALL igebs2d( context,
'All',
' ', 1, 1, nmatsizes, 1 )
179 CALL igebr2d( context,
'All',
' ', 1, 1, nmatsizes, 1, 0, 0 )
181 IF( nmatsizes.EQ.-1 )
THEN
185 IF( nmatsizes.LT.1 .OR. nmatsizes.GT.maxsetsize )
THEN
187 WRITE( nout, fmt = 9999 )
'Matrix size', nmatsizes, 1,
196 READ( nin, fmt = * )( matsizes( i ), i = 1, nmatsizes )
197 CALL igebs2d( context,
'All'' '
199 CALL igebr2d( context,
'All',
' ', 1, nmatsizes, matsizes, 1,
204 READ( nin, fmt = * )nuplos
205 CALL igebs2d( context,
'All',
' ', 1, 1, nuplos, 1 )
207 CALL igebr2d( context,
'All',
' ', 1, 1, nuplos, 1, 0, 0 )
209 IF( nuplos.LT.1 .OR. nuplos.GT.2 )
THEN
211 WRITE( nout, fmt = 9999 )
'# of UPLOs', nuplos, 1, 2
218 READ( nin, fmt = * )( uplos( i ), i = 1, nuplos )
220 IF( lsame( uplos( i ),
'L' ) )
THEN
226 CALL igebs2d( context,
'All',
' ', 1, nuplos, iuplos, 1 )
228 CALL igebr2d( context,
'All',
' ', 1, nuplos, iuplos, 1, 0, 0 )
231 IF( iuplos( i ).EQ.1 )
THEN
239 READ( nin, fmt = * )npconfigs
240 CALL igebs2d( context, 'all
', ' ', 1, 1, npconfigs, 1 )
242 CALL igebr2d( context,
'All',
' ', 1, 1, npconfigs, 1, 0, 0 )
244 IF( npconfigs.LT.1 .OR. npconfigs.GT.maxsetsize )
THEN
246 WRITE( nout, fmt = 9999 )
'# proc configs', npconfigs, 1,
254 READ( nin, fmt = * )( nprows( i ), i = 1, npconfigs )
255 CALL igebs2d( context,
'All',
' ', 1, npconfigs, nprows, 1 )
257 CALL igebr2d( context,
'All',
' ', 1, npconfigs, nprows, 1, 0,
260 DO 30 i = 1, npconfigs
261 IF( nprows( i ).LE.0 )
264 IF( info.EQ.-2 )
THEN
266 WRITE( nout, fmt = 9996 )
' NPROW'
272 READ( nin, fmt = * )( npcols( i ), i = 1, npconfigs )
273 CALL igebs2d( context, 'all
', ' ', 1, NPCONFIGS, NPCOLS, 1 )
275 CALL IGEBR2D( CONTEXT, 'all
', ' ', 1, NPCONFIGS, NPCOLS, 1, 0,
278 DO 40 I = 1, NPCONFIGS
279.LE.
IF( NPCOLS( I )0 )
282.EQ.
IF( INFO-2 ) THEN
284 WRITE( NOUT, FMT = 9996 )' npcol
'
291 READ( NIN, FMT = * )( NBS( I ), I = 1, NPCONFIGS )
292 CALL IGEBS2D( CONTEXT, 'all
', ' ', 1, NPCONFIGS, NBS, 1 )
294 CALL IGEBR2D( CONTEXT, 'all
', ' ', 1, NPCONFIGS, NBS, 1, 0, 0 )
296 DO 50 I = 1, NPCONFIGS
300.EQ.
IF( INFO-2 ) THEN
302 WRITE( NOUT, FMT = 9996 )' nb
'
309 READ( NIN, FMT = * )NMATTYPES
310 CALL IGEBS2D( CONTEXT, 'all
', ' ', 1, 1, NMATTYPES, 1 )
312 CALL IGEBR2D( CONTEXT, 'all
', ' ', 1, 1, NMATTYPES, 1, 0, 0 )
314.LT..OR..GT.
IF( NMATTYPES1 NMATTYPESMAXSETSIZE ) THEN
316 WRITE( NOUT, FMT = 9999 )'matrix types
', NMATTYPES, 1,
324 READ( NIN, FMT = * )( MATTYPES( I ), I = 1, NMATTYPES )
325 CALL IGEBS2D( CONTEXT, 'all
', ' ', 1, NMATTYPES, MATTYPES, 1 )
327 CALL IGEBR2D( CONTEXT, 'all
', ' ', 1, NMATTYPES, MATTYPES, 1,
331 DO 60 I = 1, NMATTYPES
332.LT..OR..GT.
IF( MATTYPES( I )1 MATTYPES( I )MAXTYPE ) THEN
334 WRITE( NOUT, FMT = 9999 )'matrix type
', MATTYPES( I ),
342 READ( NIN, FMT = * )SUBTESTS
343 IF( LSAME( SUBTESTS, 'y
' ) ) THEN
348 CALL IGEBS2D( CONTEXT, 'all
', ' ', 1, 1, ISUBTESTS, 1 )
350 CALL IGEBR2D( CONTEXT, 'all
', ' ', 1, 1, ISUBTESTS, 1, 0, 0 )
352.EQ.
IF( ISUBTESTS2 ) THEN
359 READ( NIN, FMT = * )THRESH
361 $ THRESH = THRESH / TEN
363 $ THRESH = THRESH / TWENTY
364 CALL SGEBS2D( CONTEXT, 'all
', ' ', 1, 1, THRESH, 1 )
366 CALL SGEBR2D( CONTEXT, 'all
', ' ', 1, 1, THRESH, 1, 0, 0 )
372 READ( NIN, FMT = * )ABSTOL
373 CALL SGEBS2D( CONTEXT, 'all
', ' ', 1, 1, ABSTOL, 1 )
375 CALL SGEBR2D( CONTEXT, 'all
', ' ', 1, 1, ABSTOL, 1, 0, 0 )
378 $ ABSTOL = TWO*PSLAMCH( CONTEXT, 'u
' )
385 9999 FORMAT( A20, ' is:
', I5, ' must be between:
', I5, ' and
', I5 )
386 9998 FORMAT( A20, ' is:
', I5, ' must be:
', I5, ' or
', I5 )
388 9996 FORMAT( A20, ' must be positive
' )
subroutine pssepinfo(context, iam, nin, nout, maxsetsize, nmatsizes, matsizes, nuplos, uplos, npconfigs, nprows, npcols, nbs, nmattypes, mattypes, maxtype, subtests, thresh, order, abstol, info)