OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
zfac_process_message.F
Go to the documentation of this file.
1C
2C This file is part of MUMPS 5.5.1, released
3C on Tue Jul 12 13:17:24 UTC 2022
4C
5C
6C Copyright 1991-2022 CERFACS, CNRS, ENS Lyon, INP Toulouse, Inria,
7C Mumps Technologies, University of Bordeaux.
8C
9C This version of MUMPS is provided to you free of charge. It is
10C released under the CeCILL-C license
11C (see doc/CeCILL-C_V1-en.txt, doc/CeCILL-C_V1-fr.txt, and
12C https://cecill.info/licences/Licence_CeCILL-C_V1-en.html)
13C
14 RECURSIVE SUBROUTINE zmumps_traiter_message(
15 & COMM_LOAD, ASS_IRECV,
16 & MSGSOU, MSGTAG, MSGLEN,
17 & BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
18 & IWPOS, IWPOSCB, IPTRLU,
19 & LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
20 & PTLUST, PTRFAC,
21 & PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
22 & IFLAG, IERROR, COMM,
23 & PERM, IPOOL, LPOOL, LEAF, NBFIN, MYID, SLAVEF,
24 &
25 & root, OPASSW, OPELIW, ITLOC, RHS_MUMPS,
26 & FILS, DAD, PTRARW, PTRAIW,
27 & INTARR, DBLARR, ICNTL, KEEP,KEEP8,DKEEP, ND, FRERE,
28 & LPTRAR, NELT, FRTPTR, FRTELT,
29 &
30 & ISTEP_TO_INIV2, TAB_POS_IN_PERE
31 & , LRGROUPS
32 & )
33 USE zmumps_load
34 USE zmumps_struc_def, ONLY : zmumps_root_struc
35 IMPLICIT NONE
36 include 'mumps_headers.h'
37 TYPE (zmumps_root_struc) :: root
38 INTEGER msgsou, msgtag, msglen
39 INTEGER lbufr, LBUFR_BYTES
40 INTEGER bufr( lbufr )
41 INTEGER keep(500), icntl( 60 )
42 INTEGER(8) keep8(150)
43 DOUBLE PRECISION dkeep(230)
44 INTEGER(8) :: posfac, iptrlu, lrlu, lrlus, la
45 INTEGER iwpos, iwposcb
46 INTEGER n, liw
47 INTEGER iw( liw )
48 INTEGER, intent(in) :: lrgroups(n)
49 COMPLEX(kind=8) a( la )
50 INTEGER(8) :: ptrfac(keep(28))
51 INTEGER(8) :: ptrast(keep(28))
52 INTEGER(8) :: pamaster(keep(28))
53 INTEGER ptrist(keep(28)), ptlust(keep(28))
54 INTEGER step(n), pimaster(keep(28))
55 INTEGER comp
56 INTEGER nstk_s(keep(28)), procnode_steps( keep(28) )
57 INTEGER perm(n)
58 INTEGER iflag, ierror, comm
59 INTEGER lpool, leaf
60 INTEGER ipool( lpool )
61 INTEGER comm_load, ass_irecv
62 INTEGER myid, slavef, nbfin
63 DOUBLE PRECISION OPASSW, opeliw
64 INTEGER nelt, lptrar
65 INTEGER frtptr( n+1), frtelt( nelt )
66 INTEGER itloc( N+keep(253) ), fils( n ), dad(keep(28))
67 COMPLEX(kind=8) :: rhs_mumps(keep(255))
68 INTEGER(8), INTENT(IN) :: ptrarw( lptrar ), ptraiw( lptrar )
69 INTEGER nd( keep(28) ), frere( keep(28) )
70 INTEGER istep_to_iniv2(keep(71)),
71 & tab_pos_in_pere(slavef+2,max(1,keep(56)))
72 INTEGER intarr( keep8(27) )
73 COMPLEX(kind=8) dblarr( keep8(26) )
74 INTEGER iniv2, ishift, ibeg
75 INTEGER ishift_hdr
78 LOGICAL flag
79 INTEGER mp, LP
80 INTEGER tmp( 2 )
81 INTEGER nbrecu, position, inode, ison, iroot
82 INTEGER nslaves_pere, nfront_pere, nass_pere,
83 & lmap, fpere, nelim,
84 & hdmaplig,nfs4father,
85 & tot_root_size, tot_cont_to_recv
86 DOUBLE PRECISION flop1
87 CHARACTER(LEN=35) :: subname
88 include 'mumps_tags.h'
89 include 'mpif.h'
90 INTEGER :: ierr
91 INTEGER :: status(mpi_status_size)
92 mp = icntl(2)
93 lp = icntl(1)
94 subname="??????"
95 CALL zmumps_load_recv_msgs(comm_load)
96 IF ( msgtag .EQ. racine ) THEN
97 position = 0
98 CALL mpi_unpack( bufr, lbufr_bytes, position, nbrecu,
99 & 1, mpi_integer, comm, ierr)
100 nbrecu = bufr( 1 )
101 nbfin = nbfin - nbrecu
102 ELSEIF ( msgtag .EQ. noeud ) THEN
103 CALL zmumps_process_node( myid, keep, keep8, dkeep,
104 & bufr, lbufr, lbufr_bytes,
105 & iwpos, iwposcb, iptrlu,
106 & lrlu, lrlus, n, iw, liw, a, la, slavef, procnode_steps, dad,
107 & ptrist, ptrast,
108 & step, pimaster, pamaster,
109 & nstk_s, comp, fpere, flag, iflag, ierror, comm,
110 & itloc, rhs_mumps )
111 subname="zmumps_process_node"
112.LT. IF ( IFLAG 0 ) GO TO 500
113 IF ( FLAG ) THEN
114 CALL ZMUMPS_INSERT_POOL_N(N, IPOOL, LPOOL,
115 & PROCNODE_STEPS, SLAVEF, KEEP(199), KEEP(28), KEEP(76),
116 & KEEP(80), KEEP(47), STEP, FPERE )
117.GE. IF (KEEP(47) 3) THEN
118 CALL ZMUMPS_LOAD_POOL_UPD_NEW_POOL(
119 & IPOOL, LPOOL,
120 & PROCNODE_STEPS, KEEP,KEEP8, SLAVEF, COMM_LOAD,
121 & MYID, STEP, N, ND, FILS )
122 ENDIF
123 CALL MUMPS_ESTIM_FLOPS( FPERE, N,
124 & PROCNODE_STEPS,KEEP(199),
125 & ND, FILS, FRERE, STEP, PIMASTER,
126 & KEEP(28), KEEP(50), KEEP(253), FLOP1,
127 & IW, LIW, KEEP(IXSZ) )
128.NE. IF (FPEREKEEP(20))
129 & CALL ZMUMPS_LOAD_UPDATE(1,.FALSE.,FLOP1,KEEP,KEEP8)
130 ENDIF
131.EQ. ELSEIF ( MSGTAG END_NIV2_LDLT ) THEN
132 INODE = BUFR( 1 )
133 CALL ZMUMPS_INSERT_POOL_N(N, IPOOL, LPOOL,
134 & PROCNODE_STEPS, SLAVEF, KEEP(199),
135 & KEEP(28), KEEP(76), KEEP(80), KEEP(47),
136 & STEP, -INODE )
137.GE. IF (KEEP(47) 3) THEN
138 CALL ZMUMPS_LOAD_POOL_UPD_NEW_POOL(
139 & IPOOL, LPOOL,
140 & PROCNODE_STEPS, KEEP,KEEP8, SLAVEF, COMM_LOAD,
141 & MYID, STEP, N, ND, FILS )
142 ENDIF
143.EQ. ELSEIF ( MSGTAG TERREUR ) THEN
144 IFLAG = -001
145 IERROR = MSGSOU
146 GOTO 100
147.EQ. ELSEIF ( MSGTAG MAITRE_DESC_BANDE ) THEN
148 CALL ZMUMPS_PROCESS_DESC_BANDE( MYID,BUFR, LBUFR,
149 & LBUFR_BYTES, IWPOS,
150 & IWPOSCB,
151 & IPTRLU, LRLU, LRLUS,
152 & N, IW, LIW, A, LA, SLAVEF, PROCNODE_STEPS, DAD,
153 & PTRIST, PTRAST, STEP, PIMASTER, PAMASTER, COMP,
154 & KEEP, KEEP8, DKEEP, ITLOC, RHS_MUMPS, ISTEP_TO_INIV2,
155#if ! defined (NO_FDM_DESCBAND)
156 & -1,
157#endif
158 & IFLAG, IERROR )
160.LT. IF ( IFLAG 0 ) GO to 500
161.EQ. ELSEIF ( MSGTAG MAITRE2 ) THEN
162 CALL ZMUMPS_PROCESS_MASTER2(MYID,BUFR, LBUFR, LBUFR_BYTES,
163 & PROCNODE_STEPS, SLAVEF, IWPOS, IWPOSCB,
164 & IPTRLU, LRLU, LRLUS, N, IW, LIW, A, LA,
165 & PTRIST, PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
166 & IFLAG, IERROR, COMM, COMM_LOAD,
167 & IPOOL, LPOOL, LEAF,
168 & KEEP, KEEP8, DKEEP, ND, FILS, DAD, FRERE, ITLOC, RHS_MUMPS,
169 & ISTEP_TO_INIV2, TAB_POS_IN_PERE )
170 SUBNAME="zmumps_process_master2"
171.LT. IF ( IFLAG 0 ) GO to 500
172.EQ..OR. ELSEIF ( MSGTAG BLOC_FACTO
173.EQ. & MSGTAG BLOC_FACTO_RELAY ) THEN
174 CALL ZMUMPS_PROCESS_BLOCFACTO( COMM_LOAD, ASS_IRECV,
175 & BUFR, LBUFR, LBUFR_BYTES,
176 & PROCNODE_STEPS, MSGSOU,
177 & SLAVEF, IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, N, IW, LIW,
178 & A, LA, PTRIST, PTRAST, NSTK_S, PERM,
179 & COMP, STEP, PIMASTER, PAMASTER, POSFAC,
180 & MYID, COMM , IFLAG, IERROR, NBFIN,
181 &
182 & PTLUST, PTRFAC, root, OPASSW, OPELIW, ITLOC, RHS_MUMPS,
183 & FILS, DAD, PTRARW, PTRAIW, INTARR, DBLARR,
184 & ICNTL, KEEP,KEEP8,DKEEP, IPOOL, LPOOL, LEAF, ND, FRERE,
185 & LPTRAR, NELT, FRTPTR, FRTELT,
186 & ISTEP_TO_INIV2, TAB_POS_IN_PERE
187 & , LRGROUPS
188 & )
189.EQ. ELSEIF ( MSGTAG BLOC_FACTO_SYM_SLAVE ) THEN
190 CALL ZMUMPS_PROCESS_BLFAC_SLAVE( COMM_LOAD, ASS_IRECV,
191 & BUFR, LBUFR,
192 & LBUFR_BYTES, PROCNODE_STEPS, MSGSOU,
193 & SLAVEF, IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, N, IW, LIW,
194 & A, LA, PTRIST, PTRAST, NSTK_S, PERM,
195 & COMP, STEP, PIMASTER, PAMASTER, POSFAC,
196 & MYID, COMM, IFLAG, IERROR, NBFIN,
197 &
198 & PTLUST, PTRFAC, root, OPASSW, OPELIW, ITLOC, RHS_MUMPS,
199 & FILS, DAD, PTRARW, PTRAIW, INTARR, DBLARR,
200 & ICNTL, KEEP,KEEP8,DKEEP, IPOOL, LPOOL, LEAF, ND, FRERE,
201 & LPTRAR, NELT, FRTPTR, FRTELT,
202 & ISTEP_TO_INIV2, TAB_POS_IN_PERE
203 & , LRGROUPS
204 & )
205.EQ. ELSEIF ( MSGTAG BLOC_FACTO_SYM ) THEN
206 CALL ZMUMPS_PROCESS_SYM_BLOCFACTO( COMM_LOAD, ASS_IRECV,
207 & BUFR, LBUFR,
208 & LBUFR_BYTES, PROCNODE_STEPS, MSGSOU,
209 & SLAVEF, IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, N, IW, LIW,
210 & A, LA, PTRIST, PTRAST, NSTK_S, PERM,
211 & COMP, STEP, PIMASTER, PAMASTER, POSFAC,
212 & MYID, COMM, IFLAG, IERROR, NBFIN,
213 &
214 & PTLUST, PTRFAC, root, OPASSW, OPELIW, ITLOC, RHS_MUMPS,
215 & FILS, DAD, PTRARW, PTRAIW, INTARR, DBLARR,
216 & ICNTL,KEEP,KEEP8,DKEEP,IPOOL, LPOOL, LEAF, ND, FRERE,
217 & LPTRAR, NELT, FRTPTR, FRTELT,
218 & ISTEP_TO_INIV2, TAB_POS_IN_PERE
219 & , LRGROUPS
220 & )
221.EQ. ELSEIF ( MSGTAG CONTRIB_TYPE2 ) THEN
222 CALL ZMUMPS_PROCESS_CONTRIB_TYPE2( COMM_LOAD, ASS_IRECV,
223 & MSGLEN, BUFR, LBUFR,
224 & LBUFR_BYTES, PROCNODE_STEPS,
225 & SLAVEF, IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, POSFAC,
226 & N, IW, LIW, A, LA, PTRIST,
227 & PTLUST, PTRFAC, PTRAST,
228 & STEP, PIMASTER, PAMASTER, PERM, COMP, root,
229 & OPASSW, OPELIW, ITLOC, RHS_MUMPS, NSTK_S, FILS, DAD,
230 & PTRARW, PTRAIW, INTARR, DBLARR, NBFIN, MYID, COMM,
231 & ICNTL,KEEP,KEEP8,DKEEP,IFLAG, IERROR, IPOOL, LPOOL, LEAF,
232 & ND, FRERE, LPTRAR, NELT, FRTPTR, FRTELT,
233 & ISTEP_TO_INIV2, TAB_POS_IN_PERE
234 & , LRGROUPS
235 & )
236.LT. IF ( IFLAG 0 ) GO TO 100
237.EQ. ELSEIF ( MSGTAG MAPLIG ) THEN
238 HDMAPLIG = 7
239 INODE = BUFR( 1 )
240 ISON = BUFR( 2 )
241 NSLAVES_PERE = BUFR( 3 )
242 NFRONT_PERE = BUFR( 4 )
243 NASS_PERE = BUFR( 5 )
244 LMAP = BUFR( 6 )
245 NFS4FATHER = BUFR( 7 )
246.NE. IF ( NSLAVES_PERE0 ) THEN
247 INIV2 = ISTEP_TO_INIV2 ( STEP(INODE) )
248 ISHIFT = NSLAVES_PERE+1
249 TAB_POS_IN_PERE(1:NSLAVES_PERE+1, INIV2) =
250 & BUFR(HDMAPLIG+1:HDMAPLIG+1+NSLAVES_PERE)
251 TAB_POS_IN_PERE(SLAVEF+2, INIV2) = NSLAVES_PERE
252 ELSE
253 ISHIFT = 0
254 ENDIF
255 IBEG = HDMAPLIG+1+ISHIFT
256 CALL ZMUMPS_MAPLIG( COMM_LOAD, ASS_IRECV,
257 & BUFR, LBUFR, LBUFR_BYTES,
258 & INODE, ISON, NSLAVES_PERE,
259 & BUFR(IBEG),
260 & NFRONT_PERE, NASS_PERE, NFS4FATHER,LMAP,
261 & BUFR(IBEG+NSLAVES_PERE),
262 & PROCNODE_STEPS, SLAVEF, POSFAC, IWPOS, IWPOSCB,
263 & IPTRLU, LRLU, LRLUS, N, IW, LIW, A, LA,
264 & PTRIST, PTLUST, PTRFAC, PTRAST, STEP, PIMASTER, PAMASTER,
265 & NSTK_S, COMP,
266 & IFLAG, IERROR, MYID, COMM, PERM,
267 & IPOOL, LPOOL, LEAF, NBFIN, ICNTL, KEEP,KEEP8,DKEEP, root,
268 & OPASSW, OPELIW,
269 & ITLOC, RHS_MUMPS, FILS, DAD, PTRARW, PTRAIW, INTARR, DBLARR,
270 & ND, FRERE, LPTRAR, NELT, FRTPTR, FRTELT,
271 &
272 & ISTEP_TO_INIV2, TAB_POS_IN_PERE
273 & , LRGROUPS
274 & )
275.LT. IF ( IFLAG 0 ) GO TO 100
276.EQ. ELSE IF ( MSGTAG ROOT_CONT_STATIC ) THEN
277 CALL ZMUMPS_PROCESS_CONTRIB_TYPE3(
278 & BUFR, LBUFR, LBUFR_BYTES,
279 & root, N, IW, LIW, A, LA,
280 & LRLU, IPTRLU, IWPOS, IWPOSCB,
281 & PTRIST, PTLUST, PTRFAC, PTRAST,
282 & STEP, PIMASTER, PAMASTER,
283 & COMP, LRLUS, IPOOL, LPOOL, LEAF,
284 & FILS, DAD, MYID,
285 & LPTRAR, NELT, FRTPTR, FRTELT,
286 & PTRAIW, PTRARW, INTARR, DBLARR,
287 & KEEP, KEEP8, DKEEP, IFLAG, IERROR, COMM, COMM_LOAD,
288 & ITLOC, RHS_MUMPS,
289 & ND, PROCNODE_STEPS, SLAVEF, OPASSW)
291.LT. IF ( IFLAG 0 ) GO TO 500
292.EQ. ELSE IF ( MSGTAG ROOT_NON_ELIM_CB ) THEN
293 IROOT = KEEP( 38 )
294 MSGSOU = MUMPS_PROCNODE( PROCNODE_STEPS(STEP(IROOT)),
295 & KEEP(199) )
296.EQ. IF ( PTLUST( STEP(IROOT)) 0 ) THEN
297 KEEP(266)=KEEP(266)-1
298 CALL MPI_RECV( TMP, 2 * KEEP(34), MPI_PACKED,
299 & MSGSOU, ROOT_2SLAVE,
300 & COMM, STATUS, IERR )
301 CALL ZMUMPS_PROCESS_ROOT2SLAVE( TMP( 1 ), TMP( 2 ),
302 & root,
303 & BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
304 & IWPOS, IWPOSCB, IPTRLU,
305 & LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
306 & PTLUST, PTRFAC,
307 & PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
308 & IFLAG, IERROR, COMM, COMM_LOAD,
309 & IPOOL, LPOOL, LEAF,
310 & NBFIN, MYID, SLAVEF,
311 &
312 & OPASSW, OPELIW, ITLOC, RHS_MUMPS, FILS, DAD,
313 & LPTRAR, NELT, FRTPTR, FRTELT,
314 & PTRARW, PTRAIW,
315 & INTARR, DBLARR, ICNTL, KEEP,KEEP8, DKEEP,ND )
317.LT. IF ( IFLAG 0 ) GOTO 500
318 END IF
319 CALL ZMUMPS_PROCESS_CONTRIB_TYPE3(
320 & BUFR, LBUFR, LBUFR_BYTES,
321 & root, N, IW, LIW, A, LA,
322 & LRLU, IPTRLU, IWPOS, IWPOSCB,
323 & PTRIST, PTLUST, PTRFAC, PTRAST, STEP, PIMASTER, PAMASTER,
324 & COMP, LRLUS, IPOOL, LPOOL, LEAF,
325 & FILS, DAD, MYID,
326 & LPTRAR, NELT, FRTPTR, FRTELT,
327 & PTRAIW, PTRARW, INTARR, DBLARR,
328 & KEEP, KEEP8, DKEEP, IFLAG, IERROR, COMM, COMM_LOAD,
329 & ITLOC, RHS_MUMPS,
330 & ND, PROCNODE_STEPS, SLAVEF, OPASSW )
332 IF ( iflag .LT. 0 ) GO TO 500
333 ELSE IF ( msgtag .EQ. root_2son ) THEN
334 ison = bufr( 1 )
335 nelim = bufr( 2 )
336 CALL zmumps_process_root2son( comm_load, ass_irecv,
337 & ison, nelim, root,
338 & bufr, lbufr, lbufr_bytes, procnode_steps, posfac,
339 & iwpos, iwposcb, iptrlu,
340 & lrlu, lrlus, n, iw, liw, a, la, ptrist,
341 & ptlust, ptrfac,
342 & ptrast, step, pimaster, pamaster, nstk_s, comp,
343 & iflag, ierror, comm,
344 & perm, ipool, lpool, leaf, nbfin, myid, slavef,
345 &
346 & opassw, opeliw, itloc, rhs_mumps,
347 & fils, dad, ptrarw, ptraiw,
348 & intarr,dblarr,icntl,keep,keep8,dkeep,nd, frere,
349 & lptrar, nelt, frtptr, frtelt,
350 & istep_to_iniv2, tab_pos_in_pere
351 & , lrgroups
352 & )
353 IF ( iflag .LT. 0 ) GO TO 100
354 IF ( myid.NE.mumps_procnode(procnode_steps(step(ison)),
355 & keep(199)) ) THEN
356 IF (keep(50).EQ.0) THEN
357 ishift_hdr = 6
358 ELSE
359 ishift_hdr = 8
360 ENDIF
361 IF (iw(ptrist(step(ison))+ishift_hdr+keep(ixsz)).EQ.
362 & s_rec_contstatic) THEN
363 iw(ptrist(step(ison))+ishift_hdr+keep(ixsz)) =
364 & s_root2son_called
365 ELSE
366 CALL zmumps_free_band( n, ison, ptrist, ptrast,
367 & iw, liw, a, la, lrlu, lrlus, iwposcb,
368 & iptrlu, step, myid, keep, keep8,
369 & mumps_typenode(procnode_steps(step(ison)),keep(199))
370 & )
371 ENDIF
372 ENDIF
373 ELSE IF ( msgtag .EQ. root_2slave ) THEN
374 tot_root_size = bufr( 1 )
375 tot_cont_to_recv = bufr( 2 )
376 CALL zmumps_process_root2slave( tot_root_size,
377 & tot_cont_to_recv, root,
378 & bufr, lbufr, lbufr_bytes, procnode_steps, posfac,
379 & iwpos, iwposcb, iptrlu,
380 & lrlu, lrlus, n, iw, liw, a, la, ptrist,
381 & ptlust, ptrfac,
382 & ptrast, step, pimaster, pamaster, nstk_s, comp,
383 & iflag, ierror, comm, comm_load,
384 & ipool, lpool, leaf,
385 & nbfin, myid, slavef,
386 &
387 & opassw, opeliw, itloc, rhs_mumps, fils, dad,
388 & lptrar, nelt, frtptr, frtelt,
389 & ptrarw, ptraiw,
390 & intarr, dblarr, icntl, keep,keep8, dkeep, nd )
391 IF ( iflag .LT. 0 ) GO TO 100
392 ELSE IF ( msgtag .EQ. root_nelim_indices ) THEN
393 ison = bufr( 1 )
394 nelim = bufr( 2 )
395 nslaves_pere = bufr( 3 )
396 CALL zmumps_process_rtnelind( root,
397 & ison, nelim, nslaves_pere, bufr(4), bufr(4+bufr(2)),
398 & bufr(4+2*bufr(2)),
399 &
400 & procnode_steps,
401 & iwpos, iwposcb, iptrlu,
402 & lrlu, lrlus, n, iw, liw, a, la, ptrist,
403 & ptlust, ptrfac,
404 & ptrast, step, pimaster, pamaster, nstk_s,
405 & itloc, rhs_mumps, comp,
406 & iflag, ierror,
407 & ipool, lpool, leaf, myid, slavef,
408 & keep, keep8, dkeep,
409 & comm, comm_load, fils, dad, nd)
410 subname="ZMUMPS_PROCESS_RTNELIND"
411 IF ( iflag .LT. 0 ) GO TO 500
412 ELSE IF ( msgtag .EQ. update_load ) THEN
413 WRITE(*,*) "Internal error 3 in ZMUMPS_TRAITER_MESSAGE"
414 CALL mumps_abort()
415 ELSE IF ( msgtag .EQ. tag_dummy ) THEN
416 ELSE
417 IF ( lp > 0 )
418 & WRITE(lp,*) myid,
419 &': Internal error, routine ZMUMPS_TRAITER_MESSAGE.',msgtag
420 iflag = -100
421 ierror= msgtag
422 GOTO 500
423 ENDIF
424 100 CONTINUE
425 RETURN
426 500 CONTINUE
427 IF ( icntl(1) .GT. 0 .AND. icntl(4).GE.1 ) THEN
428 lp=icntl(1)
429 IF (iflag.EQ.-9) THEN
430 WRITE(lp,*) 'FAILURE, WORKSPACE TOO SMALL DURING ',subname
431 ENDIF
432 IF (iflag.EQ.-8) THEN
433 WRITE(lp,*) 'FAILURE IN INTEGER ALLOCATION DURING ',subname
434 ENDIF
435 IF (iflag.EQ.-13) THEN
436 WRITE(lp,*) 'FAILURE IN DYNAMIC ALLOCATION DURING ',subname
437 ENDIF
438 ENDIF
439 CALL zmumps_bdc_error( myid, slavef, comm, keep )
440 RETURN
441 END SUBROUTINE zmumps_traiter_message
442 RECURSIVE SUBROUTINE zmumps_recv_and_treat(
443 & COMM_LOAD, ASS_IRECV,
444 & STATUS,
445 & BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
446 & IWPOS, IWPOSCB, IPTRLU,
447 & LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
448 & PTLUST, PTRFAC,
449 & PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
450 & IFLAG, IERROR, COMM,
451 & PERM, IPOOL, LPOOL, LEAF, NBFIN, MYID, SLAVEF,
452 &
453 & root, OPASSW, OPELIW, ITLOC, RHS_MUMPS,
454 & FILS, DAD, PTRARW, PTRAIW,
455 & INTARR, DBLARR, ICNTL, KEEP,KEEP8,DKEEP, ND, FRERE,
456 & LPTRAR, NELT, FRTPTR, FRTELT ,
457 &
458 & ISTEP_TO_INIV2, TAB_POS_IN_PERE
459 & , LRGROUPS
460 & )
461 USE zmumps_struc_def, ONLY : zmumps_root_struc
462 IMPLICIT NONE
463 include 'mpif.h'
464 include 'mumps_tags.h'
465 TYPE (zmumps_root_struc) :: root
466 INTEGER :: status(mpi_status_size)
467 INTEGER keep(500), icntl(60)
468 INTEGER(8) keep8(150)
469 DOUBLE PRECISION dkeep(230)
470 INTEGER comm_load, ass_irecv
471 INTEGER lbufr, lbufr_bytes
472 INTEGER bufr( lbufr )
473 INTEGER(8) :: posfac, la, iptrlu, lrlu, lrlus
474 INTEGER iwpos, iwposcb
475 INTEGER n, liw
476 INTEGER iw( liw )
477 COMPLEX(kind=8) a( LA )
478 INTEGER, intent(in) :: lrgroups(n)
479 INTEGER(8) :: ptrfac(keep(28))
480 INTEGER(8) :: ptrast(keep(28))
481 INTEGER(8) :: pamaster(keep(28))
482 INTEGER ptrist( keep(28) ),
483 & ptlust( keep(28) )
484 INTEGER step(n), pimaster(keep(28))
485 INTEGER comp
486 INTEGER nstk_s(keep(28)), procnode_steps( keep(28) )
487 INTEGER perm(n)
488 INTEGER iflag, ierror, comm
489 INTEGER LPOOL, leaf
490 INTEGER ipool( lpool )
491 INTEGER myid, slavef, nbfin
492 DOUBLE PRECISION opassw, opeliw
493 INTEGER nelt, lptrar
494 INTEGER frtptr( N+1 ), frtelt( nelt )
495 INTEGER itloc( n+keep(253) ), fils( n ), dad( keep(28) )
496 COMPLEX(kind=8) :: rhs_mumps(keep(255))
497 INTEGER(8), INTENT(IN) :: ptrarw( lptrar ), ptraiw( lptrar )
498 INTEGER nd( keep(28) ), frere( keep(28) )
499 INTEGER istep_to_iniv2(keep(71)),
500 & tab_pos_in_pere(slavef+2,max(1,keep(56)))
501 INTEGER intarr( keep8(27) )
502 COMPLEX(kind=8) dblarr( keep8(26) )
503 INTEGER msgsou, msgtag, msglen, ierr
504 msgsou = status( mpi_source )
505 msgtag = status( mpi_tag )
506 CALL mpi_get_count( status, mpi_packed, msglen, ierr )
507 IF ( msglen .GT. lbufr_bytes ) THEN
508 iflag = -20
509 ierror = msglen
510 WRITE(*,*) ' RECEPTION BUF TOO SMALL, Msgtag/len=',
511 & msgtag,msglen
512 CALL zmumps_bdc_error( myid, slavef, comm, keep )
513 RETURN
514 ENDIF
515 keep(266)=keep(266)-1
516 CALL mpi_recv( bufr, lbufr_bytes, mpi_packed, msgsou,
517 & msgtag,
518 & comm, status, ierr )
520 & comm_load, ass_irecv,
521 & msgsou, msgtag, msglen, bufr, lbufr,
522 & lbufr_bytes,
523 & procnode_steps, posfac,
524 & iwpos, iwposcb, iptrlu,
525 & lrlu, lrlus, n, iw, liw, a, la, ptrist,
526 & ptlust, ptrfac,
527 & ptrast, step, pimaster, pamaster, nstk_s, comp, iflag,
528 & ierror, comm,
529 & perm, ipool, lpool, leaf, nbfin, myid, slavef,
530 &
531 & root, opassw, opeliw, itloc, rhs_mumps,
532 & fils, dad, ptrarw, ptraiw,
533 & intarr, dblarr, icntl, keep,keep8,dkeep, nd, frere,
534 & lptrar, nelt, frtptr, frtelt,
535 &
536 & istep_to_iniv2, tab_pos_in_pere
537 & , lrgroups
538 & )
539 RETURN
540 END SUBROUTINE zmumps_recv_and_treat
541 RECURSIVE SUBROUTINE zmumps_try_recvtreat(
542 & COMM_LOAD, ASS_IRECV, BLOCKING, SET_IRECV,
543 & MESSAGE_RECEIVED, MSGSOU, MSGTAG,
544 & STATUS,
545 & BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
546 & IWPOS, IWPOSCB, IPTRLU,
547 & LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
548 & PTLUST, PTRFAC,
549 & PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
550 & IFLAG, IERROR, COMM, PERM,
551 & IPOOL, LPOOL, LEAF, NBFIN, MYID, SLAVEF,
552 &
553 & root, OPASSW, OPELIW, ITLOC, RHS_MUMPS,
554 & FILS, DAD, PTRARW, PTRAIW,
555 & INTARR, DBLARR, ICNTL, KEEP,KEEP8,DKEEP, ND, FRERE,
556 & LPTRAR, NELT, FRTPTR, FRTELT,
557 &
558 & ISTEP_TO_INIV2, TAB_POS_IN_PERE,
559 & STACK_RIGHT_AUTHORIZED, LRGROUPS )
560 USE zmumps_load
561 USE zmumps_struc_def, ONLY : zmumps_root_struc
562 IMPLICIT NONE
563 include 'mpif.h'
564 include 'mumps_tags.h'
565 TYPE (zmumps_root_struc) :: root
566 INTEGER :: status(mpi_status_size)
567 LOGICAL, INTENT (IN) :: blocking
568 LOGICAL, INTENT (IN) :: set_irecv
569 LOGICAL, INTENT (INOUT) :: message_received
570 INTEGER, INTENT (IN) :: msgsou, msgtag
571 INTEGER keep(500), icntl(60)
572 INTEGER(8) keep8(150)
573 DOUBLE PRECISION dkeep(230)
574 INTEGER lbufr, lbufr_bytes
575 INTEGER comm_load, ass_irecv
576 INTEGER bufr( lbufr )
577 INTEGER(8) :: la, posfac, iptrlu, lrlu, lrlus
578 INTEGER iwpos, iwposcb
579 INTEGER n, liw
580 INTEGER iw( liw )
581 COMPLEX(kind=8) a( la )
582 INTEGER, intent(in) :: lrgroups(n)
583 INTEGER(8) :: ptrast(keep(28))
584 INTEGER(8) :: ptrfac(keep(28))
585 INTEGER(8) :: pamaster(keep(28))
586 INTEGER ptrist( keep(28) ),
587 & ptlust(keep(28))
588 INTEGER step(n),
589 & pimaster(keep(28))
590 INTEGER comp
591 INTEGER nstk_s(keep(28)), procnode_steps( keep(28) )
592 INTEGER perm(n)
593 INTEGER iflag, ierror, comm
594 INTEGER lpool, leaf
595 INTEGER ipool( lpool )
596 INTEGER myid, slavef, nbfin
597 DOUBLE PRECISION opassw, opeliw
598 INTEGER nelt, lptrar
599 INTEGER frtptr( n+1 ), frtelt( nelt )
600 INTEGER itloc( n + keep(253) ), fils( n ), dad( keep(28) )
601 COMPLEX(kind=8) :: rhs_mumps(keep(255))
602 INTEGER(8), INTENT(IN) :: ptrarw( lptrar ), ptraiw( lptrar )
603 INTEGER nd( keep(28) ), frere( KEEP(28) )
604 INTEGER istep_to_iniv2(keep(71)),
605 & tab_pos_in_pere(slavef+2,max(1,keep(56)))
606 INTEGER intarr( keep8(27) )
607 COMPLEX(kind=8) dblarr( keep8(26) )
608 LOGICAL, intent(in) :: stack_right_authorized
609 LOGICAL flag, right_mess, flagbis
610 INTEGER lp, msgsou_loc, msgtag_loc, msglen_loc
611 INTEGER ierr
612 INTEGER :: status_bis(mpi_status_size)
613 INTEGER, SAVE :: recurs = 0
614 CALL zmumps_load_recv_msgs(comm_load)
615 IF ( .NOT. stack_right_authorized ) THEN
616 RETURN
617 ENDIF
618 recurs = recurs + 1
619 lp = icntl(1)
620 IF (icntl(4).LT.1) lp=-1
621 IF ( message_received ) THEN
622 msgsou_loc = mpi_any_source
623 msgtag_loc = mpi_any_tag
624 GOTO 250
625 ENDIF
626 IF ( ass_irecv .NE. mpi_request_null) THEN
627 IF (keep(117).NE.0) THEN
628 WRITE(*,*) "Problem of active IRECV with KEEP(117)=",keep(117)
629 CALL mumps_abort()
630 ENDIF
631 right_mess = .true.
632 IF (blocking) THEN
633 CALL mpi_wait(ass_irecv,
634 & status, ierr)
635 flag = .true.
636 IF ( ( (msgsou.NE.mpi_any_source) .OR.
637 & (msgtag.NE.mpi_any_tag) ) ) THEN
638 IF ( msgsou.NE.mpi_any_source) THEN
639 right_mess = msgsou.EQ.status(mpi_source)
640 ENDIF
641 IF ( msgtag.NE.mpi_any_tag) THEN
642 right_mess =
643 & ( (msgtag.EQ.status(mpi_tag)).AND.right_mess )
644 ENDIF
645 IF (.NOT.right_mess) THEN
646 CALL mpi_probe(msgsou,msgtag,
647 & comm, status_bis, ierr)
648 ENDIF
649 ENDIF
650 ELSE
651 CALL mpi_test(ass_irecv,
652 & flag, status, ierr)
653 ENDIF
654 IF (ierr.LT.0) THEN
655 iflag = -20
656 IF (lp.GT.0)
657 & write(lp,*) ' Error return from MPI_TEST ',
658 & iflag, ' in ZMUMPS_TRY_RECVTREAT'
659 CALL zmumps_bdc_error( myid, slavef, comm, keep )
660 RETURN
661 ENDIF
662 IF ( flag ) THEN
663 keep(266)=keep(266)-1
664 message_received = .true.
665 msgsou_loc = status( mpi_source )
666 msgtag_loc = status( mpi_tag )
667 CALL mpi_get_count( status, mpi_packed, msglen_loc, ierr )
668 IF (.NOT.right_mess) recurs = recurs + 10
669 CALL zmumps_traiter_message( comm_load, ass_irecv,
670 & msgsou_loc, msgtag_loc, msglen_loc, bufr, lbufr,
671 & lbufr_bytes,
672 & procnode_steps, posfac,
673 & iwpos, iwposcb, iptrlu,
674 & lrlu, lrlus, n, iw, liw, a, la,
675 & ptrist, ptlust, ptrfac,
676 & ptrast, step, pimaster, pamaster, nstk_s, comp, iflag,
677 & ierror, comm,
678 & perm, ipool, lpool, leaf, nbfin, myid, slavef,
679 &
680 & root, opassw, opeliw, itloc, rhs_mumps, fils, dad,
681 & ptrarw, ptraiw,
682 & intarr, dblarr, icntl, keep,keep8,dkeep, nd, frere,
683 & lptrar, nelt, frtptr, frtelt,
684 & istep_to_iniv2, tab_pos_in_pere
685 & , lrgroups
686 & )
687 IF (.NOT.right_mess) recurs = recurs - 10
688 IF ( iflag .LT. 0 ) RETURN
689 IF (.NOT.right_mess) THEN
690 IF (ass_irecv .NE. mpi_request_null) THEN
691 CALL mumps_abort()
692 ENDIF
693 CALL mpi_iprobe(msgsou,msgtag,
694 & comm, flagbis, status, ierr)
695 IF (flagbis) THEN
696 msgsou_loc = status( mpi_source )
697 msgtag_loc = status( mpi_tag )
698 CALL zmumps_recv_and_treat( comm_load, ass_irecv,
699 & status, bufr, lbufr,
700 & lbufr_bytes,
701 & procnode_steps, posfac,
702 & iwpos, iwposcb, iptrlu,
703 & lrlu, lrlus, n, iw, liw, a, la,
704 & ptrist, ptlust, ptrfac,
705 & ptrast, step, pimaster, pamaster,
706 & nstk_s, comp, iflag,
707 & ierror, comm,
708 & perm, ipool, lpool,leaf,nbfin,myid,slavef,
709 &
710 & root, opassw, opeliw, itloc, rhs_mumps,
711 & fils, dad, ptrarw, ptraiw,
712 & intarr, dblarr, icntl,
713 & keep,keep8, dkeep,nd, frere,
714 & lptrar, nelt, frtptr, frtelt,
715 & istep_to_iniv2, tab_pos_in_pere
716 & , lrgroups
717 & )
718 IF ( iflag .LT. 0 ) RETURN
719 ENDIF
720 ENDIF
721 ENDIF
722 ELSE
723 IF (blocking) THEN
724 CALL mpi_probe(msgsou,msgtag,
725 & comm, status, ierr)
726 flag = .true.
727 ELSE
728 CALL mpi_iprobe( mpi_any_source, mpi_any_tag,
729 & comm, flag, status, ierr)
730 ENDIF
731 IF (flag) THEN
732 msgsou_loc = status( mpi_source )
733 msgtag_loc = status( mpi_tag )
734 message_received = .true.
735 CALL zmumps_recv_and_treat( comm_load, ass_irecv,
736 & status, bufr, lbufr,
737 & lbufr_bytes,
738 & procnode_steps, posfac,
739 & iwpos, iwposcb, iptrlu,
740 & lrlu, lrlus, n, iw, liw, a, la,
741 & ptrist, ptlust, ptrfac,
742 & ptrast, step, pimaster, pamaster, nstk_s, comp, iflag,
743 & ierror, comm,
744 & perm, ipool, lpool, leaf, nbfin, myid, slavef,
745 &
746 & root, opassw, opeliw, itloc, rhs_mumps,
747 & fils, dad, ptrarw, ptraiw,
748 & intarr, dblarr, icntl, keep,keep8,dkeep, nd, frere,
749 & lptrar, nelt, frtptr, frtelt,
750 & istep_to_iniv2, tab_pos_in_pere
751 & , lrgroups
752 & )
753 IF ( iflag .LT. 0 ) RETURN
754 ENDIF
755 ENDIF
756 250 CONTINUE
757 recurs = recurs - 1
758 IF ( nbfin .EQ. 0 ) RETURN
759 IF ( recurs .GT. 3 ) RETURN
760 IF ( keep(36).EQ.1 .AND. set_irecv .AND.
761 & (ass_irecv.EQ.mpi_request_null) .AND.
762 & message_received ) THEN
763 CALL mpi_irecv ( bufr(1),
764 & lbufr_bytes, mpi_packed, mpi_any_source,
765 & mpi_any_tag, comm,
766 & ass_irecv, ierr )
767 ENDIF
768 RETURN
769 END SUBROUTINE zmumps_try_recvtreat
770 SUBROUTINE zmumps_cancel_irecv( INFO1,
771 & KEEP, ASS_IRECV,
772 & BUFR, LBUFR, LBUFR_BYTES,
773 & COMM,
774 & MYID, SLAVEF)
775 USE zmumps_buf
776 IMPLICIT NONE
777 include 'mpif.h'
778 include 'mumps_tags.h'
779 INTEGER LBUFR, LBUFR_BYTES
780 INTEGER ASS_IRECV
781 INTEGER BUFR( LBUFR )
782 INTEGER COMM
783 INTEGER MYID, SLAVEF, INFO1, DEST
784 INTEGER, INTENT(INOUT) :: KEEP(500)
785 INTEGER :: STATUS(MPI_STATUS_SIZE)
786 LOGICAL NO_ACTIVE_IRECV
787 INTEGER IERR, DUMMY
788 INTRINSIC mod
789 IF (slavef .EQ. 1) RETURN
790 IF (ass_irecv.EQ.mpi_request_null) THEN
791 no_active_irecv=.true.
792 ELSE
793 CALL mpi_test(ass_irecv, no_active_irecv,
794 & status, ierr)
795 IF (no_active_irecv) THEN
796 keep(266) = keep(266) - 1
797 ENDIF
798 ENDIF
799 CALL mpi_barrier(comm,ierr)
800 dummy = 1
801 dest = mod(myid+1, slavef)
803 & (dummy, dest, tag_dummy, comm, keep, ierr)
804 IF (no_active_irecv) THEN
805 CALL mpi_recv( bufr, lbufr,
806 & mpi_integer, mpi_any_source,
807 & tag_dummy, comm, status, ierr )
808 ELSE
809 CALL mpi_wait(ass_irecv,
810 & status, ierr)
811 ENDIF
812 keep(266)=keep(266)-1
813 RETURN
814 END SUBROUTINE zmumps_cancel_irecv
816 & INFO1, KEEP, BUFR, LBUFR, LBUFR_BYTES,
817 & COMM_NODES, COMM_LOAD, SLAVEF,
818 & CLEAN_COMM_NODES, CLEAN_COMM_LOAD )
819 USE zmumps_buf
820 IMPLICIT NONE
821 INTEGER, INTENT(IN) :: LBUFR, LBUFR_BYTES
822 INTEGER, INTENT(OUT) :: BUFR( LBUFR )
823 INTEGER, INTENT(IN) :: COMM_NODES, COMM_LOAD, SLAVEF, INFO1
824 INTEGER, INTENT(INOUT) :: KEEP(500)
825 LOGICAL, INTENT(IN) :: CLEAN_COMM_LOAD, CLEAN_COMM_NODES
826 INCLUDE 'mpif.h'
827 INCLUDE 'mumps_tags.h'
828 INTEGER :: STATUS(MPI_STATUS_SIZE)
829 LOGICAL :: FLAG, BUFFERS_EMPTY, BUFFERS_EMPTY_ON_ALL_PROCS
830 INTEGER :: MSGSOU_LOC, MSGTAG_LOC, MSGLEN_LOC
831 INTEGER :: COMM_EFF
832 INTEGER :: IERR
833 INTEGER :: IBUF_EMPTY, IBUF_EMPTY_ON_ALL_PROCS
834 INTEGER :: TOTAL_SEND_MINUS_RECV266
835 INTEGER :: TOTAL_SEND_MINUS_RECV267
836 IF (slavef.EQ.1) RETURN
837 IF (.NOT. clean_comm_nodes .AND. .NOT. clean_comm_load) THEN
838 RETURN
839 ENDIF
840 DO WHILE (.true.)
841 flag = .true.
842 DO WHILE ( flag )
843 flag = .false.
844 IF (clean_comm_nodes) THEN
845 IF ( .NOT. flag ) THEN
846 comm_eff = comm_nodes
847 CALL mpi_iprobe(mpi_any_source,mpi_any_tag,
848 & comm_nodes, flag, status, ierr)
849 END IF
850 END IF
851 IF (clean_comm_load) THEN
852 IF ( .NOT. flag ) THEN
853 comm_eff = comm_load
854 CALL mpi_iprobe( mpi_any_source, mpi_any_tag,
855 & comm_load, flag, status, ierr)
856 END IF
857 END IF
858 IF (flag) THEN
859 msgsou_loc = status( mpi_source )
860 msgtag_loc = status( mpi_tag )
861 IF (comm_eff .EQ. comm_nodes) THEN
862 keep(266) = keep(266) - 1
863 ELSE
864 keep(267) = keep(267) - 1
865 ENDIF
866 CALL mpi_get_count( status, mpi_packed, msglen_loc, ierr )
867 IF (msglen_loc .LE. lbufr_bytes) THEN
868 CALL mpi_recv( bufr, lbufr_bytes,
869 & mpi_packed, msgsou_loc,
870 & msgtag_loc, comm_eff, status, ierr )
871 ENDIF
872 ENDIF
873 END DO
874 CALL zmumps_buf_all_empty( clean_comm_nodes,
875 & clean_comm_load,
876 & buffers_empty )
877 IF ( buffers_empty ) THEN
878 ibuf_empty = 0
879 ELSE
880 ibuf_empty = 1
881 ENDIF
882 IF (clean_comm_nodes) THEN
883 comm_eff = comm_nodes
884 ELSE
885 comm_eff = comm_load
886 ENDIF
887 CALL mpi_allreduce(ibuf_empty,
888 & ibuf_empty_on_all_procs,
889 & 1, mpi_integer, mpi_max,
890 & comm_eff, ierr)
891 IF ( ibuf_empty_on_all_procs == 0) THEN
892 buffers_empty_on_all_procs = .true.
893 ELSE
894 buffers_empty_on_all_procs = .false.
895 ENDIF
896 IF (buffers_empty_on_all_procs) THEN
897 IF (clean_comm_nodes) THEN
898 CALL mpi_allreduce(keep(266),
899 & total_send_minus_recv266,
900 & 1, mpi_integer, mpi_sum,
901 & comm_eff, ierr)
902 ELSE
903 total_send_minus_recv266 = 0
904 ENDIF
905 IF (clean_comm_load) THEN
906 CALL mpi_allreduce(keep(267),
907 & total_send_minus_recv267,
908 & 1, mpi_integer, mpi_sum,
909 & comm_eff, ierr)
910 ELSE
911 total_send_minus_recv267 = 0
912 ENDIF
913 IF (total_send_minus_recv266 .EQ. 0 .AND.
914 & total_send_minus_recv267 .EQ. 0) THEN
915 EXIT
916 ENDIF
917 ENDIF
918 ENDDO
919 RETURN
920 END SUBROUTINE zmumps_clean_pending
#define mumps_abort
Definition VE_Metis.h:25
#define max(a, b)
Definition macros.h:21
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)
Definition mpi.f:461
subroutine mpi_test(ireq, flag, status, ierr)
Definition mpi.f:502
subroutine mpi_iprobe(source, tag, comm, flag, status, ierr)
Definition mpi.f:360
subroutine mpi_wait(ireq, status, ierr)
Definition mpi.f:525
subroutine mpi_get_count(status, datatype, cnt, ierr)
Definition mpi.f:296
subroutine mpi_allreduce(sendbuf, recvbuf, cnt, datatype, operation, comm, ierr)
Definition mpi.f:103
subroutine mpi_probe(source, tag, comm, status, ierr)
Definition mpi.f:449
subroutine mpi_barrier(comm, ierr)
Definition mpi.f:188
subroutine mpi_irecv(buf, cnt, datatype, source, tag, comm, ireq, ierr)
Definition mpi.f:372
subroutine mpi_unpack(inbuf, insize, position, outbuf, outcnt, datatype, comm, ierr)
Definition mpi.f:514
subroutine, public zmumps_buf_all_empty(check_comm_nodes, check_comm_load, flag)
subroutine, public zmumps_buf_send_1int(i, dest, tag, comm, keep, ierr)
integer, save, private myid
Definition zmumps_load.F:57
recursive subroutine, public zmumps_load_recv_msgs(comm)
int comp(int a, int b)
integer function mumps_typenode(procinfo_inode, k199)
integer function mumps_procnode(procinfo_inode, k199)
subroutine zmumps_bdc_error(myid, slavef, comm, keep)
Definition zbcast_int.F:38
subroutine zmumps_process_desc_bande(myid, bufr, lbufr, lbufr_bytes, iwpos, iwposcb, iptrlu, lrlu, lrlus, n, iw, liw, a, la, slavef, procnode_steps, dad, ptrist, ptrast, step, pimaster, pamaster, comp, keep, keep8, dkeep, itloc, rhs_mumps, istep_to_iniv2, iwhandler_in, iflag, ierror)
subroutine zmumps_process_node(myid, keep, keep8, dkeep, bufr, lbufr, lbufr_bytes, iwpos, iwposcb, iptrlu, lrlu, lrlus, n, iw, liw, a, la, slavef, procnode_steps, dad, ptrist, ptrast, step, pimaster, pamaster, nstk_s, comp, fpere, flag, iflag, ierror, comm, itloc, rhs_mumps)
subroutine zmumps_process_contrib_type3(bufr, lbufr, lbufr_bytes, root, n, iw, liw, a, la, lrlu, iptrlu, iwpos, iwposcb, ptrist, ptlust, ptrfac, ptrast, step, pimaster, pamaster, comp, lrlus, ipool, lpool, leaf, fils, dad, myid, lptrar, nelt, frtptr, frtelt, ptraiw, ptrarw, intarr, dblarr, keep, keep8, dkeep, iflag, ierror, comm, comm_load, itloc, rhs_mumps, nd, procnode_steps, slavef, opassw)
subroutine zmumps_process_master2(myid, bufr, lbufr, lbufr_bytes, procnode_steps, slavef, iwpos, iwposcb, iptrlu, lrlu, lrlus, n, iw, liw, a, la, ptrist, ptrast, step, pimaster, pamaster, nstk_s, comp, iflag, ierror, comm, comm_load, ipool, lpool, leaf, keep, keep8, dkeep, nd, fils, dad, frere, itloc, rhs_mumps, istep_to_iniv2, tab_pos_in_pere)
recursive subroutine zmumps_traiter_message(comm_load, ass_irecv, msgsou, msgtag, msglen, bufr, lbufr, lbufr_bytes, procnode_steps, posfac, iwpos, iwposcb, iptrlu, lrlu, lrlus, n, iw, liw, a, la, ptrist, ptlust, ptrfac, ptrast, step, pimaster, pamaster, nstk_s, comp, iflag, ierror, comm, perm, ipool, lpool, leaf, nbfin, myid, slavef root, opassw, opeliw, itloc, rhs_mumps, fils, dad, ptrarw, ptraiw, intarr, dblarr, icntl, keep, keep8, dkeep, nd, frere, lptrar, nelt, frtptr, frtelt istep_to_iniv2, tab_pos_in_pere, lrgroups)
subroutine zmumps_clean_pending(info1, keep, bufr, lbufr, lbufr_bytes, comm_nodes, comm_load, slavef, clean_comm_nodes, clean_comm_load)
subroutine zmumps_cancel_irecv(info1, keep, ass_irecv, bufr, lbufr, lbufr_bytes, comm, myid, slavef)
recursive subroutine zmumps_recv_and_treat(comm_load, ass_irecv, status, bufr, lbufr, lbufr_bytes, procnode_steps, posfac, iwpos, iwposcb, iptrlu, lrlu, lrlus, n, iw, liw, a, la, ptrist, ptlust, ptrfac, ptrast, step, pimaster, pamaster, nstk_s, comp, iflag, ierror, comm, perm, ipool, lpool, leaf, nbfin, myid, slavef root, opassw, opeliw, itloc, rhs_mumps, fils, dad, ptrarw, ptraiw, intarr, dblarr, icntl, keep, keep8, dkeep, nd, frere, lptrar, nelt, frtptr, frtelt istep_to_iniv2, tab_pos_in_pere, lrgroups)
recursive subroutine zmumps_try_recvtreat(comm_load, ass_irecv, blocking, set_irecv, message_received, msgsou, msgtag, status, bufr, lbufr, lbufr_bytes, procnode_steps, posfac, iwpos, iwposcb, iptrlu, lrlu, lrlus, n, iw, liw, a, la, ptrist, ptlust, ptrfac, ptrast, step, pimaster, pamaster, nstk_s, comp, iflag, ierror, comm, perm, ipool, lpool, leaf, nbfin, myid, slavef root, opassw, opeliw, itloc, rhs_mumps, fils, dad, ptrarw, ptraiw, intarr, dblarr, icntl, keep, keep8, dkeep, nd, frere, lptrar, nelt, frtptr, frtelt istep_to_iniv2, tab_pos_in_pere, stack_right_authorized, lrgroups)
subroutine zmumps_process_root2slave(tot_root_size, tot_cont_to_recv, root, bufr, lbufr, lbufr_bytes, procnode_steps, posfac, iwpos, iwposcb, iptrlu, lrlu, lrlus, n, iw, liw, a, la, ptrist, ptlust, ptrfac, ptrast, step, pimaster, pamaster, nstk_s, comp, iflag, ierror, comm, comm_load, ipool, lpool, leaf, nbfin, myid, slavef opassw, opeliw, itloc, rhs_mumps, fils, dad, lptrar, nelt, frtptr, frtelt, ptrarw, ptraiw, intarr, dblarr, icntl, keep, keep8, dkeep, nd)
recursive subroutine zmumps_process_root2son(comm_load, ass_irecv, inode, nelim_root, root, bufr, lbufr, lbufr_bytes, procnode_steps, posfac, iwpos, iwposcb, iptrlu, lrlu, lrlus, n, iw, liw, a, la, ptrist, ptlust_s, ptrfac, ptrast, step, pimaster, pamaster, nstk_s, comp, iflag, ierror, comm, perm, ipool, lpool, leaf, nbfin, myid, slavef opassw, opeliw, itloc, rhs_mumps, fils, dad, ptrarw, ptraiw, intarr, dblarr, icntl, keep, keep8, dkeep, nd, frere, lptrar, nelt, frtptr, frtelt, istep_to_iniv2, tab_pos_in_pere, lrgroups)
subroutine zmumps_process_rtnelind(root, inode, nelim, nslaves, row_list, col_list, slave_list, procnode_steps, iwpos, iwposcb, iptrlu, lrlu, lrlus, n, iw, liw, a, la, ptrist, ptlust_s, ptrfac, ptrast, step, pimaster, pamaster, nstk_s, itloc, rhs_mumps, comp, iflag, ierror, ipool, lpool, leaf, myid, slavef, keep, keep8, dkeep, comm, comm_load, fils, dad, nd)
subroutine zmumps_free_band(n, ison, ptrist, ptrast, iw, liw, a, la, lrlu, lrlus, iwposcb, iptrlu, step, myid, keep, keep8, type_son)
Definition ztools.F:461