366
370 IMPLICIT NONE
371 INTEGER MTYPE
372 INTEGER, INTENT( IN ) :: INODE, LASTFSL0STA, LASTFSL0DYN
373 INTEGER LBUFR, LBUFR_BYTES
374 INTEGER MYID, SLAVEF, COMM
375 INTEGER LIWCB, LIW, POSIWCB
376 INTEGER(8) :: POSWCB, PLEFTWCB, LWCB
377 INTEGER(8) :: LA
378 INTEGER N, LPOOL, LEAF, NBFIN
379 INTEGER INFO( 80 ), KEEP( 500)
380 INTEGER(8) KEEP8(150)
381 DOUBLE PRECISION, INTENT(INOUT) :: DKEEP(230)
382 INTEGER BUFR( LBUFR )
383 INTEGER IPOOL( LPOOL ), NSTK_S((28))
384 INTEGER IWCB( LIWCB ), IW( LIW )
385 INTEGER NRHS
386 COMPLEX(kind=8) WCB( LWCB )
387 COMPLEX(kind=8) :: A( LA )
388 INTEGER(8) :: LRHS_ROOT
389 COMPLEX(kind=8) RHS_ROOT( LRHS_ROOT )
390 INTEGER PTRICB(KEEP(28)), PTRIST(KEEP(28))
391 INTEGER(8) :: PTRFAC(KEEP(28))
392 INTEGER PROCNODE_STEPS(KEEP(28))
393 INTEGER ( N ), STEP( N ), FRERE(KEEP(28)), DAD(KEEP(28))
394 INTEGER ISTEP_TO_INIV2(KEEP(71)),
395 & TAB_POS_IN_PERE(SLAVEF+2,max(1,(56)))
396 INTEGER POSINRHSCOMP_FWD(N), LRHSCOMP
397 COMPLEX(kind=8) RHSCOMP(LRHSCOMP, NRHS)
398 LOGICAL, intent(in) :: DO_NBSPARSE
399 INTEGER, intent(in) :: LRHS_BOUNDS
400 INTEGER, intent(in) :: RHS_BOUNDS(LRHS_BOUNDS)
401 LOGICAL, intent(in) :: FROM_PP
402 LOGICAL, intent(out) :: ERROR_WAS_BROADCASTED
404 INTEGER MUMPS_PROCNODE
405 COMPLEX(kind=8) ALPHA,ONE,ZERO
406 parameter(zero=(0.0d0,0.0d0),
407 & one=(1.0d0,0.0d0),
408 &
alpha=(-1.0d0,0.0d0))
409 INTEGER :: IWHDLR
410 INTEGER JBDEB, JBFIN, NRHS_B
411 INTEGER LDADIAG
412 INTEGER(8) :: APOS, APOS1, IFR8,
413 INTEGER I, J, K, IPOS, NSLAVES, J1, J2, J3, FPERE, FPERE_MAPPING,
414 & NPIV, NCB, LIELL, JJ,
415INTEGER(8) :: PCB_COURANT, PPIV_COURANT, PPIV_PANEL, PCB_PANEL
416 INTEGER IPOSINRHSCOMP_TMP
417 INTEGER Effective_CB_Size, NUPDATE, ISLAVE, PDEST, FirstIndex
418 LOGICAL FLAG
419 INTEGER :: NUPDATE_NONCRITICAL, IPOSINRHSCOMPLASTFSDYN
420LOGICAL :: OMP_FLAG
421 include 'mumps_headers.h'
422 INTEGER(8) :: APOSDEB
423 INTEGER TempNROW, TempNCOL, PANEL_SIZE,
424 & JFIN, NBJ, NUPDATE_PANEL,
425 & TYPEF
426 INTEGER LD_WCBPIV
427 INTEGER LD_WCBCB
428 LOGICAL :: LDEQLIELLPANEL
429 LOGICAL :: CBINITZERO
430 INTEGER LDAJ, LDAJ_FIRST_PANEL
431 INTEGER LDAtemp
432 LOGICAL COMPRESS_PANEL, LR_ACTIVATED
433 LOGICAL OOCWRITE_COMPATIBLE_WITH_BLR
434 INTEGER TMP_NBPANELS,
435 & I_PIVRPTR, I_PIVR, IPANEL
436 LOGICAL MUST_BE_PERMUTED
437 INTEGER :: SIZEBLOCK, NB, JCourant, NB_LOCK
438 include 'mpif.h'
439 include 'mumps_tags.h'
440 INTEGER ( 1 )
441 error_was_broadcasted = .false.
442 dummy(1)=1
443 lr_activated = (iw(ptrist(step(inode))+xxlr).GT.0)
444 compress_panel = (iw(ptrist(step(inode))+xxlr).GE.2)
445 oocwrite_compatible_with_blr =
446 & (.NOT.lr_activated.OR.(.NOT.compress_panel).OR.
447 & (keep(485).EQ.0)
448 & )
449 IF (do_nbsparse) THEN
450 jbdeb= rhs_bounds(2*step(inode)-1)
451 jbfin= rhs_bounds(2*step(inode))
452 ELSE
453 jbdeb = 1
454 jbfin = nrhs
455 ENDIF
456 nrhs_b = jbfin-jbdeb+1
457 IF (do_nbsparse) THEN
458 if (jbdeb.GT.jbfin) then
459 write(6,*) " Internal error 1 in nbsparse :",
460 & jbdeb, jbfin
462 endif
463 IF (jbdeb.LT.1 .OR. jbdeb.GT.nrhs .or.
464 & jbfin.LT.1 .OR. jbfin.GT.nrhs ) THEN
465 write(6,*) " Internal error 2 in nbsparse :",
466 & jbdeb, jbfin
468 endif
469 ENDIF
470 IF ( inode .eq. keep( 38 ) .OR. inode .eq.keep( 20 ) ) THEN
471 liell = iw( ptrist( step(inode)) + 3 + keep(ixsz))
472 npiv = liell
473 nelim = 0
474 nslaves = 0
475 ipos = ptrist( step(inode)) + 5 + keep(ixsz)
476 ELSE
477 ipos = ptrist(step(inode)) + 2 + keep(ixsz)
478 liell = iw(ipos-2)+iw(ipos+1)
479 nelim = iw(ipos-1)
480 nslaves = iw( ptrist(step(inode)) + 5 + keep(ixsz) )
481 ipos = ipos + 1
482 npiv = iw(ipos)
483 ipos = ipos + 1
484 IF ((keep(201).GT.0).AND.oocwrite_compatible_with_blr) THEN
486 & inode,ptrfac,keep,a,la,step,
487 & keep8,n,must_be_permuted,ierr)
488 IF(ierr.LT.0)THEN
489 info(1)=ierr
490 info(2)=0
491 error_was_broadcasted = .false.
492 GOTO 270
493 ENDIF
494 IF (keep(201).EQ.1 .AND. keep(50).NE.1) THEN
496 & iw(ipos+1+2*liell+1+nslaves),
497 & must_be_permuted )
498 ENDIF
499 ENDIF
500 nslaves = iw( ptrist(step(inode)) + 5 + keep(ixsz))
501 ipos = ipos + 1 + nslaves
502 END IF
503 IF ( mtype .EQ. 1 .OR. keep(50) .NE. 0 ) THEN
504 j1 = ipos + 1
505 j2 = ipos + liell
506 j3 = ipos + npiv
507 ELSE
508 j1 = ipos + liell + 1
509 j2 = ipos + 2 * liell
510 j3 = ipos + liell + npiv
511 END IF
512 ncb = liell-npiv
513 IF (keep(50).NE.0) THEN
514 IF ( keep(459) .GT. 1 ) THEN
515 ldadiag = -99999
516 ELSE
517 ldadiag = npiv
518 ENDIF
519 ELSE
520 ldadiag = liell
521 ENDIF
522 IF ( inode .eq. keep( 38 ) .OR. inode .eq. keep(20) ) THEN
523 ifr8 = 0_8
524 iposinrhscomp_tmp = posinrhscomp_fwd(iw(j1))
525 ifr_ini8 = ifr8
526 omp_flag = .false.
527
528
529 IF (omp_flag) THEN
530
531 DO k=jbdeb,jbfin
532 ifr8 = ifr_ini8 + int(k-1,8)*int(npiv,8)
533 DO jj = j1, j3
534 rhs_root(ifr8+int(jj-j1+1,8)) =
535 & rhscomp(iposinrhscomp_tmp+jj-j1,k)
536 ENDDO
537 ENDDO
538
539 ELSE
540 DO k=jbdeb,jbfin
541 ifr8 = ifr_ini8 + int(k-1,8)*int(npiv,8)
542 DO jj = j1, j3
543 rhs_root(ifr8+int(jj-j1+1,8)) =
544 & rhscomp(iposinrhscomp_tmp+jj-j1,k)
545 ENDDO
546 ENDDO
547 ENDIF
548 IF ( npiv .LT. liell ) THEN
549 WRITE(*,*) ' Internal error 1 in ZMUMPS_SOLVE_NODE_FWD',
550 & npiv, liell
552 END IF
553 GO TO 270
554 END IF
555 apos = ptrfac(step(inode))
556 IF ( (keep(201).EQ.1).AND.oocwrite_compatible_with_blr ) THEN
557 IF (mtype.EQ.1) THEN
558 IF ((mtype.EQ.1).AND.nslaves.NE.0) THEN
559 tempnrow= npiv+nelim
560 tempncol= npiv
561 ldaj_first_panel=tempnrow
562 ELSE
563 tempnrow= liell
564 tempncol= npiv
565 ldaj_first_panel=tempnrow
566 ENDIF
567 typef=typef_l
568 ELSE
569 tempncol= liell
570 tempnrow= npiv
571 ldaj_first_panel=tempncol
572 typef= typef_u
573 ENDIF
575 ENDIF
576 ppiv_courant = pleftwcb
577 pleftwcb = pleftwcb + int(liell,8) * int(nrhs_b,8)
578 IF ( poswcb - pleftwcb + 1_8 .LT. 0 ) THEN
579 info(1) = -11
581 error_was_broadcasted = .false.
582 GOTO 270
583 END IF
584 IF (keep(201) .EQ. 1 .AND. oocwrite_compatible_with_blr) THEN
585 ldeqliellpanel = .true.
586 ld_wcbpiv = liell
587 ld_wcbcb = liell
588 pcb_courant = ppiv_courant + npiv
589 ELSE
590 ldeqliellpanel = .false.
591 ld_wcbpiv = npiv
592 ld_wcbcb = ncb
593 pcb_courant = ppiv_courant + int(npiv,8)*int(nrhs_b,8)
594 ENDIF
595 fpere = dad(step(inode))
596 IF ( fpere .NE. 0 ) THEN
598 & keep(199) )
599 ELSE
600 fpere_mapping = -1
601 ENDIF
602 IF ( lastfsl0dyn .LE. n ) THEN
603 cbinitzero = .true.
604 ELSE IF ( fpere_mapping .EQ. myid ) THEN
605 cbinitzero = .true.
606 ELSE
607 cbinitzero = .false.
608 ENDIF
610 & npiv, ncb, liell, cbinitzero, ldeqliellpanel,
611 & rhscomp(1, jbdeb), lrhscomp, nrhs_b,
612 & posinrhscomp_fwd, n,
613 & wcb(ppiv_courant),
614 & iw, liw, j1, j3, j2, keep, dkeep)
615 IF ( npiv .NE. 0 ) THEN
616 IF ((keep(201).EQ.1).AND.oocwrite_compatible_with_blr) THEN
617 aposdeb = apos
618 j = 1
619 ipanel = 0
620 10 CONTINUE
621 ipanel = ipanel + 1
622 jfin =
min(j+panel_size-1, npiv)
623 IF (iw(ipos+ liell + jfin) < 0) THEN
624 jfin=jfin+1
625 ENDIF
626 nbj = jfin-j+1
627 ldaj = ldaj_first_panel-j+1
628 IF ( (keep(50).NE.1).AND. must_be_permuted ) THEN
630 & i_pivrptr, i_pivr, ipos+1+2*liell, iw, liw)
631 IF (npiv.EQ.(iw(i_pivrptr+ipanel-1)-1)) THEN
632 must_be_permuted=.false.
633 ELSE
635 & iw( i_pivr+ iw(i_pivrptr+ipanel-1)-
636 & iw(i_pivrptr)),
637 & npiv-iw(i_pivrptr+ipanel-1)+1,
638 & iw(i_pivrptr+ipanel-1)-1,
639 & a(aposdeb),
640 & ldaj, nbj, j-1 )
641 ENDIF
642 ENDIF
643 nupdate_panel = ldaj - nbj
644 ppiv_panel = ppiv_courant+int(j-1,8)
645 pcb_panel = ppiv_panel+int(nbj,8)
646 apos1 = aposdeb+int(nbj,8)
647 IF (mtype.EQ.1) THEN
648#if defined(MUMPS_USE_BLAS2)
649 IF ( nrhs_b == 1 ) THEN
650 CALL ztrsv(
'L',
'N',
'U', nbj, a(aposdeb), ldaj,
651 & wcb(ppiv_panel), 1 )
652 IF (nupdate_panel.GT.0) THEN
653 CALL zgemv(
'N', nupdate_panel,nbj,
alpha, a(apos1),
654 & ldaj, wcb(ppiv_panel), 1, one,
655 & wcb(pcb_panel), 1)
656 ENDIF
657 ELSE
658#endif
659 CALL ztrsm(
'L',
'L',
'N',
'U', nbj, nrhs_b, one,
660 & a(aposdeb), ldaj, wcb(ppiv_panel),
661 & liell )
662 IF (nupdate_panel.GT.0) THEN
663 CALL zgemm(
'N',
'N', nupdate_panel, nrhs_b, nbj,
665 & a(apos1), ldaj, wcb(ppiv_panel), liell, one,
666 & wcb(pcb_panel), liell)
667 ENDIF
668#if defined(MUMPS_USE_BLAS2)
669 ENDIF
670#endif
671 ELSE
672#if defined(MUMPS_USE_BLAS2)
673 IF (nrhs_b == 1) THEN
674 CALL ztrsv(
'L',
'N',
'N', nbj, a(aposdeb), ldaj,
675 & wcb(ppiv_panel), 1 )
676 IF (nupdate_panel.GT.0) THEN
677 CALL zgemv(
'N',nupdate_panel, nbj,
alpha, a(apos1),
678 & ldaj, wcb(ppiv_panel), 1,
679 & one, wcb(pcb_panel), 1 )
680 ENDIF
681 ELSE
682#endif
683 CALL ztrsm(
'L',
'L',
'N',
'N',nbj, nrhs_b, one,
684 & a(aposdeb), ldaj, wcb(ppiv_panel),
685 & liell)
686 IF (nupdate_panel.GT.0) THEN
687 CALL zgemm(
'N',
'N', nupdate_panel, nrhs_b, nbj,
689 & a(apos1), ldaj, wcb(ppiv_panel), liell, one,
690 & wcb(pcb_panel), liell)
691 ENDIF
692#if defined(MUMPS_USE_BLAS2)
693 ENDIF
694#endif
695 ENDIF
696 aposdeb = aposdeb+int(ldaj,8)*int(nbj,8)
697 j=jfin+1
698 IF ( j .LE. npiv ) GOTO 10
699 ELSE
700 IF ( iw(ptrist(step(inode))+xxlr) .GE. 2 .AND.
701 & keep(485) .EQ. 1 ) THEN
702 iwhdlr = iw(ptrist(step(inode))+xxf)
704 & inode, n, iwhdlr, npiv, nslaves,
705 & iw, ipos, liw,
706 & liell, wcb, lwcb,
707 & ld_wcbpiv, ld_wcbcb,
708 & ppiv_courant, pcb_courant,
709 & rhscomp, lrhscomp, nrhs,
710 & posinrhscomp_fwd, jbdeb, jbfin,
711 & mtype, keep, keep8, oocwrite_compatible_with_blr,
712 & info(1), info(2) )
713 IF (info(1).LT.0) THEN
714 error_was_broadcasted = .false.
715 GOTO 270
716 ENDIF
717 ELSE IF ( keep(459) .GT. 1 .AND. keep(50) .NE. 0 ) THEN
719 & a, la, apos,
720 & npiv, iw(ipos+liell+1),
721 & nrhs_b, wcb, lwcb, ld_wcbpiv,
722 & ppiv_courant, mtype, keep)
723 ELSE
725 & a, la, apos,
726 & npiv, ldadiag,
727 & nrhs_b, wcb, lwcb, ld_wcbpiv,
728 & ppiv_courant, mtype, keep)
729 ENDIF
730 END IF
731 END IF
732 ncb = liell - npiv
733 IF ( mtype .EQ. 1 ) THEN
734 IF ( nslaves .EQ. 0 .OR. npiv .eq. 0 ) THEN
735 nupdate = ncb
736 ELSE
737 nupdate = nelim
738 END IF
739 IF (keep(459) .GT. 1 .AND. keep(50) .NE. 0) THEN
740 CALL mumps_geti8(apos1, iw(ptrist(step(inode))+xxr))
741 apos1 = apos + apos1 - int(npiv,8)*int(nupdate,8)
742 ELSE
743 apos1 = apos + int(npiv,8) * int(ldadiag,8)
744 ENDIF
745 ELSE
746 apos1 = apos + int(npiv,8)
747 nupdate = ncb
748 END IF
749 IF (keep(201).NE.1) THEN
750 IF ( iw(ptrist(step(inode))+xxlr) .LT. 2 .OR.
751 & keep(485).EQ.0) THEN
752 IF (mtype .EQ. 1) THEN
753 ldatemp = npiv
754 ELSE
755 ldatemp = liell
756 ENDIF
758 & (a, la, apos1,
759 & npiv, ldatemp, nupdate,
760 & nrhs_b, wcb, lwcb, ppiv_courant, ld_wcbpiv,
761 & pcb_courant, ld_wcbcb,
762 & mtype, keep, one)
763 ENDIF
764 END IF
765 IF ( iw(ptrist(step(inode))+xxlr) .LT. 2 .OR.
766 & keep(485).EQ.0) THEN
767 IF (keep(201) .GT. 0 .AND. oocwrite_compatible_with_blr) THEN
769 & inode, n, npiv, liell, nelim, nslaves,
770 & ppiv_courant,
771 & iw, ipos, liw,
772 & a, la, apos,
773 & wcb, lwcb, ld_wcbpiv,
774 & rhscomp, lrhscomp, nrhs,
775 & posinrhscomp_fwd, jbdeb, jbfin,
776 & mtype, keep, oocwrite_compatible_with_blr,
777 & .false.
778 & )
779 ELSE
781 & inode, n, npiv, liell, nelim, nslaves,
782 & ppiv_courant,
783 & iw, ipos, liw,
784 & a, la, apos,
785 & wcb, lwcb, ld_wcbpiv,
786 & rhscomp, lrhscomp, nrhs,
787 & posinrhscomp_fwd, jbdeb, jbfin,
788 & mtype, keep, oocwrite_compatible_with_blr,
789 & .false.
790 & )
791 ENDIF
792 ENDIF
793 IF ((keep(201).EQ.1).AND.oocwrite_compatible_with_blr)
794 &THEN
796 & a,la,.true.,ierr)
797 IF(ierr.LT.0)THEN
798 info(1)=ierr
799 info(2)=0
800 error_was_broadcasted = .false.
801 GOTO 270
802 ENDIF
803 END IF
804 IF ( fpere .EQ. 0 ) THEN
805 pleftwcb = pleftwcb - int(liell,8) *int(nrhs_b,8)
806 GOTO 270
807 ENDIF
808 IF ( nupdate .NE. 0 .OR. ncb.EQ.0 ) THEN
810 & keep(199)) .EQ. myid) THEN
811 IF ( ncb .ne. 0 ) THEN
812 ptricb(step(inode)) = ncb + 1
813 nupdate_noncritical = nupdate
814 IF (lastfsl0dyn .LE. n) THEN
815 IF ( lastfsl0dyn .EQ. 0 ) THEN
816 iposinrhscomplastfsdyn = 0
817 ELSE
818 iposinrhscomplastfsdyn =
819 & abs(posinrhscomp_fwd(lastfsl0dyn))
820 ENDIF
821 DO i = 1, nupdate
822 IF ( abs(posinrhscomp_fwd( iw(j3+i) )) .GT.
823 & iposinrhscomplastfsdyn ) THEN
824 IF (abs(step(iw(j3+i))) .GT.
825 & abs(step( lastfsl0sta))
826 & .OR. keep(261) .NE. 1) THEN
827 nupdate_noncritical = i - 1
828 EXIT
829 ENDIF
830 ENDIF
831 ENDDO
832 ENDIF
833 omp_flag = .false.
834
835
836 IF (omp_flag) THEN
837
838 DO k = jbdeb, jbfin
839 ifr8 = pcb_courant + int(k-jbdeb,8)*int(ld_wcbcb,8)
840#if defined(__ve__)
841
842#endif
843 DO i = 1, nupdate_noncritical
844 iposinrhscomp_tmp =
845 & abs(posinrhscomp_fwd(iw(j3 + i)))
846 rhscomp( iposinrhscomp_tmp, k ) =
847 & rhscomp( iposinrhscomp_tmp, k )
848 & + wcb(ifr8 + int(i-1,8))
849 ENDDO
850 ENDDO
851
852 ELSE
853 DO k = jbdeb, jbfin
854 ifr8 = pcb_courant + int(k-jbdeb,8)*int(ld_wcbcb,8)
855#if defined(__ve__)
856
857#endif
858 DO i = 1, nupdate_noncritical
859 iposinrhscomp_tmp =
860 & abs(posinrhscomp_fwd(iw(j3 + i)))
861 rhscomp( iposinrhscomp_tmp, k ) =
862 & rhscomp( iposinrhscomp_tmp, k )
863 & + wcb(ifr8 + int(i-1,8))
864 ENDDO
865 ENDDO
866 ENDIF
867 IF ( cbinitzero ) THEN
868 IF ( nupdate .NE. nupdate_noncritical) THEN
869 nb_lock = 1
870 IF (.NOT.do_nbsparse.AND.(keep(400).GT.1)) THEN
872 ENDIF
873 sizeblock = (jbfin-jbdeb+1+nb_lock-1) / nb_lock
874 DO nb = 1, nb_lock
875 jcourant = jbdeb+sizeblock*(nb-1)
876
877 DO k = jcourant,
min(jbfin,jcourant+sizeblock-1)
878 ifr8 = pcb_courant + int(k-jbdeb,8)*int(ld_wcbcb,8)
879#if defined(__ve__)
880
881#endif
882 DO i = nupdate_noncritical+1, nupdate
883 iposinrhscomp_tmp =
884 & abs(posinrhscomp_fwd(iw(j3 + i)))
885 rhscomp( iposinrhscomp_tmp, k ) =
886 & rhscomp( iposinrhscomp_tmp, k )
887 & + wcb(ifr8 + int(i-1,8))
888 ENDDO
889 ENDDO
890
891 ENDDO
892 ENDIF
893 ENDIF
894 ptricb(step( inode )) = ptricb(step( inode )) - nupdate
895 ELSE
896 ptricb(step( inode )) = -1
897 ENDIF
898 ELSE
899 210 CONTINUE
901 & ncb, ld_wcbcb,
902 & nupdate,
903 & iw( j3 + 1 ), wcb( pcb_courant ), jbdeb, jbfin,
904 & rhscomp, 1, 1, -9999, -9999,
905 & keep,
907 & contvec,
908 & comm, ierr )
909 IF ( ierr .EQ. -1 ) THEN
911 & bufr, lbufr, lbufr_bytes,
912 & myid, slavef, comm,
913 & n, nrhs, ipool, lpool, leaf,
914 & nbfin, nstk_s, iw, liw, a, la, ptrist, ptrfac,
915 & iwcb, liwcb,
916 & wcb, lwcb, poswcb, pleftwcb, posiwcb,
917 & ptricb, info, keep,keep8, dkeep, step,
918 & procnode_steps,
919 & rhscomp, lrhscomp, posinrhscomp_fwd
920 & , from_pp
921 & )
922 IF ( info( 1 ) .LT. 0 ) THEN
923 error_was_broadcasted = .true.
924 GOTO 270
925 ENDIF
926 GOTO 210
927 ELSE IF ( ierr .EQ. -2 ) THEN
928 info( 1 ) = -17
929 info( 2 ) = nupdate * keep( 35 ) +
930 & ( nupdate + 3 ) * keep( 34 )
931 error_was_broadcasted = .false.
932 GOTO 270
933 ELSE IF ( ierr .EQ. -3 ) THEN
934 info( 1 ) = -20
935 info( 2 ) = nupdate * keep( 35 ) +
936 & ( nupdate + 3 ) * keep( 34 )
937 error_was_broadcasted = .false.
938 GOTO 270
939 END IF
940 ENDIF
941 END IF
942 IF ( nslaves .NE. 0 .AND. mtype .eq. 1
943 & .and. npiv .NE. 0 ) THEN
944 DO islave = 1, nslaves
945 pdest = iw( ptrist(step(inode)) + 5 + islave +keep(ixsz))
947 & keep,keep8, inode, step, n, slavef,
948 & istep_to_iniv2, tab_pos_in_pere,
949 & islave, ncb - nelim,
950 & nslaves,
951 & effective_cb_size, firstindex )
952 222 CONTINUE
954 & inode, fpere,
955 & effective_cb_size, ld_wcbcb, ld_wcbpiv, npiv,
956 & jbdeb, jbfin,
957 & wcb( pcb_courant + nelim + firstindex - 1 ),
958 & wcb( ppiv_courant ),
959 & pdest, comm, keep, ierr )
960 IF ( ierr .EQ. -1 ) THEN
962 & bufr, lbufr, lbufr_bytes,
963 & myid, slavef, comm,
964 & n, nrhs, ipool, lpool, leaf,
965 & nbfin, nstk_s, iw, liw, a, la, ptrist,ptrfac,
966 & iwcb, liwcb,
967 & wcb, lwcb, poswcb, pleftwcb, posiwcb,
968 & ptricb, info, keep,keep8, dkeep, step,
969 & procnode_steps,
970 & rhscomp, lrhscomp, posinrhscomp_fwd
971 & , from_pp
972 & )
973 IF ( info( 1 ) .LT. 0 ) THEN
974 error_was_broadcasted = .true.
975 GOTO 270
976 ENDIF
977 GOTO 222
978 ELSE IF ( ierr .EQ. -2 ) THEN
979 info( 1 ) = -17
980 info( 2 ) = (npiv+effective_cb_size)*nrhs_b*keep(35) +
981 & 6 * keep( 34 )
982 error_was_broadcasted = .false.
983 GOTO 270
984 ELSE IF ( ierr .EQ. -3 ) THEN
985 info( 1 ) = -20
986 info( 2 ) = (npiv+effective_cb_size)*nrhs_b*keep(35) +
987 & 6 * keep( 34 )
988 error_was_broadcasted = .false.
989 GOTO 270
990 END IF
991 END DO
992 END IF
993 pleftwcb = pleftwcb - int(liell,8)*int(nrhs_b,8)
994 270 CONTINUE
995 RETURN
subroutine zgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
ZGEMV
subroutine ztrsv(uplo, trans, diag, n, a, lda, x, incx)
ZTRSV
subroutine zgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
ZGEMM
subroutine ztrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
ZTRSM
subroutine mumps_bloc2_get_slave_info(keep, keep8, inode, step, n, slavef, istep_to_iniv2, tab_pos_in_pere islave, ncb, nslaves, size, first_index)
subroutine, public zmumps_buf_send_master2slave(nrhs, inode, ifath, eff_cb_size, ld_cb, ld_piv, npiv, jbdeb, jbfin, cb, sol, dest, comm, keep, ierr)
subroutine, public zmumps_buf_send_vcb(nrhs_b, node1, node2, ncb, ldw, long, iw, w, jbdeb, jbfin, rhscomp, nrhs, lrhscomp, iposinrhscomp, npiv, keep, dest, tag, comm, ierr)
subroutine zmumps_free_factors_for_solve(inode, ptrfac, nsteps, a, la, flag, ierr)
integer function, public zmumps_ooc_panel_size(nnmax)
integer, parameter nb_lock_max
subroutine zmumps_sol_fwd_lr_su(inode, n, iwhdlr, npiv_global, nslaves, iw, ipos_init, liw, liell, wcb, lwcb, ld_wcbpiv, ld_wcbcb, ppiv_init, pcb_init, rhscomp, lrhscomp, nrhs, posinrhscomp_fwd, jbdeb, jbfin, mtype, keep, keep8, oocwrite_compatible_with_blr, iflag, ierror)
subroutine zmumps_permute_panel(ipiv, lpiv, ishift, the_panel, nbrow, nbcol, kbeforepanel)
subroutine zmumps_ooc_pp_check_perm_freed(iw_location, must_be_permuted)
subroutine zmumps_get_ooc_perm_ptr(typef, nbpanels, i_pivptr, i_piv, ipos, iw, liw)
subroutine zmumps_solve_gemm_update(a, la, apos1, nx, lda, ny, nrhs_b, wcb, lwcb, ptrx, ldx, ptry, ldy, mtype, keep, coef_y)
subroutine zmumps_solve_fwd_panels(a, la, apos, npiv, iw, nrhs_b, wcb, lwcb, lda_wcb, ppiv_courant, mtype, keep)
subroutine zmumps_solve_get_ooc_node(inode, ptrfac, keep, a, la, step, keep8, n, must_be_permuted, ierr)
subroutine zmumps_sol_ld_and_reload(inode, n, npiv, liell, nelim, nslaves, ppiv_courant, iw, ipos, liw, a, la, apos, wcb, lwcb, ld_wcbpiv, rhscomp, lrhscomp, nrhs, posinrhscomp_fwd, jbdeb, jbfin, mtype, keep, oocwrite_compatible_with_blr, ignore_k459)
subroutine zmumps_solve_fwd_trsolve(a, la, apos, npiv, ldadiag, nrhs_b, wcb, lwcb, lda_wcb, ppiv_courant, mtype, keep)
subroutine zmumps_sol_ld_and_reload_panel(inode, n, npiv, liell, nelim, nslaves, ppiv_courant, iw, ipos, liw, a, la, apos, wcb, lwcb, ld_wcbpiv, rhscomp, lrhscomp, nrhs, posinrhscomp_fwd, jbdeb, jbfin, mtype, keep, oocwrite_compatible_with_blr, ignore_k459)
subroutine zmumps_rhscomp_to_wcb(npiv, ncb, liell, cbinitzero, ldeqliellpanel, rhscomp, lrhscomp, nrhs_b, posinrhscomp_fwd, n, wcb, iw, liw, j1, j3, j2, keep, dkeep)
recursive subroutine zmumps_solve_recv_and_treat(bloq, flag, bufr, lbufr, lbufr_bytes, myid, slavef, comm, n, nrhs, ipool, lpool, leaf, nbfin, nstk_s, iw, liw, a, la, ptrist, ptrfac, iwcb, liwcb, wcb, lwcb, poswcb, pleftwcb, posiwcb, ptricb, info, keep, keep8, dkeep, step, procnode_steps, rhscomp, lrhscomp, posinrhscomp_fwd, from_pp)