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
154 EXTERNAL igebr2d, igebs2d, sgebr2d, sgebs2d
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',
' ', 1, nmatsizes, matsizes, 1 )
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 IF( npcols( i ).LE.0 )
282 IF( info.EQ.-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 IF( info.EQ.-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 IF( nmattypes.LT.1 .OR. nmattypes.GT.maxsetsize )
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 IF( mattypes( i ).LT.1 .OR. mattypes( i ).GT.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 IF( isubtests.EQ.2 )
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' )