3
4
5
6
7
8
9 IMPLICIT NONE
10
11
12 CHARACTER HETERO
13 INTEGER INFO, MEMSIZE, NIN, NNOCHECK, NOUT, NPASSED,
14 $ NSKIPPED, NTESTS
15
16
17 INTEGER ISEED( 4 )
18 REAL MEM( MEMSIZE )
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 INTEGER DLEN_
73 parameter( dlen_ = 9 )
74 INTEGER REALSZ, INTGSZ
75 parameter( realsz = 4, intgsz = 4 )
76 INTEGER MAXSETSIZE
77 parameter( maxsetsize = 50 )
78
79
80 CHARACTER SUBTESTS
81 INTEGER CONTEXT, IAM, IMIDPAD, INITCON, IPOSTPAD,
82 $ IPREPAD, ISIZESUBTST, ISIZEEVR, ISIZETST,
83 $ LDA, LLWORK, MATSIZE, MATTYPE, MYCOL, MYROW, N,
84 $ NB, NMATSIZES, NMATTYPES, NNODES, NP, NPCOL,
85 $ NPCONFIGS, NPROW, NQ, NUPLOS, ORDER, PCONFIG,
86 $ PTRA, PTRCOPYA, PTRGAP, PTRICLUS, PTRIFAIL,
87 $ PTRIWRK, PTRW, PTRW2, PTRWORK, PTRZ, RES,
88 $ SIZECHK, SIZEMQRLEFT, SIZEMQRRIGHT, SIZEQRF,
89 $ SIZEQTQ, SIZESUBTST, SIZEEVR,
90 $ SIZETMS, SIZETST, UPLO
91
92 REAL ABSTOL, THRESH
93
94
95 CHARACTER UPLOS( 2 )
96 INTEGER DESCA( DLEN_ ), MATSIZES( MAXSETSIZE ),
97 $ MATTYPES( MAXSETSIZE ), NBS( MAXSETSIZE ),
98 $ NPCOLS( MAXSETSIZE ), NPROWS( MAXSETSIZE )
99
100
101 INTEGER ICEIL, NUMROC
103
104
105 EXTERNAL blacs_abort, blacs_get, blacs_gridexit,
106 $ blacs_gridinfo, blacs_gridinit, blacs_pinfo,
108
109
111
112
113
114 CALL blacs_pinfo( iam, nnodes )
115 CALL blacs_get( -1, 0, initcon )
116 CALL blacs_gridinit( initcon, 'R', 1, nnodes )
117
118 CALL pssepinfo( initcon, iam, nin, nout, maxsetsize, nmatsizes,
119 $ matsizes, nuplos, uplos, npconfigs, nprows,
120 $ npcols, nbs, nmattypes, mattypes, 22, subtests,
121 $ thresh, order, abstol, info )
122
123 CALL blacs_gridexit( initcon )
124
125 IF( info.EQ.0 ) THEN
126
127 DO 40 matsize = 1, nmatsizes
128
129 DO 30 pconfig = 1, npconfigs
130
131 DO 20 mattype = 1, nmattypes
132
133 DO 10 uplo = 1, nuplos
134
135 n = matsizes( matsize )
136 order = n
137
138 nprow = nprows( pconfig )
139 npcol = npcols( pconfig )
140 nb = nbs( pconfig )
141
142 np =
numroc( n, nb, 0, 0, nprow )
143 nq =
numroc( n, nb, 0, 0, npcol )
144 iprepad =
max( nb, np )
145 imidpad = nb
146 ipostpad =
max( nb, nq )
147
148 lda =
max( np, 1 ) + imidpad
149
150 CALL blacs_get( -1, 0, context )
151 CALL blacs_gridinit( context, 'R', nprow, npcol )
152 CALL blacs_gridinfo( context, nprow, npcol, myrow,
153 $ mycol )
154
155 IF( myrow.GE.0 ) THEN
156 CALL descinit( desca, n, n, nb, nb, 0, 0,
157 $ context, lda, info )
159 $ sizemqrleft, sizemqrright,
160 $ sizeqrf, sizetms, sizeqtq,
161 $ sizechk, sizeevr, isizeevr,
162 $ sizesubtst, isizesubtst,
163 $ sizetst, isizetst )
164
165 ptra = 1
166 ptrz = ptra + lda*nq + iprepad + ipostpad
167 ptrcopya = ptrz + lda*nq + iprepad + ipostpad
168 ptrw = ptrcopya + lda*nq + iprepad + ipostpad
169 ptrw2 = ptrw +
max( n, 1 ) + iprepad + ipostpad
170 ptrgap = ptrw2 +
max( n, 1 ) + iprepad +
171 $ ipostpad
172 ptrifail = ptrgap + nprow*npcol + iprepad +
173 $ ipostpad
174 ptriclus = ptrifail +
iceil( n+iprepad+ipostpad,
175 $ realsz / intgsz )
176 ptriwrk = ptriclus +
iceil( 2*nprow*npcol+
177 $ iprepad+ipostpad, realsz / intgsz )
178 ptrwork = ptriwrk +
iceil( isizetst+iprepad+
179 $ ipostpad, realsz / intgsz )
180 llwork = memsize - ptrwork + 1
181
182 ntests = ntests + 1
183 IF( llwork.LT.sizetst ) THEN
184 nskipped = nskipped + 1
185 ELSE
187 $ mattypes( mattype ), subtests,
188 $ thresh, n, abstol, iseed,
189 $ mem( ptra ), mem( ptrcopya ),
190 $ mem( ptrz ), lda, mem( ptrw ),
191 $ mem( ptrw2 ), mem( ptrifail ),
192 $ mem( ptriclus ),
193 $ mem( ptrgap ), iprepad,
194 $ ipostpad, mem( ptrwork ),
195 $ llwork, mem( ptriwrk ),
196 $ isizetst, hetero, nout, res )
197
198 IF( res.EQ.0 ) THEN
199 npassed = npassed + 1
200 ELSE IF( res.EQ.2 ) THEN
201 nnocheck = nnocheck + 1
202 ELSE IF( res.EQ.3 ) THEN
203 nskipped = nskipped + 1
204 WRITE( nout, fmt = * )' PSSEPRREQ failed'
205 CALL blacs_abort( context, -1 )
206 END IF
207 END IF
208 CALL blacs_gridexit( context )
209 END IF
210 10 CONTINUE
211 20 CONTINUE
212 30 CONTINUE
213 40 CONTINUE
214 END IF
215
216 RETURN
217
218
219
subroutine descinit(desc, m, n, mb, nb, irsrc, icsrc, ictxt, lld, info)
integer function iceil(inum, idenom)
integer function numroc(n, nb, iproc, isrcproc, nprocs)
subroutine pslasizesepr(desca, iprepad, ipostpad, sizemqrleft, sizemqrright, sizeqrf, sizetms, sizeqtq, sizechk, sizesyevr, isizesyevr, sizesubtst, isizesubtst, sizetst, isizetst)
subroutine pssepinfo(context, iam, nin, nout, maxsetsize, nmatsizes, matsizes, nuplos, uplos, npconfigs, nprows, npcols, nbs, nmattypes, mattypes, maxtype, subtests, thresh, order, abstol, info)
subroutine psseprtst(desca, uplo, n, mattype, subtests, thresh, order, abstol, iseed, a, copya, z, lda, win, wnew, ifail, iclustr, gap, iprepad, ipostpad, work, lwork, iwork, liwork, hetero, nout, info)