40#if defined(BLR_MT)
41
42#endif
43 IMPLICIT NONE
44 TYPE (DMUMPS_ROOT_STRUC) :: root
45 INTEGER ICNTL( 60 ), KEEP( 500 )
46 INTEGER(8) KEEP8(150)
47 DOUBLE PRECISION DKEEP(230)
48 INTEGER LBUFR, LBUFR_BYTES
49 INTEGER COMM_LOAD, ASS_IRECV
50 INTEGER BUFR( LBUFR )
51 INTEGER N, SLAVEF, IWPOS, IWPOSCB, LIW
52 INTEGER(8) :: , IPTRLU, LRLU, LRLUS, LA
53 INTEGER(8) :: PTRAST(KEEP(28))
54 INTEGER(8) :: PAMASTER((28))
55 INTEGER(8) :: PTRFAC(KEEP(28))
56 INTEGER COMP
57 INTEGER IFLAG, IERROR, NBFIN, MSGSOU
58 INTEGER PROCNODE_STEPS(KEEP(28)), PTRIST(KEEP(28)),
59 & NSTK_S(KEEP(28))
60 INTEGER PERM(N), STEP(N), PIMASTER(KEEP(28))
61 INTEGER IW( LIW )
62 DOUBLE PRECISION A( LA )
63 INTEGER, intent(in) :: LRGROUPS(N)
64 INTEGER NELT, LPTRAR
65 INTEGER FRTPTR( N + 1 ), FRTELT( NELT )
66 INTEGER(8), INTENT(IN) :: PTRAIW( LPTRAR ), PTRARW( LPTRAR )
67 INTEGER ISTEP_TO_INIV2(KEEP(71)),
68 & TAB_POS_IN_PERE(SLAVEF+2,max(1,KEEP(56)))
69 INTEGER COMM, MYID
70 INTEGER PTLUST_S(KEEP(28))
71 INTEGER ITLOC( N + KEEP(253)), FILS( N ), DAD( KEEP(28) )
72 DOUBLE PRECISION :: RHS_MUMPS(KEEP(255))
73 INTEGER ND( KEEP(28) ), FRERE_STEPS( KEEP(28) )
74 DOUBLE PRECISION OPASSW, OPELIW
75 DOUBLE PRECISION FLOP1
76 DOUBLE PRECISION DBLARR( KEEP8(26) )
77 INTEGER INTARR( KEEP8(27) )
78 INTEGER LEAF, LPOOL
79 INTEGER IPOOL( LPOOL )
80 include 'mumps_headers.h'
81 include 'mpif.h'
82 include 'mumps_tags.h'
83 INTEGER :: STATUS(MPI_STATUS_SIZE)
84 INTEGER MUMPS_PROCNODE
86 INTEGER INODE, IPOSK, JPOSK, NCOLU, NPIV, POSITION, IERR
87 INTEGER(8) POSELT, POSBLOCFACTO
88 INTEGER(8) LAELL
89 INTEGER(8) :: LA_PTR
90 DOUBLE PRECISION, DIMENSION(:), POINTER :: A_PTR
91 INTEGER IOLDPS, LCONT1, NROW1, NCOL1, NPIV1
92 INTEGER NSLAVES_TOT, HS, DEST, NSLAVES_FOLLOW
93 INTEGER FPERE
94 INTEGER(8) CPOS, LPOS
95 LOGICAL DYNAMIC_ALLOC
96 LOGICAL BLOCKING, SET_IRECV, MESSAGE_RECEIVED
97 INTEGER allocok
98 INTEGER LR_ACTIVATED_INT
99 LOGICAL LR_ACTIVATED, COMPRESS_CB
100 INTEGER NB_BLR_U, CURRENT_BLR_U
101 TYPE (LRB_TYPE), DIMENSION(:), ALLOCATABLE :: BLR_U
102 INTEGER, POINTER, DIMENSION(:) :: BEGS_BLR_U
103 TYPE (LRB_TYPE), DIMENSION(:), POINTER :: BLR_LS
104 TYPE (LRB_TYPE), POINTER, DIMENSION(:,:) :: CB_LRB
105 INTEGER, POINTER, DIMENSION(:) :: BEGS_BLR_LS, BEGS_BLR_COL
106 INTEGER :: NB_BLR_LS, IPANEL,
107 & MAXI_CLUSTER_LS, MAXI_CLUSTER,
108 & NB_BLR_COL, MAXI_CLUSTER_COL, NPARTSASS_MASTER
109 DOUBLE PRECISION, ALLOCATABLE, DIMENSION(:) :: WORK, TAU
110 INTEGER, ALLOCATABLE, DIMENSION(:) :: JPVT
111 DOUBLE PRECISION, ALLOCATABLE, DIMENSION(:,:) :: BLOCKLR
112 DOUBLE PRECISION,ALLOCATABLE,DIMENSION(:) :: RWORK
113 INTEGER :: OMP_NUM, LWORK
114 INTEGER :: II,JJ
115 INTEGER :: NFS4FATHER, NASS1, NELIM, INFO_TMP(2)
116 INTEGER :: NVSCHUR_K253, NSLAVES_L, IROW_L
117 INTEGER :: NBROWSinF
118 DOUBLE PRECISION, ALLOCATABLE, DIMENSION(:) :: M_ARRAY
119 DOUBLE PRECISION, ALLOCATABLE, DIMENSION(:) :: UDYNAMIC
120 DOUBLE PRECISION ONE,ALPHA
121 parameter(one = 1.0d0,
alpha=-1.0d0)
122 dynamic_alloc = .false.
123 position = 0
124 CALL mpi_unpack( bufr, lbufr_bytes, position, inode, 1,
125 & mpi_integer, comm, ierr )
126 CALL mpi_unpack( bufr, lbufr_bytes, position, iposk, 1,
127 & mpi_integer, comm, ierr )
128 CALL mpi_unpack( bufr, lbufr_bytes, position, jposk, 1,
129 & mpi_integer, comm, ierr )
130 CALL mpi_unpack( bufr, lbufr_bytes, position, npiv, 1,
131 & mpi_integer, comm, ierr )
132 IF ( npiv .LE. 0 ) THEN
133 npiv = - npiv
134 WRITE(*,*)
myid,
':error, received negative NPIV in BLFAC'
136 END IF
137 CALL mpi_unpack( bufr, lbufr_bytes, position, fpere, 1,
138 & mpi_integer, comm, ierr )
139 CALL mpi_unpack( bufr, lbufr_bytes, position, ncolu, 1,
140 & mpi_integer, comm, ierr )
142 & lr_activated_int, 1,
143 & mpi_integer, comm, ierr )
144 lr_activated = (lr_activated_int.EQ.1)
146 & ipanel, 1,
147 & mpi_integer, comm, ierr )
148 IF (lr_activated) THEN
150 & nb_blr_u, 1, mpi_integer,
151 & comm, ierr )
152 current_blr_u = 1
153 ALLOCATE(blr_u(
max(nb_blr_u,1)),
154 & begs_blr_u(nb_blr_u+2), stat=allocok)
155 if (allocok .GT. 0) THEN
156 iflag = -13
157 ierror =
max(nb_blr_u,1) + nb_blr_u+2
158 GOTO 700
159 endif
161 & position, jposk-1, 0, 'V',
162 & blr_u, nb_blr_u,
163 & begs_blr_u(1),
164 & keep8, comm, ierr, iflag, ierror)
165 IF (iflag.LT.0) GOTO 700
166 ELSE
167 laell = int(npiv,8) * int(ncolu,8)
169 & 0, laell, .false.,
170 & keep(1), keep8(1),
171 & n, iw, liw, a, la,
172 & lrlu, iptrlu,
173 & iwpos, iwposcb, ptrist, ptrast,
174 & step, pimaster, pamaster, lrlus,
175 & keep(ixsz),
comp,dkeep(97),
myid, slavef,
176 & procnode_steps, dad,
177 & iflag, ierror)
178 IF (iflag.LT.0) GOTO 700
179 lrlu = lrlu - laell
180 lrlus = lrlus - laell
181 keep8(67) =
min(lrlus, keep8(67))
182 keep8(69) = keep8(69) + laell
183 keep8(68) =
max(keep8(69), keep8(68))
184 posblocfacto = posfac
185 posfac = posfac + laell
187 & la-lrlus,0_8, laell,keep,keep8,lrlus)
189 & a(posblocfacto), npiv*ncolu,
190 & mpi_double_precision,
191 & comm, ierr )
192 ENDIF
193 IF (ptrist(step( inode )) .EQ. 0) dynamic_alloc = .true.
194 IF ( (ptrist(step( inode )).NE.0) .AND.
195 & (iposk + npiv -1 .GT.
196 & iw(ptrist(step(inode))+3+keep(ixsz))) )THEN
197 dynamic_alloc = .true.
198 ENDIF
199 IF (lr_activated) THEN
200 dynamic_alloc = .false.
201 ENDIF
202 IF (dynamic_alloc) THEN
203 ALLOCATE(udynamic(laell), stat=allocok)
204 if (allocok .GT. 0) THEN
205 iflag = -13
207 GOTO 700
208 endif
209 udynamic(1_8:laell) = a(posblocfacto:posblocfacto+laell-1_8)
210 lrlu = lrlu + laell
211 lrlus = lrlus + laell
212 keep8(69) = keep8(69) - laell
213 posfac = posfac - laell
215 & la-lrlus,0_8,-laell,keep,keep8,lrlus)
216 ENDIF
217 IF (ptrist(step( inode )) .EQ. 0) THEN
219 & bufr, lbufr, lbufr_bytes, procnode_steps, posfac,
220 & iwpos, iwposcb, iptrlu,
221 & lrlu, lrlus, n, iw, liw, a, la, ptrist,
222 & ptlust_s, ptrfac,
223 & ptrast, step, pimaster, pamaster, nstk_s,
comp,
224 & iflag, ierror, comm,
225 & perm, ipool, lpool, leaf, nbfin,
myid, slavef,
226 &
227 & root, opassw, opeliw, itloc, rhs_mumps,
228 & fils, dad, ptrarw, ptraiw,
229 & intarr, dblarr, icntl,keep,keep8,dkeep,nd, frere_steps,
230 & lptrar, nelt, frtptr, frtelt,
231 & istep_to_iniv2, tab_pos_in_pere, .true.
232 & , lrgroups
233 & )
234 IF ( iflag .LT. 0 ) GOTO 600
235 ENDIF
236 DO WHILE ( iposk + npiv -1 .GT.
237 & iw( ptrist(step( inode )) + 3 +keep(ixsz)) )
239 & keep(199) )
240 blocking = .true.
241 set_irecv = .false.
242 message_received = .false.
244 & ass_irecv, blocking, set_irecv, message_received,
245 & msgsou, bloc_facto_sym, status,
246 & bufr, lbufr, lbufr_bytes, procnode_steps, posfac,
247 & iwpos, iwposcb, iptrlu,
248 & lrlu, lrlus, n, iw, liw, a, la, ptrist,
249 & ptlust_s, ptrfac,
250 & ptrast, step, pimaster, pamaster, nstk_s,
comp,
251 & iflag, ierror, comm,
252 & perm, ipool, lpool, leaf, nbfin,
myid, slavef,
253 &
254 & root, opassw, opeliw, itloc, rhs_mumps,
255 & fils, dad, ptrarw, ptraiw,
256 & intarr, dblarr, icntl, keep,keep8,dkeep, nd, frere_steps,
257 & lptrar, nelt, frtptr, frtelt,
258 & istep_to_iniv2, tab_pos_in_pere, .true.
259 & , lrgroups
260 & )
261 IF ( iflag .LT. 0 ) GOTO 600
262 END DO
263 set_irecv = .true.
264 blocking = .false.
265 message_received = .true.
267 & ass_irecv, blocking, set_irecv, message_received,
268 & mpi_any_source, mpi_any_tag,
269 & status,
270 & bufr, lbufr, lbufr_bytes, procnode_steps, posfac,
271 & iwpos, iwposcb, iptrlu,
272 & lrlu, lrlus, n, iw, liw, a, la, ptrist,
273 & ptlust_s, ptrfac,
274 & ptrast, step, pimaster, pamaster, nstk_s,
comp,
275 & iflag, ierror, comm,
276 & perm, ipool, lpool, leaf, nbfin,
myid, slavef,
277 &
278 & root, opassw, opeliw, itloc, rhs_mumps,
279 & fils, dad, ptrarw, ptraiw,
280 & intarr, dblarr, icntl, keep,keep8,dkeep, nd, frere_steps,
281 & lptrar, nelt, frtptr, frtelt,
282 & istep_to_iniv2, tab_pos_in_pere, .true.
283 & , lrgroups
284 & )
285 ioldps = ptrist(step( inode ))
287 & ptrast(step(inode)), iw(ioldps+xxd), iw(ioldps+xxr),
288 & a_ptr, poselt, la_ptr )
289 lcont1 = iw( ioldps + keep(ixsz) )
290 nrow1 = iw( ioldps + 2 + keep(ixsz))
291 npiv1 = iw( ioldps + 3 + keep(ixsz))
292 nslaves_tot = iw( ioldps + 5 + keep(ixsz))
293 hs = 6 + nslaves_tot + keep(ixsz)
294 ncol1 = lcont1 + npiv1
295 IF (lr_activated) THEN
297 & begs_blr_ls, blr_ls)
298 nb_blr_ls = size(begs_blr_ls)-2
299#if defined(BLR_MT)
300
301#endif
303 & a_ptr(poselt), la_ptr, 1_8,
304 & iflag, ierror, ncol1,
305 & begs_blr_ls(1), size(begs_blr_ls),
306 & begs_blr_u(1), size(begs_blr_u),
307 & current_blr_u,
308 & blr_ls(1), nb_blr_ls+1,
309 & blr_u(1), nb_blr_u+1,
310 & 0,
311 & .true.,
312 & 0,
313 & 2,
314 & 1,
315 & keep(481), dkeep(11), keep(466), keep(477)
316 & )
317#if defined(BLR_MT)
318
319#endif
321 IF (allocated(blr_u)) DEALLOCATE(blr_u)
322 IF (associated(begs_blr_u)) DEALLOCATE(begs_blr_u)
323 IF (iflag.LT.0) GOTO 700
324 IF (keep(486).EQ.3) THEN
326 & keep8, keep(34))
327 ENDIF
328 ELSE
329 cpos = poselt + int(jposk - 1,8)
330 lpos = poselt + int(iposk - 1,8)
331 IF ( npiv .GT. 0 ) THEN
332 IF (dynamic_alloc) THEN
333 CALL dgemm(
'T',
'N', ncolu, nrow1, npiv,
alpha,
334 & udynamic(1), npiv,
335 & a_ptr( lpos ), ncol1, one,
336 & a_ptr( cpos ), ncol1 )
337 ELSE
338 CALL dgemm(
'T',
'N', ncolu, nrow1, npiv,
alpha,
339 & a( posblocfacto ), npiv,
340 & a_ptr( lpos ), ncol1, one,
341 & a_ptr( cpos ), ncol1 )
342 ENDIF
343 ENDIF
344 ENDIF
345 IF (npiv .GT. 0) THEN
346 flop1 = dble(ncolu*npiv)*dble(2*nrow1)
347 flop1 = -flop1
349 ENDIF
350 IF ( iw(ioldps+6+keep(ixsz)).EQ.
351 & huge(iw(ioldps+6+keep(ixsz))) ) THEN
352 iw(ioldps+6+keep(ixsz)) = 1
353 ENDIF
354 iw(ioldps+6+keep(ixsz)) =
355 & iw(ioldps+6+keep(ixsz)) + 1
356 IF (.NOT.lr_activated) THEN
357 IF (dynamic_alloc) THEN
358 DEALLOCATE(udynamic)
359 ELSE
360 lrlu = lrlu + laell
361 lrlus = lrlus + laell
362 keep8(69) = keep8(69) - laell
363 posfac = posfac - laell
365 & la-lrlus,0_8,-laell,keep,keep8,lrlus)
366 ENDIF
367 ENDIF
368 nslaves_follow = iw( ioldps + 5 +keep(ixsz) ) - xtra_slaves_sym
369 IF ( iw( ioldps + 6 +keep(ixsz)) .eq. 0 .and.
370 & keep(50) .ne. 0 .and. nslaves_follow .eq. 0 )
371 & THEN
374 & comm, keep, ierr )
375 IF ( ierr .LT. 0 ) THEN
376 write(*,*) ' Internal error in PROCESS_BLFAC_SLAVE.'
377 iflag = -99
378 GOTO 700
379 END IF
380 END IF
381 IF (iw(ptrist(step(inode)) + 6+keep(ixsz) ) .eq. 0) THEN
382 npiv1 = iw( ioldps + 3 + keep(ixsz))
383 nass1 = iw( ioldps + 4 + keep(ixsz))
384 nelim = nass1 - npiv1
385 compress_cb= .false.
386 IF (lr_activated) THEN
387 compress_cb = ((iw(ptrist(step(inode))+xxlr).EQ.1).OR.
388 & (iw(ptrist(step(inode))+xxlr).EQ.3))
389 IF (compress_cb.AND.npiv.EQ.0) THEN
390 compress_cb = .false.
391 iw(ioldps+xxlr) = iw(ioldps+xxlr) -1
392 ENDIF
393 IF (compress_cb) THEN
395 & begs_blr_col, npartsass_master)
396 nb_blr_col = size(begs_blr_col) - 1
397 allocate(cb_lrb(nb_blr_ls,nb_blr_col-npartsass_master),
398 & stat=allocok)
399 IF (allocok > 0) THEN
400 iflag = -13
401 ierror = nb_blr_ls*(nb_blr_col-npartsass_master)
402 GOTO 700
403 ENDIF
404 DO ii=1,nb_blr_ls
405 DO jj=1,nb_blr_col-npartsass_master
406 cb_lrb(ii,jj)%M=0
407 cb_lrb(ii,jj)%N=0
408 NULLIFY(cb_lrb(ii,jj)%Q)
409 NULLIFY(cb_lrb(ii,jj)%R)
410 cb_lrb(ii,jj)%ISLR = .false.
411 ENDDO
412 ENDDO
414 call max_cluster(begs_blr_ls,nb_blr_ls+1,maxi_cluster_ls)
415 CALL max_cluster(begs_blr_col,nb_blr_col,maxi_cluster_col)
416 maxi_cluster =
max(maxi_cluster_ls,
417 & maxi_cluster_col+nelim,npiv)
418 lwork = maxi_cluster*maxi_cluster
419 omp_num = 1
420#if defined(BLR_MT)
421
422#endif
423 ALLOCATE(blocklr(maxi_cluster, omp_num*maxi_cluster),
424 & rwork(2*maxi_cluster*omp_num),
425 & tau(maxi_cluster*omp_num),
426 & jpvt(maxi_cluster*omp_num),
427 & work(lwork*omp_num),
428 & stat=allocok)
429 IF (allocok > 0 ) THEN
430 iflag = -13
431 ierror = omp_num*(lwork + maxi_cluster*(maxi_cluster+4))
432 GOTO 700
433 ENDIF
434 nfs4father = -9999
435 IF ( (keep(219).NE.0).AND.(keep(50).EQ.2) ) THEN
437 & nfs4father )
438 nfs4father =
max(nfs4father,0) + nelim
439 ENDIF
440 ALLOCATE(m_array(
max(nfs4father,1)), stat=allocok)
441 IF (allocok.gt.0) THEN
442 iflag = -13
443 ierror =
max(nfs4father,1)
444 GOTO 700
445 ENDIF
446 begs_blr_col(1+npartsass_master) =
447 & begs_blr_col(1+npartsass_master) - nelim
448 nbrowsinf = 0
449 IF ( (keep(219).NE.0).AND.(keep(50).EQ.2).AND.
450 & nfs4father.GT.0 ) THEN
452 & n, inode, fpere, keep,
453 & ioldps, hs,
454 & iw, liw,
455 & nrow1, ncol1, npiv1,
456 & nelim, nfs4father,
457 & nbrowsinf
458 & )
459 ENDIF
460 IF ((keep(114).EQ.1) .AND. (keep(116).GT.0)
461 & .AND. (keep(50).EQ.2)
462 & ) THEN
463 nslaves_l = iw(ptrist(step(inode)) + 5 + keep(ixsz))
464 irow_l = ptrist(step(inode)) + 6 + nslaves_l +
465 & keep(ixsz)
467 & n,
468 & nrow1,
469 & keep(116),
470 & iw(irow_l),
471 & perm, nvschur_k253 )
472 ELSE
473 nvschur_k253 = 0
474 ENDIF
475#if defined(BLR_MT)
476
477#endif
479 & a_ptr(poselt), la_ptr, 1_8, ncol1,
480 & begs_blr_ls(1), size(begs_blr_ls),
481 & begs_blr_col(1), size(begs_blr_col),
482 & nb_blr_ls, nb_blr_col-npartsass_master,
483 & npartsass_master,
484 & nrow1, ncol1-npiv1, inode,
485 & iw(ioldps+xxf), 1, 2, iflag, ierror,
486 & dkeep(12), keep(466), keep(484), keep(489),
487 & cb_lrb(1,1),
488 & work, tau, jpvt, lwork, rwork, blocklr,
489 & maxi_cluster, keep8, omp_num,
490 & nfs4father, npiv1, nvschur_k253, keep(1),
491 & m_array,
492 & nelim, nbrowsinf )
493#if defined(BLR_MT)
494
495#endif
496 IF (iflag.LT.0) GOTO 650
497 IF ( (keep(219).NE.0).AND.(keep(50).EQ.2).AND.
498 & nfs4father.GT.0 ) THEN
499 info_tmp(1) = iflag
500 info_tmp(2) = ierror
502 & m_array, info_tmp)
503 iflag = info_tmp(1)
504 ierror = info_tmp(2)
505 ENDIF
506 650 CONTINUE
507 IF (allocated(m_array)) DEALLOCATE(m_array)
508 IF (allocated(blocklr)) DEALLOCATE(blocklr)
509 IF (allocated(rwork)) DEALLOCATE(rwork)
510 IF (allocated(tau)) DEALLOCATE(tau)
511 IF (allocated(jpvt)) DEALLOCATE(jpvt)
512 IF (allocated(work)) DEALLOCATE(work)
513 IF (iflag.LT.0) GOTO 700
514 ENDIF
515 ENDIF
517 & n, inode, fpere,
518 & root,
520 &
521 & bufr, lbufr, lbufr_bytes, procnode_steps, posfac,
522 & iwpos, iwposcb, iptrlu, lrlu, lrlus, iw, liw, a, la,
523 & ptrist, ptlust_s, ptrfac,
524 & ptrast, step, pimaster, pamaster,
525 & nstk_s,
comp, iflag, ierror, perm,
526 & ipool, lpool, leaf, nbfin, slavef,
527 & opassw, opeliw, itloc, rhs_mumps, fils, dad, ptrarw, ptraiw,
528 & intarr,dblarr,icntl,keep,keep8,dkeep,nd,frere_steps,
529 & lptrar, nelt, frtptr, frtelt,
530 & istep_to_iniv2, tab_pos_in_pere
531 & , lrgroups
532 & )
533 ENDIF
534 RETURN
535 700 CONTINUE
537 600 CONTINUE
538 IF (allocated(blr_u)) DEALLOCATE(blr_u)
539 IF (compress_cb) THEN
540 IF (allocated(blocklr)) DEALLOCATE(blocklr)
541 IF (allocated(rwork)) DEALLOCATE(rwork)
542 IF (allocated(tau)) DEALLOCATE(tau)
543 IF (allocated(jpvt)) DEALLOCATE(jpvt)
544 IF (allocated(work)) DEALLOCATE(work)
545 ENDIF
546 IF (allocated(m_array)) DEALLOCATE(m_array)
547 IF (dynamic_alloc) THEN
548 IF (allocated(udynamic)) DEALLOCATE(udynamic)
549 ENDIF
550 RETURN
subroutine dmumps_bdc_error(myid, slavef, comm, keep)
subroutine dmumps_get_size_needed(sizei_needed, sizer_needed, skip_top_stack, keep, keep8, n, iw, liw, a, la, lrlu, iptrlu, iwpos, iwposcb, ptrist, ptrast, step, pimaster, pamaster, lrlus, xsize, comp, acc_time, myid, slavef, procnode_steps, dad, iflag, ierror)
recursive subroutine dmumps_treat_descband(inode, comm_load, ass_irecv, 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_mpi_unpack_lr(bufr, lbufr, lbufr_bytes, position, npiv, nelim, dir, blr_u, nb_block_u, begs_blr_u, keep8, comm, ierr, iflag, ierror)
recursive subroutine dmumps_end_facto_slave(comm_load, ass_irecv, n, inode, fpere, root, myid, comm bufr, lbufr, lbufr_bytes, procnode_steps, posfac, iwpos, iwposcb, iptrlu, lrlu, lrlus, iw, liw, a, la, ptrist, ptlust_s, ptrfac, ptrast, step, pimaster, pamaster, nstk, comp, iflag, ierror, perm, ipool, lpool, leaf, nbfin, slavef, opassw, opeliw, itloc, rhs_mumps, fils, dad, ptrarw, ptraiw, intarr, dblarr, icntl, keep, keep8, dkeep, nd, frere, lptrar, nelt, frtptr, frtelt, istep_to_iniv2, tab_pos_in_pere, lrgroups)
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 dgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
DGEMM
subroutine mpi_unpack(inbuf, insize, position, outbuf, outcnt, datatype, comm, ierr)
subroutine, public dmumps_buf_send_1int(i, dest, tag, comm, keep, ierr)
subroutine dmumps_dm_set_dynptr(cb_state, a, la, pamaster_or_ptrast, ixxd, ixxr, son_a, iachk, recsize)
subroutine dmumps_get_size_schur_in_front(n, ncb, size_schur, row_indices, perm, nvschur)
subroutine, public dmumps_load_mem_update(ssarbr, process_bande_arg, mem_value, new_lu, inc_mem_arg, keep, keep8, lrlus)
double precision, save, private alpha
integer, save, private myid
subroutine, public dmumps_load_update(check_flops, process_bande, inc_load, keep, keep8)
subroutine max_cluster(cut, cut_size, maxi_cluster)
subroutine, public dmumps_blr_retrieve_nfs4father(iwhandler, nfs4father)
subroutine, public dmumps_blr_retrieve_begs_blr_c(iwhandler, begs_blr_col, nb_panels)
subroutine, public dmumps_blr_dec_and_retrieve_l(iwhandler, ipanel, begs_blr_l, thelrbpanel)
subroutine, public dmumps_blr_save_cb_lrb(iwhandler, cb_lrb)
subroutine, public dmumps_blr_save_m_array(iwhandler, m_array, info)
subroutine, public dmumps_blr_try_free_panel(iwhandler, ipanel, keep8, k34)
subroutine dealloc_blr_panel(blr_panel, iend, keep8, k34, ibeg_in)