OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
dmumps_fac_par_m Module Reference

Functions/Subroutines

subroutine dmumps_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, dmumps_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)
subroutine dmumps_change_header (header, keep253)

Function/Subroutine Documentation

◆ dmumps_change_header()

subroutine dmumps_fac_par_m::dmumps_change_header ( integer, dimension( 6 ) header,
integer keep253 )

Definition at line 925 of file dfac_par_m.F.

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
#define mumps_abort
Definition VE_Metis.h:25
subroutine header
Definition cblat1.f:91

◆ dmumps_fac_par()

subroutine dmumps_fac_par_m::dmumps_fac_par ( integer n,
integer, dimension(liw) iw,
integer liw,
double precision, dimension(la), target a,
integer(8) la,
integer, dimension(keep(28)) nstk_steps,
integer, dimension(keep(28)) nd,
integer, dimension(n) fils,
integer, dimension(n) step,
integer, dimension(keep(28)) frere,
integer, dimension(keep(28)) dad,
integer, dimension(slavef+1,max(1,keep(56))) cand,
integer, dimension(keep(71)) istep_to_iniv2,
integer, dimension(slavef+2,max(1,keep(56))) tab_pos_in_pere,
integer nstepsdone,
double precision, intent(inout) opass,
double precision, intent(inout) opeli,
integer, intent(inout) nelva,
integer, intent(inout) comp,
integer, intent(inout) maxfrt,
integer, intent(inout) nmaxnpiv,
integer, intent(inout) ntotpv,
integer, intent(inout) noffnegpv,
integer, intent(inout) nb22t1,
integer, intent(inout) nb22t2,
integer, intent(inout) nbtiny,
integer, intent(inout) det_exp,
double precision, intent(inout) det_mant,
integer, intent(inout) det_sign,
integer, dimension(keep(28)) ptrist,
integer(8), dimension(keep(28)) ptrast,
integer, dimension(keep(28)) pimaster,
integer(8), dimension(keep(28)) pamaster,
integer(8), dimension(lptrar), intent(in) ptrarw,
integer(8), dimension(lptrar), intent(in) ptraiw,
integer, dimension(n+keep(253)) itloc,
double precision, dimension(keep(255)) rhs_mumps,
integer, dimension(lpool) ipool,
integer lpool,
integer, dimension( ll0_omp_mapping ), intent(in) l0_omp_mapping,
integer, intent(in) ll0_omp_mapping,
type (mumps_tps_t), dimension( ltps_arr ), target mumps_tps_arr,
type (dmumps_tps_t), dimension( ltps_arr ), target dmumps_tps_arr,
integer, intent(in) ltps_arr,
double precision, dimension(40) rinfo,
integer(8) posfac,
integer iwpos,
integer(8) lrlu,
integer(8) iptrlu,
integer(8) lrlus,
integer leaf,
integer nbroot,
integer nbrtot,
integer, intent(in) nbroot_under_l0,
double precision uu,
integer, dimension(60) icntl,
integer, dimension(keep(28)) ptlust,
integer(8), dimension(keep(28)) ptrfac,
integer, dimension(80) info,
integer, dimension(500) keep,
integer(8), dimension(150) keep8,
integer, dimension(keep(28)) procnode_steps,
integer slavef,
integer myid,
integer comm_nodes,
integer myid_nodes,
integer, dimension( lbufr ) bufr,
integer lbufr,
integer lbufr_bytes,
integer, dimension( keep8(27) ) intarr,
double precision, dimension( keep8(26) ) dblarr,
type (dmumps_root_struc) root,
integer, dimension(n) perm,
integer nelt,
integer, dimension( n+1 ) frtptr,
integer, dimension( nelt ) frtelt,
integer lptrar,
integer comm_load,
integer ass_irecv,
double precision seuil,
double precision seuil_ldlt_niv2,
integer, dimension(0: slavef - 1) mem_distrib,
integer, dimension(keep(28)) ne,
double precision, dimension(230) dkeep,
integer, dimension(lpn_list) pivnul_list,
integer lpn_list,
integer, dimension(n) lrgroups )

Definition at line 16 of file dfac_par_m.F.

31!$ USE OMP_LIB
32 USE dmumps_dynamic_memory_m, ONLY :
34 USE dmumps_load
35 USE dmumps_ooc
42 USE omp_lib
43 USE mumps_tps_m
44 USE dmumps_tps_m
45 USE dmumps_struc_def, ONLY : dmumps_root_struc
46 IMPLICIT NONE
47 TYPE (DMUMPS_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 DOUBLE PRECISION, INTENT(INOUT) :: DET_MANT
55 INTEGER(8) :: LA
56 DOUBLE PRECISION, 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 DOUBLE PRECISION :: 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 DOUBLE PRECISION 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 DOUBLE PRECISION 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 DOUBLE PRECISION DBLARR( KEEP8(26) )
90 INTEGER INTARR( KEEP8(27) )
91 LOGICAL IS_ISOLATED_NODE
92 INTEGER LPN_LIST
93 INTEGER PIVNUL_LIST(LPN_LIST)
94 DOUBLE PRECISION 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 (DMUMPS_TPS_T), TARGET :: DMUMPS_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 DOUBLE PRECISION, 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
133 LOGICAL DMUMPS_POOL_EMPTY
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 dmumps_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 dmumps_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 dmumps_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. dmumps_pool_empty( ipool, lpool) )THEN
257 CALL dmumps_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 dmumps_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 dmumps_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 dmumps_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 dmumps_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 dmumps_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 dmumps_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, dmumps_tps_arr,
423 & l0_omp_mapping
424 & )
425 ELSE
426 jobass = 0
427 CALL dmumps_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, dmumps_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 dmumps_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 dmumps_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 DMUMPS_FAC_PAR", poselt
511 GOTO 635
512 ENDIF
513 CALL dmumps_change_header
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 dmumps_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 dmumps_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 dmumps_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 dmumps_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 DMUMPS_FAC_PAR: ',
636 & ' INODE == KEEP(38)'
637 CALL mumps_abort()
638 END IF
639 IF ( fpere.EQ.0 ) THEN
640 nbroot_traitees = nbroot_traitees + 1
641 IF ( nbroot_traitees .EQ. nbroot ) THEN
642 IF (keep(201).EQ.1) THEN
644 ELSE IF ( keep(201).EQ.2) THEN
645 CALL dmumps_force_write_buf(ierr)
646 ENDIF
647 nbfin = nbfin - nbroot
648 IF ( nbfin .LT. 0 ) THEN
649 WRITE(*,*) ' ERROR 1 in DMUMPS_FAC_PAR: ',
650 & ' NBFIN=', nbfin
651 CALL mumps_abort()
652 END IF
653 IF ( nbroot .LT. 0 ) THEN
654 WRITE(*,*) ' ERROR 1 in DMUMPS_FAC_PAR: ',
655 & ' NBROOT=', nbroot
656 CALL mumps_abort()
657 END IF
658 IF (slavef.GT.1) THEN
659 dummy(1) = nbroot
660 CALL dmumps_mcast2( dummy(1), 1, mpi_integer,
661 & myid_nodes, comm_nodes, racine, slavef, keep )
662 END IF
663 ENDIF
664 IF (nbfin.EQ.0)THEN
665 GOTO 640
666 ENDIF
667 ELSEIF ( fpere.NE.keep(38) .AND.
668 & mumps_procnode(procnode_steps(step(fpere)),
669 & keep(199)) .EQ. myid_nodes ) THEN
670 nstk_steps(step(fpere)) = nstk_steps(step(fpere))-1
671 IF ( nstk_steps( step( fpere )).EQ.0) THEN
672 IF (keep(234).NE.0 .AND.
673 & mumps_inssarbr(procnode_steps(step(inode)),keep(199)))
674 & THEN
675 stack_right_authorized = .false.
676 ENDIF
677 CALL dmumps_insert_pool_n(n, ipool, lpool,
678 & procnode_steps, slavef, keep(199), keep(28), keep(76),
679 & keep(80), keep(47), step, fpere )
680 IF (keep(47) .GE. 3) THEN
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 IF (fpere.NE.keep(20))
691 & CALL dmumps_load_update(1,.false.,flop1,keep,keep8)
692 ENDIF
693 ENDIF
694 GO TO 20
695 635 CONTINUE
696 CALL dmumps_bdc_error( myid_nodes, slavef, comm_nodes, keep )
697 640 CONTINUE
698 CALL dmumps_cancel_irecv( info(1),
699 & keep,
700 & ass_irecv, bufr, lbufr,
701 & lbufr_bytes,
702 & comm_nodes,
703 & myid_nodes, slavef)
704 CALL dmumps_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 IF (info(1) .LT. 0) THEN
712 CALL dmumps_dm_freealldynamiccb( myid, n, slavef, keep, keep8,
713 & iw, liw, iwposcb, iwpos,
714 & step, ptrast, pamaster, procnode_steps, dad,
715 & .false. )
716 IF (keep(400) .GT. 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 dmumps_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 IF ( info(1) .GE. 0 ) THEN
732 IF( keep(38) .NE. 0 .OR. keep(20).NE.0) THEN
733 master_root = mumps_procnode(
734 & procnode_steps(step(max(keep(38),keep(20)))),
735 & keep(199))
736 root_owner = (master_root .EQ. myid_nodes)
737 IF ( keep(38) .NE. 0 ) THEN
738 IF (keep(60).EQ.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 IF ( lrlu .GT. lbufrx ) THEN
752 bufrx => a(posfac:posfac+lrlu-1_8)
753 lbufrx=lrlu
754 ELSE
755 ALLOCATE( bufrx( lbufrx ), stat = ierr )
756 IF (ierr.gt.0) 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 DMUMPS_FACTO_ROOT', lbufrx
762 CALL mumps_abort()
763 ENDIF
764 is_bufrx_allocated = .true.
765 ENDIF
766 CALL dmumps_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 dmumps_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 DMUMPS_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 dmumps_load_mem_update(.false.,.false.,
832 & la-lrlus
833 & ,0_8,-itmp8,
834 & keep,keep8,lrlus)
835 ELSE
836 CALL dmumps_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 dmumps_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 DMUMPS_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 dmumps_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 dmumps_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
subroutine dmumps_mcast2(data, ldata, mpitype, root, commw, tag, slavef, keep)
Definition dbcast_int.F:16
subroutine dmumps_bdc_error(myid, slavef, comm, keep)
Definition dbcast_int.F:38
subroutine dmumps_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 dmumps_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 dmumps_dm_freealldynamiccb_i(myid, n, slavef, keep, keep8, iw, liw, iwposcb, iwpos, step, ptrast, pamaster, procnode_steps, dad, atomic_updates)
subroutine dmumps_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)
subroutine dmumps_clean_pending(info1, keep, bufr, lbufr, lbufr_bytes, comm_nodes, comm_load, slavef, clean_comm_nodes, clean_comm_load)
subroutine dmumps_cancel_irecv(info1, keep, ass_irecv, bufr, lbufr, lbufr_bytes, comm, myid, slavef)
recursive subroutine dmumps_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 dmumps_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)
logical function dmumps_pool_empty(pool, lpool)
subroutine dmumps_insert_pool_n(n, pool, lpool, procnode, slavef, keep199, k28, k76, k80, k47, step, inode)
subroutine dmumps_extract_pool(n, pool, lpool, procnode, slavef, step, inode, keep, keep8, myid, nd, force_extract_top_sbtr)
subroutine dmumps_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 dmumps_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 mumps_estim_flops(inode, n, procnode_steps, keep199, nd, fils, frere_steps, step, pimaster, keep28, keep50, keep253, flop1, iw, liw, xsize)
Definition estim_flops.F:20
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
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 mpi_barrier(comm, ierr)
Definition mpi.f:188
integer function numroc(n, nb, iproc, isrcproc, nprocs)
Definition mpi.f:786
subroutine dmumps_dm_freealldynamiccb(myid, n, slavef, keep, keep8, iw, liw, iwposcb, iwpos, step, ptrast, pamaster, procnode_steps, dad, atomic_updates)
subroutine dmumps_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 dmumps_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 dmumps_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 dmumps_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 dmumps_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, dmumps_tps_arr, l0_omp_mapping)
subroutine dmumps_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 dmumps_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, dmumps_tps_arr, l0_omp_mapping)
subroutine dmumps_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, public dmumps_load_pool_upd_new_pool(pool, lpool, procnode, keep, keep8, slavef, comm, myid, step, n, nd, fils)
subroutine, public dmumps_load_mem_update(ssarbr, process_bande_arg, mem_value, new_lu, inc_mem_arg, keep, keep8, lrlus)
subroutine, public dmumps_upper_predict(inode, step, nsteps, procnode, frere, ne, comm, slavef, myid, keep, keep8, n)
recursive subroutine, public dmumps_load_recv_msgs(comm)
integer, save, private myid
Definition dmumps_load.F:57
integer, save, private comm_nodes
Definition dmumps_load.F:58
subroutine, public dmumps_load_update(check_flops, process_bande, inc_load, keep, keep8)
integer, public niv1_flag
Definition dmumps_load.F:86
subroutine, public dmumps_load_sbtr_upd_new_pool(ok, inode, pool, lpool, myid, slavef, comm, keep, keep8)
subroutine, public dmumps_ooc_io_lu_panel(strat, typefile, afac, lafac, monbloc, lnextpiv2bewritten, unextpiv2bewritten, iw, liwfac, myid, filesize, ierr, last_call)
subroutine dmumps_ooc_force_wrt_buf_panel(ierr)
subroutine, public dmumps_new_factor(inode, ptrfac, keep, keep8, a, la, size, ierr)
Definition dmumps_ooc.F:285
subroutine dmumps_force_write_buf(ierr)
int comp(int a, int b)
logical function mumps_rootssarbr(procinfo_inode, k199)
logical function mumps_inssarbr(procinfo_inode, k199)
integer function mumps_typenode(procinfo_inode, k199)
integer function mumps_procnode(procinfo_inode, k199)
subroutine mumps_set_ierror(size8, ierror)
subroutine mumps_geti8(i8, int_array)