23 & FILS,STEP, FRERE, DAD, ISTEP_TO_INIV2, TAB_POS_IN_PERE,
24 & PTRIST, PTRAST, PIMASTER, PAMASTER, PTRARW, PTRAIW, ITLOC,
25 & RHS_MUMPS, RINFO, NBROOT, NBRTOT, NBROOT_UNDER_L0, UU, ICNTL,
26 & PTLUST_S, PTRFAC, INFO, KEEP, KEEP8, PROCNODE_STEPS,SLAVEF,
27 & 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,
30 & MEM_DISTRIB, NE, DKEEP,PIVNUL_LIST,LPN_LIST,
31 & LPOOL_B_L0_OMP, IPOOL_B_L0_OMP,
32 & L_VIRT_L0_OMP, VIRT_L0_OMP, VIRT_L0_OMP_MAPPING,
33 & L_PHYS_L0_OMP, PHYS_L0_OMP, PERM_L0_OMP, PTR_LEAFS_L0_OMP,
34 & L0_OMP_MAPPING, LL0_OMP_MAPPING, THREAD_LA,
35 & MUMPS_TPS_ARR, ZMUMPS_TPS_ARR,
36 & NSTEPSW, OPASSW, OPELIW, NELVAW, COMP,
37 & MAXFRW, NMAXNPIVW, NPVW, NOFFNEGW,
38 & NB22T1W, NBTINYW, DET_EXPW, DET_MANTW, DET_SIGNW,
39 & LRGROUPS, L0_OMP_FACTORS, LL0_OMP_FACTORS,
40 & I4_L0_OMP, NBSTATS_I4, NBCOLS_I4,
41 & I8_L0_OMP, NBSTATS_I8, NBCOLS_I8 )
53 include
'mumps_tags.h'
54 include
'mumps_headers.h'
55 TYPE (ZMUMPS_ROOT_STRUC) :: root
58 INTEGER SLAVEF, COMM_NODES, MYID_NODES
59 INTEGER,
DIMENSION(0: SLAVEF - 1) :: MEM_DISTRIB
60 INTEGER KEEP(500), ICNTL(60)
62 INTEGER(8),
INTENT(IN) :: THREAD_LA
63 INTEGER PROCNODE_STEPS(KEEP(28))
64 INTEGER ITLOC(N+KEEP(253))
65 COMPLEX(kind=8) :: RHS_MUMPS(KEEP(255))
66 INTEGER NSTK_STEPS(KEEP(28))
67 INTEGER(8),
INTENT(IN) :: (LPTRAR), PTRAIW(LPTRAR)
69 INTEGER FILS(N),PTRIST(KEEP(28))
70 INTEGER STEP(N), FRERE((28)), DAD(KEEP(28))
71 INTEGER PIMASTER(KEEP(28))
72 INTEGER PTLUST_S(KEEP(28)), PERM(N)
73 INTEGER ISTEP_TO_INIV2(KEEP(71)),
74 & tab_pos_in_pere(slavef+2,
max(1,keep(56)))
76 DOUBLE PRECISION RINFO(40)
77 INTEGER(8) :: PAMASTER(KEEP(28)), PTRAST(KEEP(28))
78 INTEGER(8) :: PTRFAC(KEEP(28))
81 INTEGER,
intent(out) :: NBROOT_UNDER_L0
82 INTEGER COMM_LOAD, ASS_IRECV
83 DOUBLE PRECISION UU, SEUIL, SEUIL_LDLT_NIV2
85 INTEGER FRTPTR( N+1 ), FRTELT( NELT )
86 INTEGER LBUFR, LBUFR_BYTES
88 COMPLEX(kind=8) DBLARR( KEEP8(26) )
89 INTEGER INTARR( KEEP8(27) )
91 INTEGER PIVNUL_LIST(LPN_LIST)
92 DOUBLE PRECISION DKEEP(230)
93 DOUBLE PRECISION :: OPASSW, OPELIW
95 INTEGER,
INTENT ( IN ) :: LPOOL_B_L0_OMP
96 INTEGER,
INTENT ( IN ) :: IPOOL_B_L0_OMP
98 INTEGER,
INTENT ( IN ) :: L_PHYS_L0_OMP
99 INTEGER,
INTENT ( IN ) :: PHYS_L0_OMP( L_PHYS_L0_OMP )
100 INTEGER,
INTENT ( IN ) :: L_VIRT_L0_OMP
101 INTEGER,
INTENT ( IN ) :: VIRT_L0_OMP( L_VIRT_L0_OMP )
102 INTEGER,
INTENT ( IN ) :: VIRT_L0_OMP_MAPPING( L_VIRT_L0_OMP )
103 INTEGER,
INTENT ( IN ) :: PERM_L0_OMP( L_PHYS_L0_OMP )
104 INTEGER,
INTENT ( IN ) :: PTR_LEAFS_L0_OMP( L_PHYS_L0_OMP + 1)
105 INTEGER,
INTENT ( IN ) :: LL0_OMP_MAPPING
106 INTEGER,
INTENT ( OUT ) :: L0_OMP_MAPPING( LL0_OMP_MAPPING )
107 TYPE (MUMPS_TPS_T),
DIMENSION(:) ::
108 TYPE (ZMUMPS_TPS_T),
DIMENSION(:) :: ZMUMPS_TPS_ARR
109 INTEGER,
INTENT ( IN ) :: LL0_OMP_FACTORS
110 TYPE (ZMUMPS_L0OMPFAC_T),
INTENT(INOUT) ::
111 & l0_omp_factors(ll0_omp_factors)
112 INTEGER,
INTENT (IN) :: , NBSTATS_I8
113 INTEGER,
INTENT (IN) :: NBCOLS_I4, NBCOLS_I8
114 INTEGER,
INTENT (IN) :: I4_L0_OMP(NBSTATS_I4, NBCOLS_I4)
115 INTEGER(8),
INTENT (IN) :: I8_L0_OMP(NBSTATS_I8, NBCOLS_I8)
116 EXTERNAL MUMPS_TYPENODE, MUMPS_PROCNODE
117 INTEGER MUMPS_TYPENODE, MUMPS_PROCNODE
118 LOGICAL MUMPS_INSSARBR,MUMPS_ROOTSSARBR
119 EXTERNAL mumps_inssarbr,mumps_rootssarbr
120 LOGICAL ZMUMPS_POOL_EMPTY
124 INTEGER :: MYTHREAD_ID, ITH
125 INTEGER :: THREAD_ID_P
126 DOUBLE PRECISION,
PARAMETER :: DZERO = 0.0d0, done = 1.0d0
131 LOGICAL AVOID_DELAYED
132 INTEGER NBROOT_PROCESSED
133 INTEGER MAXFRW, NPVW, NMAXNPIVW, NOFFNEGW, NELVAW, COMP
134 INTEGER :: NB22T1W, NBTINYW, , DET_SIGNW
135 COMPLEX(kind=8) :: DET_MANTW
136 DOUBLE PRECISION FLOP_ESTIM_ACC
139 INTEGER LIWFAC, STRAT, TYPEFile, NextPiv2beWritten
143 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IPOOL_P
144 INTEGER(8) :: TO_ALLOCATE
145 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ID
146 INTEGER(8),
DIMENSION(:),
ALLOCATABLE :: VAL
147 INTEGER(8),
ALLOCATABLE,
DIMENSION(:) :: STATE, SIZE_COPIED
148 INTEGER :: NbWaitMem, NbFinished, NbOnGoingCopies, NbUnderL0
149 INTEGER(8) :: KEEP8_77_SAVE
150 DOUBLE PRECISION :: GTIME
151 INTEGER(8) :: MEMDISPO_UNDERL0, MEMDISPO_PERTHREAD
153 INTEGER :: VIRTUAL_TASK, PHYSICAL_TASK
155 INTEGER :: I, INFO_P(2), allocok
172 flop_estim_acc = dzero
177 det_mantw =
cmplx(1.0d0,0.0d0, kind=kind(1.0d0))
179 DO ith = 1, keep(400)
180 NULLIFY(mumps_tps_arr(ith)%IW)
181 NULLIFY(mumps_tps_arr(ith)%ITLOC)
182 NULLIFY(zmumps_tps_arr(ith)%A)
184 & mumps_tps_arr(ith)%LA,
185 & mumps_tps_arr(ith)%LIW, blr_strat,
187 & i4_l0_omp(1,ith), nbstats_i4,
188 & i8_l0_omp(1,ith), nbstats_i8)
190 IF (keep8(4) .NE. 0_8)
THEN
192 & mumps_tps_arr, keep(400),keep8, keep,
193 & n, blr_strat, lpool_b_l0_omp,
194 & i8_l0_omp, nbstats_i8,
197 memdispo_underl0 =
max(memdispo_underl0/2_8,0_8)
198 keep8(77) = keep8(77) + memdispo_underl0
199 memdispo_perthread = 0_8
200 IF (memdispo_underl0.GT.0)
THEN
201 memdispo_perthread = memdispo_underl0/(int(keep(400),8))
203 DO ith = 1, keep(400)
204 mumps_tps_arr(ith)%LA = mumps_tps_arr(ith)%LA +
208 DO ith = 1, keep(400)
209 mumps_tps_arr(ith)%LRLU = mumps_tps_arr(ith)%LA
210 mumps_tps_arr(ith)%LRLUS = mumps_tps_arr(ith)%LA
211 mumps_tps_arr(ith)%LRLUSM = mumps_tps_arr(ith)%LA
212 mumps_tps_arr(ith)%IPTRLU = mumps_tps_arr(ith)%LA
213 mumps_tps_arr(ith)%POSFAC = 1_8
214 mumps_tps_arr(ith)%IWPOS = 1
215 mumps_tps_arr(ith)%IWPOSCB = mumps_tps_arr(ith)%LIW
217 IF (keep(406) .EQ. 2 )
THEN
218 ALLOCATE(state(keep(400)), size_copied(keep(400)), stat=allocok)
219 IF (allocok .GT. 0 )
THEN
220 WRITE(*,*)
"Problem allocating STATE/SIZE_COPIED", keep(400)
224 & nbwaitmem, nbfinished, nbongoingcopies, nbunderl0,
243 lpool_p = lpool_b_l0_omp
246 avoid_delayed = .false.
255 & info_p(1), info_p(2) )
256 IF (info_p(1) .LT. 0)
GOTO 700
257 ALLOCATE ( zmumps_tps_arr(thread_id_p)%A(
258 &
max(1_8,mumps_tps_arr(thread_id_p)%LA) ),
260 IF (allocok.GT.0)
THEN
267 & mumps_tps_arr(thread_id_p)%LA,
269 & keep8, info_p(1), info_p(2),
271 IF (info_p(1) .LT. 0)
THEN
276 & ((int(mumps_tps_arr(thread_id_p)%LIW,8) * int(keep(34),8 )) /
278 & ((int(lpool_p,8) * int(keep(34),8 )) / int(keep(35),8 ))+
279 & ((int(n+keep(253),8) * int(keep(34),8 )) / int(keep(35),8 ))
281 & keep8, info_p(1), info_p(2) )
282 IF ( info_p(1) .LT. 0 )
GOTO 700
283 ALLOCATE ( mumps_tps_arr(thread_id_p)%IW(
284 & mumps_tps_arr(thread_id_p)%LIW ),
285 & ipool_p( lpool_p ),
286 & mumps_tps_arr(thread_id_p)%ITLOC ( n + keep(253) ),
288 IF ( allocok .GT. 0 )
THEN
290 info_p(2) = mumps_tps_arr(thread_id_p)%LIW +
291 & lpool_p + n+keep(253)
295 & keep(405).EQ.1, keep8,
296 & info_p(1), info_p(2), .true., .false. )
297 IF (info_p(1) .LT. 0)
THEN
302 & .false., .false., myid_nodes, n, keep, keep8, dkeep,
303 & mumps_tps_arr(thread_id_p)%IW(1),
304 & mumps_tps_arr(thread_id_p)%LIW,
305 & zmumps_tps_arr(thread_id_p)%A(1),
306 & mumps_tps_arr(thread_id_p)%LA,
307 & mumps_tps_arr(thread_id_p)%LRLU,
308 & mumps_tps_arr(thread_id_p)%IPTRLU,
309 & mumps_tps_arr(thread_id_p)%IWPOS,
310 & mumps_tps_arr(thread_id_p)%IWPOSCB,
311 & slavef, procnode_steps, dad,
312 & ptrist, ptrast, step, pimaster,
313 & pamaster, keep(ixsz), 0_8, -444, -444, .true.,
314 & comp, mumps_tps_arr(thread_id_p)%LRLUS,
315 & mumps_tps_arr(thread_id_p)%LRLUSM,
316 & info_p(1), info_p(2)
320 mumps_tps_arr(thread_id_p)%ITLOC = 0
322 virtual_task = virtual_task + 1
323 IF ( virtual_task .LT. l_virt_l0_omp )
THEN
324 IF ( virt_l0_omp_mapping( virtual_task ) .EQ. thread_id_p )
THEN
326 & virt_l0_omp( virtual_task ),
327 & virt_l0_omp( virtual_task + 1 ) - 1
328 DO i = ptr_leafs_l0_omp( perm_l0_omp( physical_task )+1 ) + 1,
329 & ptr_leafs_l0_omp( perm_l0_omp( physical_task ) )
330 IF (ipool_b_l0_omp(i) .GT. 0)
THEN
333 & procnode_steps, slavef, keep(199), keep(28), 3, 0, 1, step,
334 & ipool_b_l0_omp(i) )
338 & .NOT. zmumps_pool_empty( ipool_p(1), lpool_p )
339 & .AND. info_p(1) .GE. 0 )
341 & procnode_steps, slavef, step, inode, keep
344 l0_omp_mapping( step( inode ) ) = thread_id_p
345 ifath = dad( step( inode ) )
347 IF ( ifath .NE. 0 )
THEN
353 & inode,
TYPE, typef, mumps_tps_arr(thread_id_p)%LA, MUMPS_TPS_ARR
354 & (thread_id_p)%IW(1), mumps_tps_arr(thread_id_p)%LIW,
355 & zmumps_tps_arr(thread_id_p)%A(1), maxfrw, noffnegw, npvw,
356 & nb22t1w, nbtinyw, det_expw, det_mantw, det_signw, info_p, uu,
357 & seuil, seuil_ldlt_niv2, opeliw, nelvaw, nmaxnpivw, nstepsw,
358 & ptrist, ptlust_s, ptrfac, ptrast, step, pimaster, pamaster,
359 & ne, mumps_tps_arr(thread_id_p)%POSFAC,
360 & mumps_tps_arr(thread_id_p)%LRLU,
361 & mumps_tps_arr(thread_id_p)%LRLUS, mumps_tps_arr(thread_id_p)%
362 % LRLUSM, mumps_tps_arr(thread_id_p)%IPTRLU, icntl, keep, keep8,
363 & dkeep, pivnul_list, lpn_list, comp, mumps_tps_arr(thread_id_p)%
364 & iwpos, mumps_tps_arr(thread_id_p)%IWPOSCB, procnode_steps,
365 & slavef, ifath, comm_nodes, myid_nodes, ipool_p, lpool_p, leaf,
366 & perm, nstk_steps, bufr, lbufr, lbufr_bytes,
367 & nbfin, root, opassw, mumps_tps_arr
368 & rhs_mumps, fils, ptrarw
369 & lptrar, nelt, frtptr, frtelt, istep_to_iniv2, tab_pos_in_pere,
370 & lrgroups, flop_estim_acc )
371 IF (info_p(1) .LT. 0)
THEN
374 IF ( ifath .NE. 0 )
THEN
375 IF ( phys_l0_omp( perm_l0_omp( physical_task ) )
377 nstk_steps( step( ifath ) ) =
378 & nstk_steps( step( ifath ) ) - 1
379 IF ( nstk_steps( step( ifath ) ) .EQ. 0 )
THEN
385 nstk_steps( step( ifath ) ) =
386 & nstk_steps( step( ifath ) ) - 1
390 nbroot_processed = nbroot_processed + 1
398 IF (
associated(mumps_tps_arr(thread_id_p)%ITLOC))
THEN
399 DEALLOCATE(mumps_tps_arr(thread_id_p)%ITLOC)
400 NULLIFY(mumps_tps_arr(thread_id_p)%ITLOC)
402 & -(int(n+keep(253),8) * int(keep(34),8 )) / int(keep(35),8),
403 & keep(405).EQ.1, keep8,
404 & info_p(1), info_p(2), .true., .false. )
406 IF (
allocated(ipool_p))
THEN
409 & -(int(lpool_p,8) * int(keep(34),8 )) / int(keep(35),8),
410 & keep(405).EQ.1, keep8,
411 & info_p(1), info_p(2), .true., .false. )
413 IF ( keep(406) .EQ. 2)
THEN
415 & mumps_tps_arr, zmumps_tps_arr,
416 & l0_omp_factors, ll0_omp_factors,
417 & state, size_copied,
418 & nbwaitmem, nbfinished, nbongoingcopies, nbunderl0,
419 & myid_nodes, n, slavef,
420 & step, ptrast, pamaster, procnode_steps, dad,
421 & keep, keep8, info_p
424 IF ((keep(407) .EQ. 1) .OR. (keep(406) .EQ.1) )
THEN
425 IF (info_p(1) .GE. 0)
THEN
430 & myid_nodes, n, slavef, keep, keep8,
431 & mumps_tps_arr(thread_id_p)%IW(1),
432 & mumps_tps_arr(thread_id_p)%LIW,
433 & mumps_tps_arr(thread_id_p)%IWPOSCB,
434 & mumps_tps_arr(thread_id_p)%IWPOS,
435 & zmumps_tps_arr(thread_id_p)%A(1),
436 & mumps_tps_arr(thread_id_p)%LA,
437 & mumps_tps_arr(thread_id_p)%LRLU,
438 & mumps_tps_arr(thread_id_p)%IPTRLU,
439 & mumps_tps_arr(thread_id_p)%LRLUS,
440 & step, ptrast, pamaster, procnode_steps, dad,
441 & info_p(1), info_p(2) )
444 IF (keep(406) .EQ.1)
THEN
445 IF (info_p(1) .GE.0 )
THEN
446 to_allocate =
max(mumps_tps_arr(thread_id_p)%POSFAC-1,1_8)
448 & keep8, info_p(1), info_p(2) )
450 IF (info_p(1) .GE.0 )
THEN
451 ALLOCATE(l0_omp_factors(thread_id_p)%A(to_allocate),
453 IF (allocok .GT. 0)
THEN
456 l0_omp_factors(thread_id_p)%LA = 0_8
458 l0_omp_factors(thread_id_p)%LA =
459 & mumps_tps_arr(thread_id_p)%POSFAC-1_8
461 & l0_omp_factors(thread_id_p)%LA, keep(405).EQ.1, keep8
462 & info_p(1), info_p(2), .true., .false. )
465 IF (info_p(1) .GE.0 )
THEN
466 DO i8 = 1_8, mumps_tps_arr(thread_id_p)%POSFAC-1_8
467 l0_omp_factors(thread_id_p)%A(i8) =
468 & zmumps_tps_arr(thread_id_p)%A(i8)
471 IF (
associated(zmumps_tps_arr(thread_id_p)%A))
THEN
472 DEALLOCATE(zmumps_tps_arr(thread_id_p)%A)
473 NULLIFY(zmumps_tps_arr(thread_id_p)%A)
475 & -mumps_tps_arr(thread_id_p)%LA,
478 & info_p(1), info_p(2)
480 IF (info_p(1) .GE. 0)
THEN
482 keep8(69) = keep8(69) - l0_omp_factors(thread_id_p)%LA
488 IF (info_p(1) .LT.0)
THEN
493 ELSE IF (info_p(1) .GE. 0)
THEN
495 IF (info(1) .EQ. 0)
THEN
501#if defined(WORKAROUNDINTELILP64OPENMPLIMITATION)
507 IF (info(1) .LT. 0)
THEN
508 IF (icntl(1) .GT. 0 .AND. icntl(4) .GE.1 )
THEN
509 WRITE(icntl(1),
'(A,I6,I16,A,I5,A)')
510 &
"** ERROR DURING L0_OMP: INFO(1:2)=",
511 & info(1), info(2),
" (MPI worker ", myid_nodes,
")"
514 IF ( keep(406) .EQ. 0 )
THEN
515 ALLOCATE(id(keep(400)), val(keep(400)),
517 IF ( allocok .GT. 0 )
THEN
522 DO mythread_id = 1, keep(400)
523 val(mythread_id) = mumps_tps_arr( mythread_id )%POSFAC-1_8
524 id(mythread_id) = mythread_id
528 mythread_id = id(ith)
529 IF ((keep(407).NE.1) .AND. (keep(406).EQ.0))
THEN
530 IF (info(1) .GE. 0)
THEN
535 & myid_nodes, n, slavef, keep, keep8,
536 & mumps_tps_arr(mythread_id)%IW(1),
537 & mumps_tps_arr(mythread_id)%LIW,
538 & mumps_tps_arr(mythread_id)%IWPOSCB,
539 & mumps_tps_arr(mythread_id)%IWPOS,
540 & zmumps_tps_arr(mythread_id)%A(1),
541 & mumps_tps_arr(mythread_id)%LA,
542 & mumps_tps_arr(mythread_id)%LRLU,
543 & mumps_tps_arr(mythread_id)%IPTRLU,
544 & mumps_tps_arr(mythread_id)%LRLUS,
545 & step, ptrast, pamaster, procnode_steps, dad,
549 IF (keep(406).EQ.0)
THEN
550 IF (info(1) .GE. 0 )
THEN
551 to_allocate =
max(mumps_tps_arr(mythread_id)%POSFAC-1,1_8)
553 & keep8, info(1), info(2) )
555 IF (info(1) .GE.0 )
THEN
556 ALLOCATE(l0_omp_factors(mythread_id)%A(to_allocate),
558 IF (allocok .GT. 0)
THEN
561 l0_omp_factors(mythread_id)%LA = 0_8
563 l0_omp_factors(mythread_id)%LA =
564 & mumps_tps_arr(mythread_id)%POSFAC-1_8
566 & l0_omp_factors(mythread_id)%LA,
567 & keep(405).EQ.1, keep8,
568 & info(1), info(2), .true., .false. )
571 IF (info(1) .GE. 0)
THEN
581 DO i8 = 1_8, mumps_tps_arr(mythread_id)%POSFAC-1_8
582 l0_omp_factors(mythread_id)%A(i8) =
583 & zmumps_tps_arr(mythread_id)%A(i8)
587 IF (
associated(zmumps_tps_arr(mythread_id)%A))
THEN
588 DEALLOCATE(zmumps_tps_arr(mythread_id)%A)
589 NULLIFY(zmumps_tps_arr(mythread_id)%A)
591 & -mumps_tps_arr(mythread_id)%LA,
592 & keep(405).EQ.1, keep8,
595 IF (info(1).GE.0)
THEN
596 keep8(69) = keep8(69) - l0_omp_factors(mythread_id)%LA
601 IF (
ALLOCATED(id))
DEALLOCATE(id)
602 IF (
ALLOCATED(val))
DEALLOCATE(val)
607 keep8(64) = keep8(64) + mumps_tps_arr(i)%POSFAC - 1_8
611 keep8(62) = keep8(62) + mumps_tps_arr(i)%LRLUSM
613 nbroot_under_l0 = nbroot_processed
subroutine zmumps_fac_l0_omp(n, liw, nstk_steps, nd, fils, step, frere, dad, istep_to_iniv2, tab_pos_in_pere, ptrist, ptrast, pimaster, pamaster, ptrarw, ptraiw, itloc, rhs_mumps, rinfo, nbroot, nbrtot, nbroot_under_l0, uu, icntl, ptlust_s, ptrfac, info, keep, keep8, procnode_steps, slavef, 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, lpool_b_l0_omp, ipool_b_l0_omp, l_virt_l0_omp, virt_l0_omp, virt_l0_omp_mapping, l_phys_l0_omp, phys_l0_omp, perm_l0_omp, ptr_leafs_l0_omp, l0_omp_mapping, ll0_omp_mapping, thread_la, mumps_tps_arr, zmumps_tps_arr, nstepsw, opassw, opeliw, nelvaw, comp, maxfrw, nmaxnpivw, npvw, noffnegw, nb22t1w, nbtinyw, det_expw, det_mantw, det_signw, lrgroups, l0_omp_factors, ll0_omp_factors, i4_l0_omp, nbstats_i4, nbcols_i4, i8_l0_omp, nbstats_i8, nbcols_i8)
recursive subroutine zmumps_process_front_niv1(comm_load, ass_irecv, n, inode, type, typef, la, iw, liw, a, maxfrw, noffnegw, npvw, nb22t1w, nbtinyw, det_expw, det_mantw, det_signw, info_p, uu, seuil, seuil_ldlt_niv2, opeliw, nelvaw, nmaxnpivw, nstepsw, ptrist, ptlust_s, ptrfac, ptrast, step, pimaster, pamaster, ne, posfac, lrlu, lrlus, lrlusm, iptrlu, icntl, keep, keep8, dkeep, pivnul_list, lpn_list, comp, iwpos, iwposcb, procnode_steps, slavef, ifath, comm_nodes, myid_nodes, ipool_p, lpool_p, leaf, perm, nstk_steps, bufr, lbufr, lbufr_bytes, nbfin, root, opassw, itloc, rhs_mumps, fils, ptrarw, ptraiw, intarr, dblarr, nd, frere, dad, lptrar, nelt, frtptr, frtelt, istep_to_iniv2, tab_pos_in_pere, lrgroups, flop_estim_acc)