OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
cfac_par_m.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
15 CONTAINS
16 SUBROUTINE cmumps_fac_par(N, IW, LIW, A, LA, NSTK_STEPS,
17 & ND, FILS, STEP, FRERE, DAD, CAND, ISTEP_TO_INIV2,
18 & TAB_POS_IN_PERE, NSTEPSDONE, OPASS, OPELI, NELVA, COMP, MAXFRT,
19 & NMAXNPIV, NTOTPV, NOFFNEGPV, NB22T1, NB22T2, NBTINY, DET_EXP,
20 & DET_MANT, DET_SIGN, PTRIST, PTRAST, PIMASTER, PAMASTER,
21 & PTRARW, PTRAIW, ITLOC, RHS_MUMPS, IPOOL, LPOOL,
22 & L0_OMP_MAPPING, LL0_OMP_MAPPING,
23 & MUMPS_TPS_ARR, CMUMPS_TPS_ARR, LTPS_ARR,
24 & RINFO, POSFAC ,IWPOS, LRLU, IPTRLU, LRLUS, LEAF, NBROOT, NBRTOT,
25 & NBROOT_UNDER_L0,
26 & UU, ICNTL, PTLUST, PTRFAC, INFO, KEEP,KEEP8, PROCNODE_STEPS,
27 & SLAVEF,MYID, COMM_NODES, MYID_NODES, BUFR, LBUFR, LBUFR_BYTES,
28 & INTARR, DBLARR, root, PERM, NELT, FRTPTR, FRTELT, LPTRAR,
29 & COMM_LOAD, ASS_IRECV, SEUIL, SEUIL_LDLT_NIV2, MEM_DISTRIB, NE,
30 & DKEEP, PIVNUL_LIST, LPN_LIST, LRGROUPS )
31!$ USE OMP_LIB
32 USE cmumps_dynamic_memory_m, ONLY :
34 USE cmumps_load
35 USE cmumps_ooc
42 USE omp_lib
43 USE mumps_tps_m
44 USE cmumps_tps_m
45 USE cmumps_struc_def, ONLY : cmumps_root_struc
46 IMPLICIT NONE
47 TYPE (CMUMPS_ROOT_STRUC) :: root
48 INTEGER N, LIW, LPTRAR, NSTEPSDONE, INFO(80)
49 DOUBLE PRECISION, INTENT(INOUT) :: OPASS, OPELI
50 INTEGER, INTENT(INOUT) :: NELVA, COMP
51 INTEGER, INTENT(INOUT) :: MAXFRT, NTOTPV, NMAXNPIV, NOFFNEGPV
52 INTEGER, INTENT(INOUT) :: NB22T1, NB22T2, NBTINY
53 INTEGER, INTENT(INOUT) :: DET_SIGN, DET_EXP
54 COMPLEX, INTENT(INOUT) :: DET_MANT
55 INTEGER(8) :: LA
56 COMPLEX, TARGET :: A(LA)
57 INTEGER SLAVEF, COMM_NODES, MYID, MYID_NODES
58 INTEGER, DIMENSION(0: SLAVEF - 1) :: MEM_DISTRIB
59 INTEGER KEEP(500), ICNTL(60)
60 INTEGER(8) KEEP8(150)
61 INTEGER LPOOL
62 INTEGER PROCNODE_STEPS(KEEP(28))
63 INTEGER ITLOC(N+KEEP(253))
64 COMPLEX :: RHS_MUMPS(KEEP(255))
65 INTEGER IW(LIW), NSTK_STEPS(KEEP(28))
66 INTEGER(8), INTENT(IN) :: PTRARW(LPTRAR), PTRAIW(LPTRAR)
67 INTEGER ND(KEEP(28))
68 INTEGER FILS(N),PTRIST(KEEP(28))
69 INTEGER STEP(N), FRERE(KEEP(28)), DAD(KEEP(28))
70 INTEGER PIMASTER(KEEP(28))
71 INTEGER PTLUST(KEEP(28)), PERM(N)
72 INTEGER CAND(SLAVEF+1,max(1,KEEP(56)))
73 INTEGER ISTEP_TO_INIV2(KEEP(71)),
74 & tab_pos_in_pere(slavef+2,max(1,keep(56)))
75 INTEGER IPOOL(LPOOL)
76 INTEGER NE(KEEP(28))
77 REAL RINFO(40)
78 INTEGER(8) :: PAMASTER(KEEP(28)), PTRAST(KEEP(28))
79 INTEGER(8) :: PTRFAC(KEEP(28))
80 INTEGER(8) :: POSFAC, LRLU, LRLUS, IPTRLU
81 INTEGER IWPOS, LEAF, NBROOT, NBRTOT
82 INTEGER, INTENT(in) :: NBROOT_UNDER_L0
83 INTEGER COMM_LOAD, ASS_IRECV
84 REAL UU, SEUIL, SEUIL_LDLT_NIV2
85 INTEGER NELT
86 INTEGER FRTPTR( N+1 ), FRTELT( NELT )
87 INTEGER LBUFR, LBUFR_BYTES
88 INTEGER BUFR( LBUFR )
89 COMPLEX DBLARR( KEEP8(26) )
90 INTEGER INTARR( KEEP8(27) )
91 LOGICAL IS_ISOLATED_NODE
92 INTEGER LPN_LIST
93 INTEGER PIVNUL_LIST(LPN_LIST)
94 REAL DKEEP(230)
95 INTEGER LRGROUPS(N)
96 INTEGER, INTENT( IN ) :: LTPS_ARR
97 TYPE (MUMPS_TPS_T), TARGET :: MUMPS_TPS_ARR( LTPS_ARR )
98 TYPE (CMUMPS_TPS_T), TARGET :: CMUMPS_TPS_ARR( LTPS_ARR )
99 INTEGER, INTENT( IN ) :: LL0_OMP_MAPPING
100 INTEGER, INTENT( IN ) :: L0_OMP_MAPPING( LL0_OMP_MAPPING )
101 include 'mpif.h'
102 include 'mumps_tags.h'
103 INTEGER :: STATUS(MPI_STATUS_SIZE)
104 INTEGER :: IERR
105 DOUBLE PRECISION, PARAMETER :: DZERO = 0.0d0, done = 1.0d0
106 INTEGER INODE
107 INTEGER IWPOSCB
108 INTEGER FPERE, TYPEF
109 INTEGER MP, LP, DUMMY(1)
110 INTEGER NBFIN, NBROOT_TRAITEES
111 INTEGER NFRONT, IOLDPS, NASS, HF, XSIZE
112 INTEGER(8) :: NFRONT8
113 INTEGER(8) :: POSELT
114 INTEGER IPOSROOT, IPOSROOTROWINDICES
115 INTEGER GLOBK109
116 INTEGER(8) :: LBUFRX
117 COMPLEX, POINTER, DIMENSION(:) :: BUFRX
118 LOGICAL :: IS_BUFRX_ALLOCATED
119 DOUBLE PRECISION FLOP1
120 INTEGER TYPE
121 LOGICAL SON_LEVEL2, SET_IRECV, BLOCKING,
122 & message_received
123 LOGICAL AVOID_DELAYED
124 LOGICAL LAST_CALL
125 INTEGER MASTER_ROOT
126 INTEGER LOCAL_M, LOCAL_N
127 INTEGER LRHS_CNTR_MASTER_ROOT, FWD_LOCAL_N_RHS
128 LOGICAL ROOT_OWNER
130 INTEGER MUMPS_TYPENODE, MUMPS_PROCNODE
131 LOGICAL MUMPS_INSSARBR,MUMPS_ROOTSSARBR
132 EXTERNAL mumps_inssarbr,mumps_rootssarbr
133 LOGICAL CMUMPS_POOL_EMPTY
134 EXTERNAL cmumps_pool_empty, cmumps_extract_pool
135 LOGICAL STACK_RIGHT_AUTHORIZED
136 INTEGER numroc
137 EXTERNAL numroc
138 INTEGER JOBASS, ETATASS
139 INTEGER(8) :: LAFAC
140 INTEGER LIWFAC, STRAT, TYPEFile, NextPiv2beWritten,
141 & idummy
142 INTEGER(8) :: ITMP8
143 TYPE(io_block) :: MonBloc
144 include 'mumps_headers.h'
145 INTEGER MPA
146 DOUBLE PRECISION OPLAST_PRINTED
147 INTEGER:: ITH
148 DOUBLE PRECISION :: DUMMY_FLOP_ESTIM_ACC
149#if defined(multicore_profiling)
150 DOUBLE PRECISION :: LATIME, LFTIME, LSTIME
151 DOUBLE PRECISION :: GATIME, GFTIME, GSTIME
152 gatime = 0
153 gftime = 0
154 gstime = 0
155#endif
156 dummy_flop_estim_acc = 0.0d0
157 itloc(1:n+keep(253)) =0
158 ass_irecv = mpi_request_null
159 mp = icntl(2)
160 lp = icntl(1)
161 iwposcb = liw
162 NULLIFY(bufrx)
163 is_bufrx_allocated = .false.
164 keep(143) = -1
165 IF ( info(1) .LT. 0 ) THEN
166 GOTO 640
167 ENDIF
168 oplast_printed = done
169 mpa = icntl(2)
170 IF (icntl(4).LT.2) mpa=0
171 IF (mpa.GT.0)
172 & CALL mumps_print_still_active (myid_nodes, keep,
173 & dble(dkeep(17)),
174 & opeli,
175 & oplast_printed, mpa)
176 stack_right_authorized = .true.
177 CALL cmumps_alloc_cb( .false., 0_8,
178 & .false., .false., myid_nodes, n, keep, keep8, dkeep,
179 & iw, liw, a, la, lrlu, iptrlu, iwpos, iwposcb,
180 & slavef, procnode_steps, dad,
181 & ptrist, ptrast, step, pimaster,
182 & pamaster, keep(ixsz), 0_8, -444, -444, .true.,
183 & comp, lrlus, keep8(67),
184 & info(1), info(2)
185 & )
186 jobass = 0
187 etatass = 0
188 nbfin = nbrtot
189 nbroot_traitees = 0
190 keep(121)=0
191 IF ( keep(38).NE.0 ) THEN
192 IF (root%yes) THEN
194 & root, keep(38), n, iw, liw,
195 & a, la,
196 & fils, dad, myid_nodes, slavef, procnode_steps,
197 & lptrar, nelt, frtptr, frtelt,
198 & ptraiw, ptrarw,
199 & intarr, dblarr,
200 & lrlu, iptrlu,
201 & iwpos, iwposcb, ptrist, ptrast,
202 & step, pimaster, pamaster, itloc, rhs_mumps,
203 & comp, lrlus, info(1), keep,keep8, dkeep, info(2) )
204 ENDIF
205 IF ( info(1) .LT. 0 ) GOTO 635
206 END IF
207 IF (keep(400).GT.0) THEN
208 nbroot_traitees = nbroot_under_l0
209 IF (nbroot_traitees .GT.0) THEN
210 IF (nbroot_traitees.EQ.nbroot) THEN
211 nbfin = nbfin - nbroot
212 IF (slavef .GT. 1) THEN
213 CALL cmumps_mcast2( nbroot, 1, mpi_integer,
214 & myid_nodes, comm_nodes, racine, slavef, keep )
215 ENDIF
216 ENDIF
217 ENDIF
218 IF (nbfin .EQ. 0) GOTO 640
219 ENDIF
220 keep(429)=0
221 20 CONTINUE
222 niv1_flag=0
223 set_irecv = .true.
224 blocking = .false.
225 message_received = .false.
227 & comm_load, ass_irecv, blocking, set_irecv,
228 & message_received,
229 & mpi_any_source, mpi_any_tag,
230 & status, bufr, lbufr,
231 & lbufr_bytes, procnode_steps, posfac,
232 & iwpos, iwposcb, iptrlu,
233 & lrlu, lrlus, n, iw, liw, a, la,
234 & ptrist, ptlust, ptrfac,
235 & ptrast, step, pimaster, pamaster, nstk_steps,
236 & comp, info(1), info(2), comm_nodes, perm,
237 & ipool, lpool, leaf, nbfin, myid_nodes, slavef,
238 & root, opass, opeli, itloc, rhs_mumps, fils, dad,
239 & ptrarw, ptraiw,
240 & intarr, dblarr, icntl, keep,keep8,dkeep, nd, frere,
241 & lptrar, nelt, frtptr, frtelt,
242 & istep_to_iniv2, tab_pos_in_pere,
243 & stack_right_authorized
244 & , lrgroups
245 & )
246 CALL cmumps_load_recv_msgs(comm_load)
247 IF (mpa.GT.0)
248 & CALL mumps_print_still_active (myid_nodes, keep,
249 & dble(dkeep(17)),
250 & opeli,
251 & oplast_printed, mpa)
252 IF (message_received) THEN
253 IF ( info(1) .LT. 0 ) GO TO 640
254 IF ( nbfin .eq. 0 ) GOTO 640
255 ELSE
256 IF ( .NOT. cmumps_pool_empty( ipool, lpool) )THEN
257 CALL cmumps_extract_pool( n, ipool, lpool,
258 & procnode_steps,
259 & slavef, step, inode, keep,keep8, myid_nodes, nd,
260 & (.NOT. stack_right_authorized) )
261 stack_right_authorized = .true.
262 IF (keep(47) .GE. 3) THEN
264 & ipool, lpool,
265 & procnode_steps, keep,keep8, slavef, comm_load,
266 & myid_nodes, step, n, nd, fils )
267 ENDIF
268 IF (keep(47).EQ.4) THEN
269 IF(inode.GT.0.AND.inode.LE.n)THEN
270 IF((ne(step(inode)).EQ.0).AND.
271 & (frere(step(inode)).EQ.0))THEN
272 is_isolated_node=.true.
273 ELSE
274 is_isolated_node=.false.
275 ENDIF
276 ENDIF
278 & is_isolated_node,inode,ipool,lpool,
279 & myid_nodes,slavef,comm_load,keep,keep8)
280 ENDIF
281 IF ((( keep(80) == 2 .OR. keep(80)==3 ) .AND.
282 & ( keep(47) == 4 )).OR.
283 & (keep(80) == 1 .AND. keep(47) .GE. 1)) THEN
284 CALL cmumps_upper_predict(inode,step,keep(28),
285 & procnode_steps,frere,nd,comm_load,slavef,
286 & myid_nodes,keep,keep8,n)
287 END IF
288 GOTO 30
289 ENDIF
290 ENDIF
291 GO TO 20
292 30 CONTINUE
293 IF ( inode .LT. 0 ) THEN
294 inode = -inode
295 fpere = dad(step(inode))
296 GOTO 130
297 ELSE IF (inode.GT.n) THEN
298 inode = inode - n
299 IF (inode.EQ.keep(38)) THEN
300 nbroot_traitees = nbroot_traitees + 1
301 IF ( nbroot_traitees .EQ. nbroot ) THEN
302 nbfin = nbfin - nbroot
303 IF (slavef.GT.1) THEN
304 dummy(1) = nbroot
305 CALL cmumps_mcast2(dummy, 1, mpi_integer, myid_nodes,
306 & comm_nodes, racine, slavef, keep )
307 END IF
308 ENDIF
309 IF (nbfin.EQ.0) GOTO 640
310 GOTO 20
311 ENDIF
312 TYPE = mumps_typenode(procnode_steps(step(inode)),keep(199))
313 IF (type.EQ.1) GOTO 100
314 fpere = dad(step(inode))
315 avoid_delayed = ( (fpere .eq. keep(20) .OR. fpere .eq. keep(38))
316 & .AND. keep(60).ne.0 )
317 IF ( keep(50) .eq. 0 ) THEN
318 CALL cmumps_fac2_lu( comm_load, ass_irecv,
319 & n, inode, fpere, iw, liw, a, la, uu,
320 & noffnegpv, ntotpv, nbtiny,
321 & det_exp, det_mant, det_sign,
322 & comm_nodes, myid_nodes, bufr, lbufr,lbufr_bytes,
323 & nbfin,leaf, info(1), info(2), ipool,lpool,
324 & slavef, posfac, iwpos, iwposcb, iptrlu, lrlu,
325 & lrlus, comp, ptrist, ptrast, ptlust, ptrfac,
326 & step, pimaster, pamaster,
327 & nstk_steps,perm,procnode_steps,
328 & root, opass, opeli, itloc, rhs_mumps,
329 & fils, dad, ptrarw, ptraiw,
330 & intarr, dblarr, icntl, keep,keep8, nd, frere,
331 & lptrar, nelt, frtptr, frtelt, seuil,
332 & istep_to_iniv2, tab_pos_in_pere, avoid_delayed,
333 & dkeep(1),pivnul_list(1),lpn_list
334 & , lrgroups
335 & )
336 IF ( info(1) .LT. 0 ) GOTO 640
337 IF (mpa.GT.0)
338 & CALL mumps_print_still_active (myid_nodes, keep,
339 & dble(dkeep(17)),
340 & opeli,
341 & oplast_printed, mpa)
342 ELSE
343 CALL cmumps_fac2_ldlt( comm_load, ass_irecv,
344 & n, inode, fpere, iw, liw, a, la, uu,
345 & noffnegpv, ntotpv,
346 & nb22t2, nbtiny, det_exp, det_mant, det_sign,
347 & comm_nodes, myid_nodes, bufr, lbufr,lbufr_bytes,
348 & nbfin,leaf, info(1), info(2), ipool,lpool,
349 & slavef, posfac, iwpos, iwposcb, iptrlu, lrlu,
350 & lrlus, comp, ptrist, ptrast, ptlust, ptrfac,
351 & step, pimaster, pamaster,
352 & nstk_steps,perm,procnode_steps,
353 & root, opass, opeli, itloc, rhs_mumps,
354 & fils, dad, ptrarw, ptraiw,
355 & intarr, dblarr, icntl, keep,keep8, nd, frere,
356 & lptrar, nelt, frtptr, frtelt, seuil_ldlt_niv2,
357 & istep_to_iniv2, tab_pos_in_pere, avoid_delayed,
358 & dkeep(1),pivnul_list(1),lpn_list
359 & , lrgroups
360 & )
361 IF ( info(1) .LT. 0 ) GOTO 640
362 IF (mpa.GT.0)
363 & CALL mumps_print_still_active (myid_nodes, keep,
364 & dble(dkeep(17)),
365 & opeli,
366 & oplast_printed, mpa)
367 IF ( iw( ptlust(step(inode)) + keep(ixsz) + 5 ) .GT. 1 ) THEN
368 GOTO 20
369 END IF
370 END IF
371 GOTO 130
372 ENDIF
373 IF (inode.EQ.keep(38)) THEN
374 CALL cmumps_last_rtnelind( comm_load, ass_irecv,
375 & root, frere,
376 & inode,
377 & bufr, lbufr, lbufr_bytes, procnode_steps, posfac,
378 & iwpos, iwposcb, iptrlu,
379 & lrlu, lrlus, n, iw, liw, a, la, ptrist,
380 & ptlust, ptrfac,
381 & ptrast, step, pimaster, pamaster, nstk_steps, comp,
382 & info(1), info(2), comm_nodes,
383 & perm,
384 & ipool, lpool, leaf,
385 & nbfin, myid_nodes, slavef,
386 &
387 & opass, opeli, itloc, rhs_mumps,
388 & fils, dad, ptrarw, ptraiw,
389 & intarr, dblarr,icntl,keep,keep8,dkeep, nd,
390 & lptrar, nelt, frtptr, frtelt,
391 & istep_to_iniv2, tab_pos_in_pere
392 & , lrgroups
393 & )
394 IF ( info(1) .LT. 0 ) GOTO 640
395 IF (mpa.GT.0)
396 & CALL mumps_print_still_active (myid_nodes, keep,
397 & dble(dkeep(17)),
398 & opeli,
399 & oplast_printed, mpa)
400 GOTO 20
401 ENDIF
402 TYPE = mumps_typenode(procnode_steps(step(inode)),keep(199))
403 IF (type.EQ.1) THEN
404 IF (keep(55).NE.0) THEN
405 CALL cmumps_fac_asm_niv1_elt( comm_load, ass_irecv,
406 & nelt, frtptr, frtelt,
407 & n,inode,iw,liw,a,la,
408 & info(1),nd,
409 & fils,frere,dad,maxfrt,root,opass, opeli,
410 & ptrist,ptlust,ptrfac,ptrast,step, pimaster,pamaster,
411 & ptrarw,ptraiw,
412 & itloc, rhs_mumps, nstepsdone, son_level2,
413 & comp, lrlu, iptrlu,
414 & iwpos,iwposcb, posfac, lrlus, keep8(67),
415 & icntl, keep,keep8,dkeep,
416 & intarr,keep8(27),dblarr,keep8(26),
417 & nstk_steps,procnode_steps, slavef,
418 & comm_nodes, myid_nodes,
419 & bufr, lbufr, lbufr_bytes, nbfin, ipool, lpool, leaf,
420 & perm, istep_to_iniv2, tab_pos_in_pere
421 & , lrgroups
422 & , mumps_tps_arr, cmumps_tps_arr,
423 & l0_omp_mapping
424 & )
425 ELSE
426 jobass = 0
427 CALL cmumps_fac_asm_niv1(comm_load, ass_irecv,
428 & n,inode,iw,liw,a,la,
429 & info(1),nd,
430 & fils,frere,dad,maxfrt,root,opass, opeli,
431 & ptrist,ptlust,ptrfac,ptrast,step, pimaster,pamaster,
432 & ptrarw,ptraiw,
433 & itloc, rhs_mumps, nstepsdone, son_level2,
434 & comp, lrlu, iptrlu,
435 & iwpos,iwposcb, posfac, lrlus, keep8(67),
436 & icntl, keep,keep8,dkeep, intarr,keep8(27),
437 & dblarr,keep8(26),
438 & nstk_steps,procnode_steps, slavef,
439 & comm_nodes, myid_nodes,
440 & bufr, lbufr, lbufr_bytes, nbfin, ipool, lpool, leaf,
441 & perm,
442 & istep_to_iniv2, tab_pos_in_pere, jobass,etatass
443 & , lrgroups
444 & , mumps_tps_arr, cmumps_tps_arr,
445 & l0_omp_mapping
446 & )
447 ENDIF
448 IF (mpa.GT.0)
449 & CALL mumps_print_still_active (myid_nodes, keep,
450 & dble(dkeep(17)),
451 & opeli,
452 & oplast_printed, mpa)
453 IF ( info(1) .LT. 0 ) GOTO 640
454 IF ((iw(ptlust(step(inode))+xxnbpr).GT.0).OR.(son_level2)) THEN
455 GOTO 20
456 ENDIF
457 ELSE
458 IF ( keep(55) .eq. 0 ) THEN
459 CALL cmumps_fac_asm_niv2(comm_load, ass_irecv,
460 & n, inode, iw, liw, a, la,
461 & info(1),
462 & nd, fils, frere, dad, cand,
463 & istep_to_iniv2, tab_pos_in_pere,
464 & maxfrt,
465 & root, opass, opeli, ptrist, ptlust, ptrfac,
466 & ptrast, step, pimaster, pamaster, ptrarw, nstk_steps,
467 & ptraiw, itloc, rhs_mumps, nstepsdone,
468 & comp, lrlu, iptrlu, iwpos, iwposcb, posfac, lrlus,
469 & icntl, keep,keep8,dkeep,intarr,keep8(27),dblarr,keep8(26),
470 & procnode_steps, slavef, comm_nodes,
471 & myid_nodes,
472 & bufr, lbufr, lbufr_bytes,
473 & nbfin, leaf, ipool, lpool, perm,
474 & mem_distrib(0)
475 & , lrgroups
476 & )
477 ELSE
478 CALL cmumps_fac_asm_niv2_elt( comm_load, ass_irecv,
479 & nelt, frtptr, frtelt,
480 & n, inode, iw, liw, a, la, info(1),
481 & nd, fils, frere, dad, cand,
482 & istep_to_iniv2, tab_pos_in_pere,
483 & maxfrt,
484 & root, opass, opeli, ptrist, ptlust, ptrfac,
485 & ptrast, step, pimaster, pamaster, ptrarw, nstk_steps,
486 & ptraiw, itloc, rhs_mumps, nstepsdone,
487 & comp, lrlu, iptrlu, iwpos, iwposcb, posfac, lrlus,
488 & icntl, keep,keep8,dkeep,intarr,keep8(27),dblarr,keep8(26),
489 & procnode_steps, slavef, comm_nodes,
490 & myid_nodes,
491 & bufr, lbufr, lbufr_bytes,
492 & nbfin, leaf, ipool, lpool, perm,
493 & mem_distrib(0)
494 & , lrgroups
495 & )
496 END IF
497 IF (mpa.GT.0)
498 & CALL mumps_print_still_active (myid_nodes, keep,
499 & dble(dkeep(17)),
500 & opeli,
501 & oplast_printed, mpa)
502 IF (info(1).LT.0) GOTO 640
503 GOTO 20
504 ENDIF
505 100 CONTINUE
506 fpere = dad(step(inode))
507 IF ( inode .eq. keep(20) ) THEN
508 poselt = ptrast(step(inode))
509 IF (ptrfac(step(inode)).NE.poselt) THEN
510 WRITE(*,*) "ERROR 2 in CMUMPS_FAC_PAR", poselt
511 GOTO 635
512 ENDIF
514 & ( iw(ptlust(step(inode))+keep(ixsz)), keep(253) )
515 GOTO 200
516 END IF
517 poselt = ptrast(step(inode))
518 ioldps = ptlust(step(inode))
519 xsize = keep(ixsz)
520 hf = 6 + iw(ioldps+5+xsize)+xsize
521 nfront = iw(ioldps+xsize)
522 nass = iabs(iw(ioldps+2+xsize))
523 avoid_delayed = ( (fpere .eq. keep(20) .OR. fpere .eq. keep(38))
524 & .AND. keep(60).ne.0 )
525 IF (keep(50).EQ.0) THEN
526 CALL cmumps_fac1_lu (
527 & n, inode, iw, liw, a, la,
528 & ioldps, poselt,
529 & info(1), info(2), uu, noffnegpv, ntotpv, nbtiny,
530 & det_exp, det_mant, det_sign,
531 & keep,keep8,
532 & step, procnode_steps, myid_nodes, slavef,
533 & seuil, avoid_delayed, etatass,
534 & dkeep(1),pivnul_list(1),lpn_list, iwpos
535 & , lrgroups
536 & , perm
537 & )
538 IF (info(1).LT.0) GOTO 635
539#if defined(multicore_profiling)
540 lftime = mpi_wtime() - lftime
541 gftime = gftime + lftime
542 WRITE(*,*)'FAC ',lftime
543#endif
544 ELSE
545 iw( ioldps+4+keep(ixsz) ) = 1
546 CALL cmumps_fac1_ldlt( n, inode,
547 & iw, liw, a, la,
548 & ioldps, poselt,
549 & info(1), info(2), uu, noffnegpv, ntotpv,
550 & nb22t1, nbtiny, det_exp, det_mant, det_sign,
551 & keep,keep8, myid_nodes, seuil, avoid_delayed,
552 & etatass,
553 & dkeep(1),pivnul_list(1),lpn_list, iwpos
554 & , lrgroups
555 & , perm
556 & )
557 IF (info(1).LT.0) GOTO 635
558 iw( ioldps+4+keep(ixsz) ) = step(inode)
559 ENDIF
560 jobass = etatass
561 IF (jobass.EQ.1) THEN
562#if defined(multicore_profiling)
563 latime = mpi_wtime()
564#endif
565 CALL cmumps_fac_asm_niv1(comm_load, ass_irecv,
566 & n,inode,iw,liw,a,la,
567 & info(1),nd,
568 & fils,frere,dad,maxfrt,root,opass, opeli,
569 & ptrist,ptlust,ptrfac,ptrast,step,pimaster,pamaster,
570 & ptrarw,ptraiw,
571 & itloc, rhs_mumps, nstepsdone, son_level2,
572 & comp, lrlu, iptrlu,
573 & iwpos,iwposcb, posfac, lrlus, keep8(67),
574 & icntl, keep,keep8,dkeep,intarr,keep8(27),dblarr,keep8(26),
575 & nstk_steps, procnode_steps, slavef,
576 & comm_nodes, myid_nodes,
577 & bufr, lbufr, lbufr_bytes, nbfin, ipool, lpool, leaf,
578 & perm,
579 & istep_to_iniv2, tab_pos_in_pere,
580 & jobass,etatass
581 & , lrgroups
582 & )
583#if defined(multicore_profiling)
584 latime = mpi_wtime() - latime
585 gatime = gatime + latime
586 WRITE(*,*)'ASS ',latime
587#endif
588 ENDIF
589 IF (mpa.GT.0)
590 & CALL mumps_print_still_active (myid_nodes, keep,
591 & dble(dkeep(17)),
592 & opeli,
593 & oplast_printed, mpa)
594 IF (info(1).LT.0) GOTO 635
595 130 CONTINUE
596 TYPE = mumps_typenode(procnode_steps(step(inode)),keep(199))
597 IF ( fpere .NE. 0 ) THEN
598 typef = mumps_typenode(procnode_steps(step(fpere)),keep(199))
599 ELSE
600 typef = -9999
601 END IF
602#if defined(multicore_profiling)
603 lstime = mpi_wtime()
604#endif
605 CALL cmumps_fac_stack( comm_load, ass_irecv,
606 & n,inode,TYPE,typef,la,iw,liw,a,
607 & info(1),INFO(2),OPELI,NELVA,NMAXNPIV,
608 & ptrist,ptlust,ptrfac,
609 & ptrast, step, pimaster, pamaster,
610 & ne, posfac,lrlu, lrlus,keep8(67),
611 & iptrlu,icntl,keep,keep8,dkeep,comp,iwpos,iwposcb,
612 & procnode_steps,slavef,fpere,comm_nodes,myid_nodes,
613 & ipool, lpool, leaf,
614 & nstk_steps, perm, bufr, lbufr, lbufr_bytes, nbfin,
615 & root, opass, itloc, rhs_mumps, fils, dad, ptrarw, ptraiw,
616 & intarr, dblarr,
617 & nd, frere, lptrar, nelt, frtptr, frtelt,
618 & istep_to_iniv2, tab_pos_in_pere
619 & , lrgroups
620 & ,dummy_flop_estim_acc
621 & )
622#if defined(multicore_profiling)
623 lstime = mpi_wtime() - lstime
624 gstime = gstime + lstime
625 WRITE(*,*)'STK ',lstime
626#endif
627 IF (mpa.GT.0)
628 & CALL mumps_print_still_active (myid_nodes, keep,
629 & dble(dkeep(17)),
630 & opeli,
631 & oplast_printed, mpa)
632 IF (info(1).LT.0) GOTO 640
633 200 CONTINUE
634 IF ( inode .eq. keep(38) ) THEN
635 WRITE(*,*) 'Error .. in CMUMPS_FAC_PAR: ',
636 & ' inode == keep(38)'
637 CALL MUMPS_ABORT()
638 END IF
639.EQ. IF ( FPERE0 ) THEN
640 NBROOT_TRAITEES = NBROOT_TRAITEES + 1
641.EQ. IF ( NBROOT_TRAITEES NBROOT ) THEN
642.EQ. IF (KEEP(201)1) THEN
643 CALL CMUMPS_OOC_FORCE_WRT_BUF_PANEL(IERR)
644.EQ. ELSE IF ( KEEP(201)2) THEN
645 CALL CMUMPS_FORCE_WRITE_BUF(IERR)
646 ENDIF
647 NBFIN = NBFIN - NBROOT
648.LT. IF ( NBFIN 0 ) THEN
649 WRITE(*,*) ' error 1 in cmumps_fac_par: ',
650 & ' nbfin=', NBFIN
651 CALL MUMPS_ABORT()
652 END IF
653.LT. IF ( NBROOT 0 ) THEN
654 WRITE(*,*) ' error 1 in cmumps_fac_par: ',
655 & ' nbroot=', NBROOT
656 CALL MUMPS_ABORT()
657 END IF
658.GT. IF (SLAVEF1) THEN
659 DUMMY(1) = NBROOT
660 CALL CMUMPS_MCAST2( DUMMY(1), 1, MPI_INTEGER,
661 & MYID_NODES, COMM_NODES, RACINE, SLAVEF, KEEP )
662 END IF
663 ENDIF
664.EQ. IF (NBFIN0)THEN
665 GOTO 640
666 ENDIF
667.NE..AND. ELSEIF ( FPEREKEEP(38)
668 & MUMPS_PROCNODE(PROCNODE_STEPS(STEP(FPERE)),
669.EQ. & KEEP(199)) MYID_NODES ) THEN
670 NSTK_STEPS(STEP(FPERE)) = NSTK_STEPS(STEP(FPERE))-1
671.EQ. IF ( NSTK_STEPS( STEP( FPERE ))0) THEN
672.NE..AND. IF (KEEP(234)0
673 & MUMPS_INSSARBR(PROCNODE_STEPS(STEP(INODE)),KEEP(199)))
674 & THEN
675 STACK_RIGHT_AUTHORIZED = .FALSE.
676 ENDIF
677 CALL CMUMPS_INSERT_POOL_N(N, IPOOL, LPOOL,
678 & PROCNODE_STEPS, SLAVEF, KEEP(199), KEEP(28), KEEP(76),
679 & KEEP(80), KEEP(47), STEP, FPERE )
680.GE. IF (KEEP(47) 3) THEN
681 CALL CMUMPS_LOAD_POOL_UPD_NEW_POOL(
682 & IPOOL, LPOOL,
683 & PROCNODE_STEPS, KEEP,KEEP8, SLAVEF, COMM_LOAD,
684 & MYID_NODES, STEP, N, ND, FILS )
685 ENDIF
686 CALL MUMPS_ESTIM_FLOPS( FPERE, N, PROCNODE_STEPS,KEEP(199),
687 & ND, FILS, FRERE, STEP, PIMASTER, KEEP(28),
688 & KEEP(50), KEEP(253), FLOP1,
689 & IW, LIW, KEEP(IXSZ) )
690.NE. IF (FPEREKEEP(20))
691 & CALL CMUMPS_LOAD_UPDATE(1,.FALSE.,FLOP1,KEEP,KEEP8)
692 ENDIF
693 ENDIF
694 GO TO 20
695 635 CONTINUE
696 CALL CMUMPS_BDC_ERROR( MYID_NODES, SLAVEF, COMM_NODES, KEEP )
697 640 CONTINUE
698 CALL CMUMPS_CANCEL_IRECV( INFO(1),
699 & KEEP,
700 & ASS_IRECV, BUFR, LBUFR,
701 & LBUFR_BYTES,
702 & COMM_NODES,
703 & MYID_NODES, SLAVEF)
704 CALL CMUMPS_CLEAN_PENDING( INFO(1), KEEP,
705 & BUFR, LBUFR,
706 & LBUFR_BYTES,
707 & COMM_NODES, COMM_LOAD, SLAVEF,
708 & .TRUE.,
709 & .TRUE.)
710 CALL MPI_BARRIER( COMM_NODES, IERR )
711.LT. IF (INFO(1) 0) THEN
712 CALL CMUMPS_DM_FREEALLDYNAMICCB( MYID, N, SLAVEF, KEEP, KEEP8,
713 & IW, LIW, IWPOSCB, IWPOS,
714 & STEP, PTRAST, PAMASTER, PROCNODE_STEPS, DAD,
715 & .FALSE. )
716.GT. IF (KEEP(400) 0) THEN
717!$OMP PARALLEL DO SCHEDULE(STATIC,1)
718 DO ITH = 1, KEEP(400)
719 IF (associated(MUMPS_TPS_ARR(ITH)%IW)) THEN
720 CALL CMUMPS_DM_FREEALLDYNAMICCB_I( MYID, N, SLAVEF,
721 & KEEP, KEEP8,
722 & MUMPS_TPS_ARR(ITH)%IW(1), MUMPS_TPS_ARR(ITH)%LIW,
723 & MUMPS_TPS_ARR(ITH)%IWPOSCB, MUMPS_TPS_ARR(ITH)%IWPOS,
724 & STEP, PTRAST, PAMASTER, PROCNODE_STEPS, DAD,
725 & .TRUE. )
726 ENDIF
727 ENDDO
728!$OMP END PARALLEL DO
729 ENDIF
730 ENDIF
731.GE. IF ( INFO(1) 0 ) THEN
732.NE..OR..NE. IF( KEEP(38) 0 KEEP(20)0) THEN
733 MASTER_ROOT = MUMPS_PROCNODE(
734 & PROCNODE_STEPS(STEP(max(KEEP(38),KEEP(20)))),
735 & KEEP(199))
736.EQ. ROOT_OWNER = (MASTER_ROOT MYID_NODES)
737.NE. IF ( KEEP(38) 0 ) THEN
738.EQ. IF (KEEP(60)0) THEN
739 IOLDPS = PTLUST(STEP(KEEP(38)))
740 LOCAL_M = IW(IOLDPS+2+KEEP(IXSZ))
741 LOCAL_N = IW(IOLDPS+1+KEEP(IXSZ))
742 ELSE
743 IOLDPS = -999
744 LOCAL_M = root%SCHUR_MLOC
745 LOCAL_N = root%SCHUR_NLOC
746 ENDIF
747 ITMP8 = int(LOCAL_M,8)*int(LOCAL_N,8)
748 LBUFRX = min(int(root%MBLOCK,8)*int(root%NBLOCK,8),
749 & int(root%TOT_ROOT_SIZE,8)*int(root%TOT_ROOT_SIZE,8) )
750 IS_BUFRX_ALLOCATED = .FALSE.
751.GT. IF ( LRLU LBUFRX ) THEN
752 BUFRX => A(POSFAC:POSFAC+LRLU-1_8)
753 LBUFRX=LRLU
754 ELSE
755 ALLOCATE( BUFRX( LBUFRX ), stat = IERR )
756.gt. IF (IERR0) THEN
757 INFO(1) = -13
758 CALL MUMPS_SET_IERROR(LBUFRX, INFO(2) )
759 IF (LP > 0 )
760 & write(LP,*) ' error allocating, real array ',
761 & 'of size before CMUMPS_FACTO_ROOT', lbufrx
762 CALL mumps_abort()
763 ENDIF
764 is_bufrx_allocated = .true.
765 ENDIF
766 CALL cmumps_facto_root(
767 & mpa, myid_nodes, master_root,
768 & root, n, keep(38),
769 & comm_nodes, iw, liw, iwpos + 1,
770 & a, la, ptrast, ptlust, ptrfac, step,
771 & info(1), keep(50), keep(19),
772 & bufrx(1), lbufrx, keep,keep8, dkeep,
773 & opeli, det_exp, det_mant, det_sign )
774 IF (is_bufrx_allocated) DEALLOCATE ( bufrx )
775 NULLIFY(bufrx)
776 is_bufrx_allocated = .false.
777 IF ( myid_nodes .eq.
778 & mumps_procnode(procnode_steps(step(keep(38))),
779 & keep(199))
780 & ) THEN
781 IF ( info(1) .EQ. -10 .OR. info(1) .EQ. -40 ) THEN
782 ntotpv = ntotpv + info(2)
783 ELSE
784 ntotpv = ntotpv + root%TOT_ROOT_SIZE
785 nmaxnpiv = max(nmaxnpiv,root%TOT_ROOT_SIZE)
786 END IF
787 END IF
788 IF (root%yes.AND.keep(60).EQ.0) THEN
789 IF (keep(252).EQ.0) THEN
790 IF (keep(201).EQ.1) THEN
791 CALL mumps_geti8(lafac, iw(ioldps+xxr))
792 liwfac = iw(ioldps+xxi)
793 typefile = typef_l
794 nextpiv2bewritten = 1
795 monbloc%INODE = keep(38)
796 monbloc%MASTER = .true.
797 monbloc%Typenode = 3
798 monbloc%NROW = local_m
799 monbloc%NCOL = local_n
800 monbloc%NFS = monbloc%NCOL
801 monbloc%Last = .true.
802 monbloc%LastPiv = monbloc%NCOL
803 monbloc%LastPanelWritten_L=-9999
804 monbloc%LastPanelWritten_U=-9999
805 NULLIFY(monbloc%INDICES)
806 strat = strat_write_max
807 monbloc%Last = .true.
808 last_call = .true.
810 & ( strat, typefile,
811 & a(ptrfac(step(keep(38)))),
812 & lafac, monbloc,
813 & nextpiv2bewritten, idummy,
814 & iw(ioldps), liwfac,
815 & myid, keep8(31), ierr,last_call)
816 ELSE IF (keep(201).EQ.2) THEN
817 keep8(31)=keep8(31)+ itmp8
818 CALL cmumps_new_factor(keep(38),ptrfac,
819 & keep,keep8,a,la, itmp8, ierr)
820 IF(ierr.LT.0)THEN
821 WRITE(*,*)myid,
822 & ': Internal error in CMUMPS_NEW_FACTOR'
823 CALL mumps_abort()
824 ENDIF
825 ENDIF
826 ENDIF
827 IF (keep(201).NE.0 .OR. keep(252).NE.0) THEN
828 lrlus = lrlus + itmp8
829 keep8(69) = keep8(69) - itmp8
830 IF (keep(252).NE.0) THEN
831 CALL cmumps_load_mem_update(.false.,.false.,
832 & la-lrlus
833 & ,0_8,-itmp8,
834 & keep,keep8,lrlus)
835 ELSE
836 CALL cmumps_load_mem_update(.false.,.false.,
837 & la-lrlus
838 & ,itmp8,
839 & 0_8,
840 & keep,keep8,lrlus)
841 ENDIF
842 IF (ptrfac(step(keep(38))).EQ.posfac-itmp8) THEN
843 posfac = posfac - itmp8
844 lrlu = lrlu + itmp8
845 ENDIF
846 ELSE
847 CALL cmumps_load_mem_update(.false.,.false.,
848 & la-lrlus
849 & ,itmp8,
850 & 0_8,
851 & keep,keep8,lrlus)
852 ENDIF
853 ENDIF
854 IF (root%yes. and. keep(252) .NE. 0 .AND.
855 & (keep(60).EQ.0 .OR. keep(221).EQ.1)) THEN
856 IF (myid_nodes .EQ. master_root) THEN
857 lrhs_cntr_master_root = root%TOT_ROOT_SIZE*keep(253)
858 ELSE
859 lrhs_cntr_master_root = 1
860 ENDIF
861 ALLOCATE(root%RHS_CNTR_MASTER_ROOT(
862 & lrhs_cntr_master_root), stat=ierr )
863 IF (ierr.gt.0) THEN
864 info(1) = -13
865 info(2) = lrhs_cntr_master_root
866 IF (lp > 0 )
867 & write(lp,*) ' Error allocating, real array ',
868 & 'of size before CMUMPS_FACTO_ROOT',
869 & lrhs_cntr_master_root
870 CALL mumps_abort()
871 ENDIF
872 fwd_local_n_rhs = numroc(keep(253), root%NBLOCK,
873 & root%MYCOL, 0, root%NPCOL)
874 fwd_local_n_rhs = max(1,fwd_local_n_rhs)
875 CALL cmumps_gather_root( myid_nodes,
876 & root%TOT_ROOT_SIZE, keep(253),
877 & root%RHS_CNTR_MASTER_ROOT(1), local_m,
878 & fwd_local_n_rhs, root%MBLOCK, root%NBLOCK,
879 & root%RHS_ROOT(1,1), master_root,
880 & root%NPROW, root%NPCOL, comm_nodes )
881 &
882 ENDIF
883 ELSE
884 IF (keep(19).NE.0) THEN
885 CALL mpi_reduce(keep(109), globk109, 1,
886 & mpi_integer, mpi_sum,
887 & master_root,
888 & comm_nodes, ierr)
889 ENDIF
890 IF (root_owner) THEN
891 iposroot = ptlust(step(keep(20)))
892 nfront = iw(iposroot+keep(ixsz)+3)
893 nfront8 = int(nfront,8)
894 iposrootrowindices=iposroot+6+keep(ixsz)+
895 & iw(iposroot+5+keep(ixsz))
896 ntotpv = ntotpv + nfront
897 nmaxnpiv = max(nmaxnpiv,nfront)
898 END IF
899 IF (root_owner.AND.keep(60).NE.0) THEN
900 itmp8 = nfront8*nfront8
901 IF ( ptrfac(step(keep(20))) .EQ. posfac -
902 & itmp8 ) THEN
903 posfac = posfac - itmp8
904 lrlus = lrlus + itmp8
905 lrlu = lrlus + itmp8
906 keep8(69) = keep8(69) - itmp8
907 CALL cmumps_load_mem_update(.false.,.false.,
908 & la-lrlus,0_8,-itmp8,keep,keep8,lrlus)
909 ENDIF
910 ENDIF
911 END IF
912 IF (info(1).LT.0) GOTO 500
913 END IF
914 END IF
915 500 CONTINUE
916 IF ( keep(38) .NE. 0 ) THEN
917 IF (myid_nodes.EQ.
918 & mumps_procnode(procnode_steps(step(keep(38))),keep(199))
919 & ) THEN
920 maxfrt = max( maxfrt, root%TOT_ROOT_SIZE)
921 END IF
922 END IF
923 RETURN
924 END SUBROUTINE cmumps_fac_par
925 SUBROUTINE cmumps_change_header( HEADER, KEEP253 )
926 INTEGER HEADER( 6 ), KEEP253
927 INTEGER NFRONT, NASS
928 nfront = header(1)
929 IF ( header(2) .ne. 0 ) THEN
930 WRITE(*,*) ' *** CHG_HEADER ERROR 1 :',header(2)
931 CALL mumps_abort()
932 END IF
933 nass = abs( header( 3 ) )
934 IF ( nass .NE. abs( header( 4 ) ) ) THEN
935 WRITE(*,*) ' *** CHG_HEADER ERROR 2 :',header(3:4)
936 CALL mumps_abort()
937 END IF
938 IF ( nass+keep253 .NE. nfront ) THEN
939 WRITE(*,*) ' *** CHG_HEADER ERROR 3 : not root',
940 & nass, keep253, nfront
941 CALL mumps_abort()
942 END IF
943 header( 1 ) = keep253
944 header( 2 ) = 0
945 header( 3 ) = nfront
946 header( 4 ) = nfront-keep253
947 RETURN
948 END SUBROUTINE cmumps_change_header
949 END MODULE cmumps_fac_par_m
#define mumps_abort
Definition VE_Metis.h:25
subroutine cmumps_mcast2(data, ldata, mpitype, root, commw, tag, slavef, keep)
Definition cbcast_int.F:16
subroutine cmumps_last_rtnelind(comm_load, ass_irecv, root, frere, iroot, 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, lptrar, nelt, frtptr, frtelt, istep_to_iniv2, tab_pos_in_pere, lrgroups)
subroutine cmumps_alloc_cb(inplace, min_space_in_place, ssarbr, process_bande, myid, n, keep, keep8, dkeep, iw, liw, a, la, lrlu, iptrlu, iwpos, iwposcb, slavef, procnode_steps, dad, ptrist, ptrast, step, pimaster, pamaster, lreq, lreqcb, node_arg, state_arg, set_header, comp, lrlus, lrlusm, iflag, ierror)
subroutine cmumps_fac_stack(comm_load, ass_irecv, n, inode, type, typef, la, iw, liw, a, iflag, ierror, opeliw, nelvaw, nmaxnpiv, ptrist, ptlust_s, ptrfac, ptrast, step, pimaster, pamaster, ne, posfac, lrlu, lrlus, lrlusm, iptrlu, icntl, keep, keep8, dkeep, comp, iwpos, iwposcb, procnode_steps, slavef, fpere, comm, myid, ipool, lpool, leaf, nstk_s, perm, bufr, lbufr, lbufr_bytes, nbfin, root, opassw, itloc, rhs_mumps, fils, dad, ptrarw, ptraiw, intarr, dblarr, nd, frere, lptrar, nelt, frtptr, frtelt, istep_to_iniv2, tab_pos_in_pere, lrgroups, flop_estim_acc)
recursive subroutine cmumps_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 cmumps_facto_root(mpa, myid, master_of_root, root, n, iroot, comm, iw, liw, ifree, a, la, ptrast, ptlust_s, ptrfac, step, info, ldlt, qr, wk, lwk, keep, keep8, dkeep, opeliw, det_exp, det_mant, det_sign)
subroutine cmumps_extract_pool(n, pool, lpool, procnode, slavef, step, inode, keep, keep8, myid, nd, force_extract_top_sbtr)
subroutine cmumps_root_alloc_static(root, iroot, n, iw, liw, a, la, fils, dad, myid, slavef, procnode_steps, lptrar, nelt, frtptr, frtelt, ptraiw, ptrarw, intarr, dblarr, lrlu, iptrlu, iwpos, iwposcb, ptrist, ptrast, step, pimaster, pamaster, itloc, rhs_mumps, comp, lrlus, iflag, keep, keep8, dkeep, ierror)
subroutine cmumps_gather_root(myid, m, n, aseq, local_m, local_n, mblock, nblock, apar, master_root, nprow, npcol, comm)
subroutine mumps_print_still_active(myid, keep, dkeep17, opeliw, oplast_printed, mpa)
subroutine mpi_reduce(sendbuf, recvbuf, cnt, datatype, op, root, comm, ierr)
Definition mpi.f:120
double precision function mpi_wtime()
Definition mpi.f:561
subroutine cmumps_dm_freealldynamiccb(myid, n, slavef, keep, keep8, iw, liw, iwposcb, iwpos, step, ptrast, pamaster, procnode_steps, dad, atomic_updates)
subroutine cmumps_fac1_ldlt(n, inode, iw, liw, a, la, ioldps, poselt, iflag, ierror, uu, nnegw, npvw, nb22t1w, nbtinyw, det_expw, det_mantw, det_signw, keep, keep8, myid, seuil, avoid_delayed, etatass, dkeep, pivnul_list, lpn_list, iwpos, lrgroups, perm)
subroutine cmumps_fac1_lu(n, inode, iw, liw, a, la, ioldps, poselt, iflag, ierror, uu, noffw, npvw, nbtinyw, det_expw, det_mantw, det_signw, keep, keep8, step, procnode_steps, myid, slavef, seuil, avoid_delayed, etatass, dkeep, pivnul_list, lpn_list, iwpos, lrgroups, perm)
subroutine cmumps_fac2_ldlt(comm_load, ass_irecv, n, inode, fpere, iw, liw, a, la, uu, nnegw, npvw, nb22t2w, nbtinyw, det_expw, det_mantw, det_signw, comm, myid, bufr, lbufr, lbufr_bytes, nbfin, leaf, iflag, ierror, ipool, lpool, slavef, posfac, iwpos, iwposcb, iptrlu, lrlu, lrlus, comp, ptrist, ptrast, ptlust_s, ptrfac, step, pimaster, pamaster, nstk_s, perm, procnode_steps, root, opassw, opeliw, itloc, rhs_mumps, fils, dad, ptrarw, ptraiw, intarr, dblarr, icntl, keep, keep8, nd, frere, lptrar, nelt, frtptr, frtelt, seuil, istep_to_iniv2, tab_pos_in_pere, avoid_delayed, dkeep, pivnul_list, lpn_list, lrgroups)
subroutine cmumps_fac2_lu(comm_load, ass_irecv, n, inode, fpere, iw, liw, a, la, uu, noffw, npvw, nbtinyw, det_expw, det_mantw, det_signw, comm, myid, bufr, lbufr, lbufr_bytes, nbfin, leaf, iflag, ierror, ipool, lpool, slavef, posfac, iwpos, iwposcb, iptrlu, lrlu, lrlus, comp, ptrist, ptrast, ptlust_s, ptrfac, step, pimaster, pamaster, nstk_s, perm, procnode_steps, root, opassw, opeliw, itloc, rhs_mumps, fils, dad, ptrarw, ptraiw, intarr, dblarr, icntl, keep, keep8, nd, frere, lptrar, nelt, frtptr, frtelt, seuil, istep_to_iniv2, tab_pos_in_pere, avoid_delayed, dkeep, pivnul_list, lpn_list, lrgroups)
subroutine cmumps_fac_asm_niv2_elt(comm_load, ass_irecv, nelt, frt_ptr, frt_elt, n, inode, iw, liw, a, la, info, nd, fils, frere, dad, cand, istep_to_iniv2, tab_pos_in_pere, maxfrw, root, opassw, opeliw, ptrist, ptlust, ptrfac, ptrast, step, pimaster, pamaster, ptrarw, nstk_s, ptraiw, itloc, rhs_mumps, nsteps, comp, lrlu, iptrlu, iwpos, iwposcb, posfac, lrlus, icntl, keep, keep8, dkeep, intarr, lintarr, dblarr, ldblarr, procnode_steps, slavef, comm, myid, bufr, lbufr, lbufr_bytes, nbfin, leaf, ipool, lpool, perm, mem_distrib, lrgroups)
subroutine cmumps_fac_asm_niv1_elt(comm_load, ass_irecv, nelt, frt_ptr, frt_elt, n, inode, iw, liw, a, la, info, nd, fils, frere, dad, maxfrw, root, opassw, opeliw, ptrist, ptlust, ptrfac, ptrast, step, pimaster, pamaster, ptrarw, ptraiw, itloc, rhs_mumps, nsteps, son_level2, comp, lrlu, iptrlu, iwpos, iwposcb, posfac, lrlus, lrlusm, icntl, keep, keep8, dkeep, intarr, lintarr, dblarr, ldblarr nstk_s, procnode_steps, slavef, comm, myid, bufr, lbufr, lbufr_bytes, nbfin, ipool, lpool, leaf, perm, istep_to_iniv2, tab_pos_in_pere, lrgroups, mumps_tps_arr, cmumps_tps_arr, l0_omp_mapping)
subroutine cmumps_fac_asm_niv1(comm_load, ass_irecv, n, inode, iw, liw, a, la, info, nd, fils, frere, dad, maxfrw, root, opassw, opeliw, ptrist, ptlust, ptrfac, ptrast, step, pimaster, pamaster, ptrarw, ptraiw, itloc, rhs_mumps, nsteps, son_level2, comp, lrlu, iptrlu, iwpos, iwposcb, posfac, lrlus, lrlusm, icntl, keep, keep8, dkeep, intarr, lintarr, dblarr, ldblarr nstk_s, procnode_steps, slavef, comm, myid, bufr, lbufr, lbufr_bytes, nbfin, ipool, lpool, leaf, perm, istep_to_iniv2, tab_pos_in_pere, jobass, etatass, lrgroups, mumps_tps_arr, cmumps_tps_arr, l0_omp_mapping)
subroutine cmumps_fac_asm_niv2(comm_load, ass_irecv, n, inode, iw, liw, a, la, info, nd, fils, frere, dad, cand, istep_to_iniv2, tab_pos_in_pere, maxfrw, root, opassw, opeliw, ptrist, ptlust, ptrfac, ptrast, step, pimaster, pamaster, ptrarw, nstk_s, ptraiw, itloc, rhs_mumps, nsteps, comp, lrlu, iptrlu, iwpos, iwposcb, posfac, lrlus, icntl, keep, keep8, dkeep, intarr, lintarr, dblarr, ldblarr, procnode_steps, slavef, comm, myid, bufr, lbufr, lbufr_bytes, nbfin, leaf, ipool, lpool, perm, mem_distrib, lrgroups)
subroutine cmumps_fac_par(n, iw, liw, a, la, nstk_steps, nd, fils, step, frere, dad, cand, istep_to_iniv2, tab_pos_in_pere, nstepsdone, opass, opeli, nelva, comp, maxfrt, nmaxnpiv, ntotpv, noffnegpv, nb22t1, nb22t2, nbtiny, det_exp, det_mant, det_sign, ptrist, ptrast, pimaster, pamaster, ptrarw, ptraiw, itloc, rhs_mumps, ipool, lpool, l0_omp_mapping, ll0_omp_mapping, mumps_tps_arr, cmumps_tps_arr, ltps_arr, rinfo, posfac, iwpos, lrlu, iptrlu, lrlus, leaf, nbroot, nbrtot, nbroot_under_l0, uu, icntl, ptlust, ptrfac, info, keep, keep8, procnode_steps, slavef, myid, comm_nodes, myid_nodes, bufr, lbufr, lbufr_bytes, intarr, dblarr, root, perm, nelt, frtptr, frtelt, lptrar, comm_load, ass_irecv, seuil, seuil_ldlt_niv2, mem_distrib, ne, dkeep, pivnul_list, lpn_list, lrgroups)
Definition cfac_par_m.F:31
subroutine cmumps_change_header(header, keep253)
Definition cfac_par_m.F:926
recursive subroutine, public cmumps_load_recv_msgs(comm)
subroutine, public cmumps_load_pool_upd_new_pool(pool, lpool, procnode, keep, keep8, slavef, comm, myid, step, n, nd, fils)
integer, public niv1_flag
Definition cmumps_load.F:86
subroutine, public cmumps_load_mem_update(ssarbr, process_bande_arg, mem_value, new_lu, inc_mem_arg, keep, keep8, lrlus)
subroutine, public cmumps_upper_predict(inode, step, nsteps, procnode, frere, ne, comm, slavef, myid, keep, keep8, n)
integer, save, private comm_nodes
Definition cmumps_load.F:58
subroutine, public cmumps_load_sbtr_upd_new_pool(ok, inode, pool, lpool, myid, slavef, comm, keep, keep8)
subroutine, public cmumps_ooc_io_lu_panel(strat, typefile, afac, lafac, monbloc, lnextpiv2bewritten, unextpiv2bewritten, iw, liwfac, myid, filesize, ierr, last_call)
subroutine, public cmumps_new_factor(inode, ptrfac, keep, keep8, a, la, size, ierr)
Definition cmumps_ooc.F:285
integer function mumps_typenode(procinfo_inode, k199)
integer function mumps_procnode(procinfo_inode, k199)
subroutine mumps_geti8(i8, int_array)