31 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
io_req
32 INTEGER(8),
DIMENSION(:),
ALLOCATABLE::
71 & STRAT_IO_ASYNC_ARG, WITH_BUF_ARG, LOW_LEVEL_STRAT_IO_ARG )
73 INTEGER,
intent(out) :: LOW_LEVEL_STRAT_IO_ARG
74 LOGICAL,
intent(out) :: STRAT_IO_ASYNC_ARG, WITH_BUF_ARG
75 INTEGER,
intent(in) :: STRAT_IO_ARG
77 CALL mumps_ooc_is_async_avail(tmp)
78 strat_io_async_arg=.false.
81 IF((strat_io_arg.EQ.1).OR.
THEN
84 ELSEIF((strat_io_arg.EQ.4).OR.(strat_io_arg.EQ.5))
THEN
85 strat_io_async_arg=.true.
87 ELSEIF(strat_io_arg.EQ.3)
THEN
88 strat_io_async_arg=.false.
91 low_level_strat_io_arg=mod(strat_io_arg,3)
93 low_level_strat_io_arg=0
94 IF(strat_io_arg.GE.3)
THEN
117 INTEGER tmpdir_max_length, prefix_max_length
118 parameter(tmpdir_max_length=255, prefix_max_length=63)
119 INTEGER(8),
intent(in) :: maxs
120 TYPE(zmumps_struc),
TARGET ::
id
124 CHARACTER(len=1):: tmp_dir(tmpdir_max_length),
125 & tmp_prefix(prefix_max_length)
126 INTEGER dim_dir,dim_prefix
127 INTEGER,
DIMENSION(:),
ALLOCATABLE :: file_flag_tab
136 IF (
id%KEEP(400).GT.0)
THEN
176 IF (
id%KEEP(201).EQ.2)
THEN
186 IF(
id%KEEP(107).GT.0)
THEN
190 & int((dble(maxs)*0.9d0-
204 IF (allocok .GT. 0)
THEN
206 WRITE(
icntl1,*)
'PB allocation in ZMUMPS_INIT_OOC'
222 IF (allocok .GT. 0)
THEN
224 WRITE(
icntl1,*)
'PB allocation in ZMUMPS_INIT_OOC'
242 dim_dir=len(trim(
id%OOC_TMPDIR))
243 dim_prefix=len(trim(
id%OOC_PREFIX))
245 &
id%OOC_TMPDIR, tmpdir_max_length, dim_dir )
247 &
id%OOC_PREFIX, prefix_max_length, dim_prefix)
248 CALL mumps_low_level_init_prefix(dim_prefix, tmp_prefix)
249 CALL mumps_low_level_init_tmpdir(dim_dir, tmp_dir)
252 IF (allocok .GT. 0)
THEN
254 WRITE(
icntl1,*)
'PB allocation in ZMUMPS_INIT_OOC'
262 tmp=int(
id%KEEP8(11)/1000000_8)+1
263 IF((
id%KEEP(201).EQ.1).AND.(
id%KEEP(50).EQ.0)
267 CALL mumps_low_level_init_ooc_c(
myid_ooc,tmp,
269 & file_flag_tab,ierr)
280 DEALLOCATE(file_flag_tab)
287 INTEGER inode,keep(500)
289 INTEGER(8) keep8(150)
290 INTEGER(8) :: ptrfac(keep(28)), size
291 COMPLEX(kind=8) a(la)
292 INTEGER ierr,node,,request
294 INTEGER addr_int1,addr_int2
296 INTEGER size_int1,size_int2
322 & a(ptrfac(
step_ooc(inode))),size_int1,size_int2,
323 & inode,request,
TYPE,addr_int1,addr_int2,ierr)
330 WRITE(*,*)
myid_ooc,
': Internal error (37) in OOC '
340 & (a(ptrfac(
step_ooc(inode))),
SIZE,ierr)
361 & a(ptrfac(
step_ooc(inode))),size_int1,size_int2,
362 & inode,request,
TYPE,addr_int1,addr_int2,ierr)
369 WRITE(*,*)
myid_ooc,
': Internal error (38) in OOC '
383 CALL mumps_wait_request(request,ierr)
400 INTEGER addr_int1,addr_int2
402 INTEGER size_int1,size_int2
420 CALL mumps_low_level_direct_read(dest,
421 & size_int1,size_int2,
422 &
TYPE,addr_int1,addr_int2,ierr)
427 &
': Problem in MUMPS_LOW_LEVEL_DIRECT_READ'
448 INTEGER,
intent(out):: ierr
462 TYPE(zmumps_struc),
TARGET :: id
463 INTEGER,
intent(out) :: IERR
464 INTEGER I,SOLVE_OR_FACTO
466 IF (id%KEEP(400).GT.0)
THEN
493 CALL mumps_ooc_end_write_c(ierr)
514 CALL mumps_clean_io_data_c(
myid_ooc,solve_or_facto,ierr)
525 EXTERNAL mumps_ooc_remove_file_c
526 TYPE(zmumps_struc),
TARGET :: id
529 CHARACTER(len=1):: TMP_NAME(350)
532 IF(.NOT. id%ASSOCIATED_OOC_FILES)
THEN
533 IF(
associated(id%OOC_FILE_NAMES).AND.
534 &
associated(id%OOC_FILE_NAME_LENGTH))
THEN
535 DO i1=1,id%OOC_NB_FILE_TYPE
536 DO i=1,id%OOC_NB_FILES(i1)
537 DO j=1,id%OOC_FILE_NAME_LENGTH(k)
538 tmp_name(j)=id%OOC_FILE_NAMES(k,j)
540 CALL mumps_ooc_remove_file_c(ierr, tmp_name(1))
553 IF(
associated(id%OOC_FILE_NAMES))
THEN
554 DEALLOCATE(id%OOC_FILE_NAMES)
555 NULLIFY(id%OOC_FILE_NAMES)
557 IF(
associated(id%OOC_FILE_NAME_LENGTH))
THEN
558 DEALLOCATE(id%OOC_FILE_NAME_LENGTH)
559 NULLIFY(id%OOC_FILE_NAME_LENGTH)
561 IF(
associated(id%OOC_NB_FILES))
THEN
562 DEALLOCATE(id%OOC_NB_FILES)
563 NULLIFY(id%OOC_NB_FILES)
570 TYPE(zmumps_struc),
TARGET :: id
574 IF(
associated(id%OOC_TOTAL_NB_NODES))
THEN
575 DEALLOCATE(id%OOC_TOTAL_NB_NODES)
576 NULLIFY(id%OOC_TOTAL_NB_NODES)
578 IF(
associated(id%OOC_INODE_SEQUENCE))
THEN
579 DEALLOCATE(id%OOC_INODE_SEQUENCE)
580 NULLIFY(id%OOC_INODE_SEQUENCE)
582 IF(
associated(id%OOC_SIZE_OF_BLOCK))
THEN
583 DEALLOCATE(id%OOC_SIZE_OF_BLOCK)
584 NULLIFY(id%OOC_SIZE_OF_BLOCK)
586 IF(
associated(id%OOC_VADDR))
THEN
587 DEALLOCATE(id%OOC_VADDR)
588 NULLIFY(id%OOC_VADDR)
598 INTEGER(8) :: tmp_size8
694 IF(
id%INFO(1).LT.0)
THEN
707 IF (allocok .GT. 0)
THEN
709 WRITE(
icntl1,*)
'PB allocation in ZMUMPS_OOC_INIT_SOLVE'
712 id%INFO(2) =
id%KEEP(28)
720 IF(
id%KEEP(107).GT.0)
THEN
740 & solution step in ZMUMPS_OOC_INIT_SOLVE'
746 & mpi_integer,mpi_max,
id%COMM_NODES, ierr)
751 IF (allocok .GT. 0)
THEN
753 WRITE(
icntl1,*)
'PB allocation in ZMUMPS_OOC_INIT_SOLVE'
760 IF (allocok .GT. 0)
THEN
762 WRITE(
icntl1,*)
'PB allocation in ZMUMPS_OOC_INIT_SOLVE'
765 id%INFO(2) =
id%KEEP(28)
777 IF (allocok .GT. 0)
THEN
779 WRITE(
icntl1,*)
'PB allocation in ZMUMPS_OOC_INIT_SOLVE'
796 IF (allocok .GT. 0)
THEN
798 WRITE(
icntl1,*)
'PB allocation in ZMUMPS_OOC_INIT_SOLVE'
875 COMPLEX(kind=8) a(la)
876 INTEGER(8) :: ptrfac(nsteps)
900 COMPLEX(kind=8) A(LA)
901 INTEGER(8) :: PTRFAC(NSTEPS)
909 & ZONE,PTRFAC,NSTEPS,POS_SEQ,NB_NODES,FLAG,IERR)
912 INTEGER ZONE,NSTEPS,FLAG,POS_SEQ,NB_NODES
914 INTEGER (8) :: INDICE, SIZE, PTRFAC(NSTEPS)
915 INTEGER REQUEST,INODE,IERR
916 INTEGER ADDR_INT1,ADDR_INT2
918 INTEGER SIZE_INT1,SIZE_INT2
927 & dest,size_int1,size_int2,
928 & inode,request,
TYPE,addr_int1,addr_int2,ierr)
936 & request,pos_seq,nb_nodes,flag,ptrfac,nsteps,ierr)
942 & request,pos_seq,nb_nodes,flag,ptrfac,nsteps,ierr)
954 INTEGER NSTEPS,REQUEST
955 INTEGER (8) :: PTRFAC(NSTEPS)
956 INTEGER (8) :: LAST, POS_IN_S, J
958 INTEGER POS_REQ,I,TMP_NODE,POS_IN_MANAGE
962 INTEGER MUMPS_TYPENODE,MUMPS_PROCNODE
985 &
keep_ooc(199)).EQ.2).AND.(mumps_procnode(
992 &
keep_ooc(199)).EQ.2).AND.(mumps_procnode(
997 ptrfac(
step_ooc(tmp_node))=-pos_in_s
1001 IF(abs(ptrfac(
step_ooc(tmp_node))).LT.
1003 WRITE(*,*)
myid_ooc,
': Inernal error (42) in OOC ',
1007 IF(abs(ptrfac(
step_ooc(tmp_node))).GT.
1009 WRITE(*,*)
myid_ooc,
': Inernal error (43) in OOC '
1029 pos_in_s=pos_in_s+last
1030 pos_in_manage=pos_in_manage+1
1043 & REQUEST,POS_SEQ,NB_NODES,FLAG,PTRFAC,NSTEPS,IERR)
1045 INTEGER INODE,ZONE,REQUEST,FLAG,POS_SEQ,NB_NODES,NSTEPS
1047 INTEGER(8) :: PTRFAC(NSTEPS)
1048 INTEGER(8) :: DEST, , J8
1049 INTEGER I,TMP_NODE,LOC_I,POS_REQ,NB
1051 INTEGER,
intent(out) :: IERR
1060 IF(
req_id(pos_req).NE.-9999)
THEN
1061 CALL mumps_wait_request(
req_id(pos_req),ierr)
1075 ELSEIF(flag.EQ.1)
THEN
1097 ELSEIF(flag.EQ.0)
THEN
1116 ptrfac(
step_ooc(tmp_node))=-local_dest
1119 ELSEIF(flag.EQ.0)
THEN
1129 ptrfac(
step_ooc(tmp_node))=-local_dest
1133 WRITE(*,*)
myid_ooc,
': Internal error (39) in OOC ',
1134 &
' Invalid Flag Value in ',
1135 &
' ZMUMPS_UPDATE_READ_REQ_NODE',flag
1143 WRITE(*,*)
myid_ooc,
': Internal error (40) in OOC ',
1154 WRITE(*,*)
myid_ooc,
': Internal error (41) in OOC ',
1155 &
' LRLUS_SOLVE must be (1) > 0',
1164 WRITE(*,*)
myid_ooc,
': Internal error (1) in OOC '
1168 ELSEIF(flag.EQ.0)
THEN
1170 WRITE(*,*)
myid_ooc,
': Internal error (2) in OOC ',
1181 WRITE(*,*)
myid_ooc,
': Internal error (3) in OOC ',
1182 &
' Invalid Flag Value in ',
1183 &
' ZMUMPS_UPDATE_READ_REQ_NODE',flag
1191 IF(nb.NE.nb_nodes)
THEN
1192 WRITE(*,*)
myid_ooc,
': Internal error (4) in OOC ',
1193 &
' ZMUMPS_UPDATE_READ_REQ_NODE ',nb,nb_nodes
1206 INTEGER,
intent(out):: IERR
1207 COMPLEX(kind=8) A(LA)
1208 INTEGER INODE,NSTEPS
1209 INTEGER(8) :: PTRFAC(NSTEPS)
1211 INTEGER(8) FREE_SIZE
1212 INTEGER TMP,TMP_NODE,I,ZONE,J, FREE_HOLE_FLAG
1214 INTEGER(8) :: DUMMY_SIZE
1219 WRITE(*,*)
myid_ooc,
': Internal error (5) in OOC ',
1220 &
' Problem in ZMUMPS_FREE_FACTORS_FOR_SOLVE',
1236 WRITE(*,*)
myid_ooc,
': INTERNAL ERROR (53) in OOC',inode,
1245 WRITE(*,*)
myid_ooc': Internal error (6) in OOC '
1246 &
': LRLUS_SOLVE must be (2) > 0'
1249 IF(zone.EQ.
nb_z)
THEN
1252 & dummy_size,ptrfac,
keep_ooc(28),zone,ierr)
1285 ELSEIF(which.EQ.0)
THEN
1309 IF((
nb_z.GT.1).AND.flag)
THEN
1327 INTEGER inode,nsteps
1329 INTEGER,
INTENT(out)::
1330 COMPLEX(kind=8) a(la)
1331 INTEGER (8) :: ptrfac(nsteps)
1391 & .AND. (
keep_ooc(235).EQ.0) )
THEN
1393 WRITE(*,*)
myid_ooc,
': INTERNAL ERROR (51) in OOC',inode,
1402 INTEGER INODE,NSTEPS
1403 INTEGER (8) :: PTRFAC(NSTEPS)
1414 WRITE(*,*)
myid_ooc,
': Internal error (52) in OOC',inode,
1443 INTEGER INODE,ZONE,NSTEPS
1444 INTEGER (8) :: PTRFAC(NSTEPS)
1446 DO WHILE (zone.LE.
nb_z)
1453 IF(zone.EQ.
nb_z+1)
THEN
1477 INTEGER,
intent(out)::ierr
1478 INTEGER(8) keep8(150)
1479 INTEGER(8) :: ptrfac(keep(28))
1481 INTEGER(8) :: requested_size
1497 & requested_size,ptrfac,keep(28),zone,ierr)
1507 & keep,keep8,a,zone)
1512 & keep,keep8,a,zone)
1517 & requested_size,ptrfac,
1518 & keep(28),zone,iflag,ierr)
1524 & keep,keep8,a,zone)
1525 ELSEIF(iflag.EQ.0)
THEN
1527 & requested_size,ptrfac,
1528 & keep(28),zone,iflag,ierr)
1534 & keep,keep8,a,zone)
1539 & requested_size,ptrfac,
1540 & keep(28),zone,iflag,ierr)
1546 & keep,keep8,a,zone)
1547 ELSEIF(iflag.EQ.0)
THEN
1549 & requested_size,ptrfac,
1550 & keep(28),zone,iflag,ierr)
1556 & keep,keep8,a,zone)
1562 & requested_size,ptrfac,keep(28),zone,ierr)
1567 & keep,keep8,a,zone)
1570 WRITE(*,*)
myid_ooc,
': Internal error (8) in OOC ',
1571 &
' Not enough space for Solve',inode,
1578 WRITE(*,*)
myid_ooc,
': Internal error (9) in OOC ',
1579 &
' LRLUS_SOLVE must be (3) > 0'
1585 & NSTEPS,ZONE,FLAG,IERR)
1587 INTEGER NSTEPS,,FLAG
1588 INTEGER(8) :: REQUESTED_SIZE, LA
1589 INTEGER(8) :: PTRFAC(NSTEPS)
1590 INTEGER(8) :: FREE_SIZE, FREE_HOLE, FREE_HOLE_POS
1591 COMPLEX(kind=8) A(LA)
1592 INTEGER I,TMP_NODE,FREE_HOLE_FLAG, J
1593 INTEGER,
intent(out)::IERR
1628 IF(free_hole_flag.EQ.1)
THEN
1629 free_hole=free_hole_pos-
1630 & (abs(ptrfac(
step_ooc(tmp_node)))+
1633 free_size=free_size+free_hole
1636 ptrfac(
step_ooc(tmp_node))=-777777_8
1645 WRITE(*,*)
myid_ooc,
': Internal error (10) in OOC ',
1646 &
' ZMUMPS_GET_TOP_AREA_SPACE',
1652 IF(free_hole_flag.EQ.0)
THEN
1656 IF(free_hole_flag.EQ.1)
THEN
1664 WRITE(*,*)
myid_ooc,
': Internal error (11) in OOC ',
1672 free_hole=free_hole_pos-
1673 & (abs(ptrfac(
step_ooc(tmp_node)))+
1675 ELSEIF(tmp_node.EQ.0)
THEN
1680 WRITE(*,*)
myid_ooc,
': Internal error (12) in OOC ',
1681 &
' ZMUMPS_GET_TOP_AREA_SPACE'
1686 free_hole=free_hole_pos-
1687 & (abs(ptrfac(
step_ooc(tmp_node)))+
1692 ELSEIF(tmp_node.LT.0)
THEN
1693 WRITE(*,*)
myid_ooc,
': Internal error (13) in OOC',
1694 &
' ZMUMPS_GET_TOP_AREA_SPACE'
1697 free_hole=free_hole_pos-
1698 & (abs(ptrfac(
step_ooc(tmp_node)))+
1704 free_size=free_size+free_hole
1718 & PTRFAC,NSTEPS,ZONE,FLAG,IERR)
1720 INTEGER NSTEPS,ZONE,FLAG
1721 INTEGER (8) :: REQUESTED_SIZE
1723 INTEGER (8) :: PTRFAC(NSTEPS)
1724 COMPLEX(kind=8) A(LA)
1725 INTEGER(8) :: FREE_SIZE, FREE_HOLE_POS, FREE_HOLE
1726 INTEGER I,J,TMP_NODE,FREE_HOLE_FLAG
1727 INTEGER,
intent(out) :: IERR
1769 IF(tmp_node.NE.0)
THEN
1771 IF(abs(ptrfac(
step_ooc(tmp_node))).NE.
1773 free_size=free_size+abs(ptrfac(
step_ooc(tmp_node)))
1777 IF(free_hole_flag.EQ.1)
THEN
1778 free_hole=abs(ptrfac(
step_ooc(tmp_node)))-
1781 free_size=free_size+free_hole
1783 free_hole_pos=abs(ptrfac(
step_ooc(tmp_node)))+
1785 ptrfac(
step_ooc(tmp_node))=-777777_8
1795 WRITE(*,*)
myid_ooc,
': Internal error (14) in OOC ',
1797 & CURRENT_POS_T(ZONE)-1,POS_HOLE_B(ZONE),I,POS_IN_MEM(I)
1801.EQ.
IF(FREE_HOLE_FLAG1)THEN
1802.LT.
IF(POS_HOLE_B(ZONE)+1CURRENT_POS_T(ZONE)-1)THEN
1803 I=POS_HOLE_B(ZONE)+1
1804 TMP_NODE=abs(POS_IN_MEM(I))
1805.GT.
IF(TMP_NODE(N_OOC+1)*NB_Z)THEN
1806 TMP_NODE=TMP_NODE-(N_OOC+1)*NB_Z
1807 CALL MUMPS_WAIT_REQUEST(IO_REQ(STEP_OOC(TMP_NODE)),IERR)
1809 WRITE(*,*)MYID_OOC,': internal error(15) in ooc
',
1810 & ERR_STR_OOC(1:DIM_ERR_STR_OOC)
1815 CALL ZMUMPS_SOLVE_UPDATE_POINTERS(
1816 & IO_REQ(STEP_OOC(TMP_NODE)),PTRFAC,NSTEPS)
1817 FREE_HOLE=abs(PTRFAC(STEP_OOC(TMP_NODE)))-FREE_HOLE_POS
1818.EQ.
ELSEIF(TMP_NODE0)THEN
1819 DO J=I,CURRENT_POS_T(ZONE)-1
1820.NE.
IF(POS_IN_MEM(J)0) EXIT
1822.LT.
IF(POS_IN_MEM(J)0)THEN
1823 WRITE(*,*)MYID_OOC,': internal error(16) in ooc
',
1829 free_hole=abs(ptrfac(
step_ooc(tmp_node)))-
1834 ELSEIF(tmp_node.LT.0)
THEN
1835 WRITE(*,*)
myid_ooc,
': Internal error (17) in OOC ',
1836 &
' ZMUMPS_GET_BOTTOM_AREA_SPACE'
1839 free_hole=abs(ptrfac(
step_ooc(tmp_node)))-
1845 free_size=free_size+free_hole
1854 WRITE(*,*)
myid_ooc': Internal error (18) in OOC ',
1871 WRITE(*,*)
myid_ooc,
': Internal error (19) in OOC ',
1872 &
'ZMUMPS_GET_BOTTOM_AREA_SPACE'
1883 & KEEP,KEEP8, A,ZONE)
1885 INTEGER INODE,KEEP(500)
1886 INTEGER(8) KEEP8(150)
1887 INTEGER(8) :: PTRFAC(KEEP(28))
1888 COMPLEX(kind=8) A(FACT_AREA_SIZE)
1902 WRITE(*,*)
myid_ooc,
': Internal error (20) in OOC ',
1903 &
' Problem avec debut (2)',inode,
1911 WRITE(*,*)
myid_ooc,
': Internal error (21) in OOC ',
1912 &
' Problem with CURRENT_POS_T',
1926 INTEGER INODE,KEEP(500)
1927 INTEGER(8) KEEP8(150)
1928 INTEGER(8) :: PTRFAC(KEEP(28))
1929 COMPLEX(kind=8) A(FACT_AREA_SIZE)
1932 WRITE(*,*)
myid_ooc,
': Internal error (22) in OOC ',
1933 &
' ZMUMPS_SOLVE_ALLOC_PTR_UPD_B'
1944 WRITE(*,*)
myid_ooc,
': Internal error (23) in OOC ',
1950 WRITE(*,*)
myid_ooc,
': Internal error (23b) in OOC '
1960 INTEGER(8) :: LA, REQUESTED_SIZE
1962 INTEGER,
intent(out) :: IERR
1963 INTEGER(8) :: (NSTEPS)
1964 COMPLEX(kind=8) A(LA)
1965 INTEGER (8) :: APOS_FIRST_FREE
1969 INTEGER J,I,TMP_NODE, NB_FREE, IPOS_FIRST_FREE
1970 INTEGER(8) :: K8, AREA_POINTER
1971 INTEGER FREE_HOLE_FLAG
1985 area_pointer=area_pointer+
1993 WRITE(*,*)
myid_ooc,
': Internal error (25) in OOC ',
1994 &
': There are no free blocks ',
2001 apos_first_free=area_pointer
2002 free_hole_pos=area_pointer
2005 apos_first_free=abs(ptrfac(
step_ooc(tmp_node)))
2023 size_hole=abs(ptrfac(
step_ooc(tmp_node)))-
2030 IF(tmp_node.LE.0)
THEN
2033 CALL mumps_wait_request(
2043 WRITE(*,*)
myid_ooc,
': Internal error (26) in OOC ',
2044 &
' ZMUMPS_FREE_SPACE_FOR_SOLVE',tmp_node,
2051 a(apos_first_free+k8-1_8)=
2052 & a(ptrfac(
step_ooc(tmp_node))+k8-1_8)
2054 ptrfac(
step_ooc(tmp_node))=apos_first_free
2055 apos_first_free=apos_first_free+
2079 a(apos_first_free+k8-1_8)=
2080 & a(ptrfac(
step_ooc(tmp_node))+k8-1_8)
2082 IF(free_hole_flag.EQ.1)
THEN
2083 free_hole=abs(ptrfac(
step_ooc(tmp_node)))-
2086 size_hole=size_hole+free_hole
2088 free_hole_pos=abs(ptrfac(
step_ooc(tmp_node)))+
2090 ptrfac(
step_ooc(tmp_node))=apos_first_free
2091 apos_first_free=apos_first_free+
2098 IF(free_hole_flag.EQ.1)
THEN
2099 free_hole=abs(ptrfac(
step_ooc(tmp_node)))-
2102 size_hole=size_hole+free_hole
2104 free_hole_pos=abs(ptrfac(
step_ooc(tmp_node)))+
2111 IF(free_hole_flag.EQ.1)
THEN
2114 size_hole=size_hole+free_hole
2127 ipos_first_free=ipos_first_free+1
2139 WRITE(*,*)
myid_ooc,
': Internal error (27) in OOC ',
2146 WRITE(*,*)
myid_ooc,
': Internal error (28) in OOC ',
2147 &
' LRLUS_SOLVE must be (4) > 0'
2151 WRITE(*,*)
myid_ooc,
': Internal error (29) in OOC ',
2157 WRITE(*,*)
myid_ooc,
': Internal error (30) in OOC ',
2158 &
' Problem avec debut POSFAC_SOLVE',
2165 WRITE(*,*)
myid_ooc,
': Internal error (31) in OOC ',
2174 INTEGER INODE,NSTEPS,FLAG
2175 INTEGER (8) :: PTRFAC(NSTEPS)
2177 IF((flag.LT.0).OR.(flag.GT.1))
THEN
2178 WRITE(*,*)
myid_ooc,
': Internal error (32) in OOC ',
2179 &
' ZMUMPS_OOC_UPDATE_SOLVE_STAT'
2184 WRITE(*,*)
myid_ooc,
': Internal error (33) in OOC ',
2185 &
' LRLUS_SOLVE must be (5) ++ > 0'
2196 WRITE(*,*)
myid_ooc,
': Internal error (34) in OOC ',
2197 &
' LRLUS_SOLVE must be (5) > 0'
2207 DO WHILE (i.LE.
nb_z)
2233 INTEGER(8),
INTENT(IN) :: LA
2234 INTEGER,
intent(out) :: IERR
2235 COMPLEX(kind=8) A(LA)
2236 INTEGER(8) :: PTRFAC(NSTEPS)
2237 INTEGER(8) :: SIZE, DEST
2238 INTEGER(8) :: NEEDED_SIZE
2239 INTEGER FLAG,TMP_FLAG,POS_SEQ,,
2301 & needed_size,ptrfac,nsteps,zone,tmp_flag,ierr)
2306 IF(tmp_flag.EQ.0)
THEN
2308 & needed_size,ptrfac,nsteps,zone,tmp_flag,ierr)
2316 & needed_size,ptrfac,nsteps,zone,tmp_flag,ierr)
2321 IF(tmp_flag.EQ.0)
THEN
2323 & needed_size,ptrfac,nsteps,zone,tmp_flag,ierr)
2330 IF(tmp_flag.EQ.0)
THEN
2332 & needed_size,ptrfac,nsteps,zone,ierr)
2340 & nb_nodes,flag,ptrfac,nsteps)
2348 & pos_seq,nb_nodes,flag,ierr)
2354 & NB_NODES,FLAG,PTRFAC,NSTEPS)
2356 INTEGER(8) :: SIZE, DEST
2357 INTEGER ZONE,FLAG,POS_SEQ,NSTEPS
2358 INTEGER(8) :: PTRFAC(NSTEPS), MAX_SIZE, LAST, J8
2359 INTEGER I,START_NODE,K,MAX_NB,
2361 INTEGER NB_NODES_LOC
2370 ELSEIF(flag.EQ.1)
THEN
2374 WRITE(*,*)
myid_ooc,
': Internal error (35) in OOC ',
2375 &
' Unknown Flag value in ',
2376 &
' ZMUMPS_SOLVE_COMPUTE_READ_SIZE',flag
2385 IF(zone.EQ.
nb_z)
THEN
2391 ELSEIF(flag.EQ.1)
THEN
2407 DO WHILE((j8.LE.max_size).AND.
2414 IF(.NOT.already)
THEN
2418 nb_nodes_loc=nb_nodes_loc+1
2427 IF(.NOT.already)
THEN
2439 nb_nodes_loc=nb_nodes_loc+1
2442 IF(j8.GT.max_size)
THEN
2445 nb_nodes_loc=nb_nodes_loc-1
2458 nb_nodes_loc=nb_nodes_loc-1
2473 DO WHILE((j8.LE.max_size).AND.(i.GE.1).AND.
2479 IF(.NOT.already)
THEN
2482 nb_nodes_loc=nb_nodes_loc+1
2492 IF(.NOT.already)
THEN
2505 nb_nodes_loc=nb_nodes_loc+1
2507 IF(j8.GT.max_size)
THEN
2510 nb_nodes_loc=nb_nodes_loc-1
2522 nb_nodes_loc=nb_nodes_loc-1
2535 INTEGER solve_or_facto
2536 INTEGER,
intent(out) :: ierr
2580 IF(
allocated(
io_req))
THEN
2598 IF(
allocated(
req_id))
THEN
2602 CALL mumps_clean_io_data_c(
myid_ooc,solve_or_facto,ierr)
2612 INTEGER,
INTENT(in) :: NSTEPS
2613 INTEGER(8),
INTENT(INOUT) :: PTRFAC(NSTEPS)
2614 INTEGER(8),
INTENT(IN) :: LA
2615 COMPLEX(kind=8) :: A(LA)
2616 INTEGER :: I, TMP, ZONE, IPAS, IBEG, IEND
2617 INTEGER(8) :: SAVE_PTR
2618 LOGICAL :: , SET_POS_SEQUENCE
2620 INTEGER(8) :: DUMMY_SIZE
2621 compress_to_be_done = .false.
2624 set_pos_sequence = .true.
2638 IF (set_pos_sequence)
THEN
2639 set_pos_sequence = .false.
2646 ELSE IF(tmp.LT.0)
THEN
2649 ptrfac(
step_ooc(j)) = abs(save_ptr)
2651 & zone,ptrfac,nsteps)
2653 IF(zone.EQ.
nb_z)
THEN
2655 WRITE(*,*)
myid_ooc,
': Internal error 6 ',
2657 &
' is in status USED in the
2658 & emmergency buffer '
2667 & .AND.(zone.NE.
nb_z))
THEN
2673 compress_to_be_done = .true.
2675 WRITE(*,*)
myid_ooc,
': Internal error Mila 4 ',
2689 IF (compress_to_be_done)
THEN
2692 & dummy_size,ptrfac,
2694 IF (ierr .LT. 0)
THEN
2695 WRITE(*,*)
myid_ooc,
': Internal error Mila 5 ',
2696 &
' IERR on return to ZMUMPS_FREE_SPACE_FOR_SOLVE =',
2706 & A,LA,DOPREFETCH,IERR)
2708 INTEGER nsteps,mtype
2709 INTEGER,
intent(out)::ierr
2711 COMPLEX(kind=8) a(la)
2712 INTEGER(8) :: ptrfac(nsteps)
2734 IF (doprefetch)
THEN
2743 & I_WORKED_ON_ROOT,IROOT,A,LA,IERR)
2747 INTEGER(8) :: ptrfac(nsteps)
2750 LOGICAL i_worked_on_root
2751 INTEGER,
intent(out):: ierr
2752 COMPLEX(kind=8) a(la)
2753 INTEGER(8) :: dummy_size
2769 IF (i_worked_on_root.AND.
2770 $ ((iroot.GT.0)))
THEN
2775 & ptrfac,
keep_ooc(28), a, la,.false.,ierr)
2776 IF (ierr .LT. 0)
RETURN
2779 & zone,ptrfac,nsteps)
2780 IF(zone.EQ.
nb_z)
THEN
2783 & dummy_size,ptrfac,
2785 IF (ierr .LT. 0)
THEN
2786 WRITE(*,*)
myid_ooc,
': Internal error in
2787 & ZMUMPS_FREE_SPACE_FOR_SOLVE',
2797 IF (ierr .LT. 0)
RETURN
2803 IF (ierr .LT. 0 )
RETURN
2810 TYPE(zmumps_struc),
TARGET :: id
2811 INTEGER,
intent(out) :: IERR
2812 INTEGER I,DIM,J,TMP,SIZE,K,I1
2813 CHARACTER(len=1):: TMP_NAME(350)
2814 EXTERNAL mumps_ooc_get_nb_files_c, mumps_ooc_get_file_name_c
2819 CALL mumps_ooc_get_nb_files_c(tmp,i)
2820 id%OOC_NB_FILES(j)=i
2823 IF(
associated(id%OOC_FILE_NAMES))
THEN
2824 DEALLOCATE(id%OOC_FILE_NAMES)
2825 NULLIFY(id%OOC_FILE_NAMES)
2827 ALLOCATE(id%OOC_FILE_NAMES(
SIZE,350),stat=ierr)
2828 IF (ierr .GT. 0)
THEN
2830 WRITE(
icntl1,*)
'PB allocation in ',
2831 &
'ZMUMPS_STRUC_STORE_FILE_NAME'
2834 IF(id%INFO(1).GE.0)
THEN
2836 id%INFO(2) = size*350
2840 IF(
associated(id%OOC_FILE_NAME_LENGTH))
THEN
2841 DEALLOCATE(id%OOC_FILE_NAME_LENGTH)
2842 NULLIFY(id%OOC_FILE_NAME_LENGTH)
2844 ALLOCATE(id%OOC_FILE_NAME_LENGTH(size),stat=ierr)
2845 IF (ierr .GT. 0)
THEN
2847 IF(id%INFO(1).GE.0)
THEN
2850 &
'PB allocation in ZMUMPS_STRUC_STORE_FILE_NAME'
2860 DO i=1,id%OOC_NB_FILES(i1)
2861 CALL mumps_ooc_get_file_name_c(tmp,i,dim,tmp_name(1))
2863 id%OOC_FILE_NAMES(k,j)=tmp_name(j)
2865 id%OOC_FILE_NAME_LENGTH(k)=dim+1
2873 TYPE(zmumps_struc),
TARGET :: id
2874 CHARACTER(len=1):: TMP_NAME(350)
2875 INTEGER I,I1,TMP,J,K,L,DIM,IERR
2876 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NB_FILES
2879 IF (ierr .GT. 0)
THEN
2881 IF(id%INFO(1).GE.0)
THEN
2884 &
'PB allocation in ZMUMPS_OOC_OPEN_FILES_FOR_SOLVE'
2892 nb_files=id%OOC_NB_FILES
2895 l=mod(id%KEEP(204),3)
2904 CALL mumps_ooc_init_vars_c(i,k,l,k211,ierr)
2914 dim=id%OOC_FILE_NAME_LENGTH(k)
2916 tmp_name(j)=id%OOC_FILE_NAMES(k,j)
2919 CALL mumps_ooc_set_file_name_c(tmp,i,dim,ierr,tmp_name(1))
2930 CALL mumps_ooc_start_low_level(ierr)
2937 DEALLOCATE(nb_files)
2943 CHARACTER(LEN=NB):: SRC
2944 CHARACTER(len=1):: (NB)
2953 INTEGER,
intent(out) :: IERR
2967 INTEGER,
intent(out) :: IERR
2975 IF (ierr < 0)
RETURN
2984 INTEGER(8) :: TMP_SIZE8
2985 INTEGER KEEP38, KEEP20
3027 & ( strat, typefile,
3028 & afac, lafac, monbloc,
3029 & lnextpiv2bewritten, unextpiv2bewritten,
3031 & myid, filesize, ierr , last_call)
3033 TYPE(
io_block),
INTENT(INOUT):: monbloc
3035 INTEGER,
INTENT(IN) :: strat, liwfac,
3037 INTEGER,
INTENT(INOUT) :: iw(0:liwfac-1)
3038 COMPLEX(kind=8),
INTENT(IN) :: afac(lafac)
3039 INTEGER,
INTENT(INOUT) :: lnextpiv2bewritten,
3040 & unextpiv2bewritten
3041 INTEGER(8),
INTENT(INOUT) :: filesize
3042 INTEGER,
INTENT(OUT) :: ierr
3043 LOGICAL,
INTENT(IN) :: last_call
3044 INTEGER(8) :: tmpsize_of_block
3045 INTEGER :: tempftype
3046 LOGICAL write_l, write_u
3048 include
'mumps_headers.h'
3060 CALL omp_set_lock(lock_for_l0omp)
3064 ELSE IF ( .NOT. omp_test_lock(lock_for_l0omp ))
THEN
3070 do_u_first = .false.
3072 IF ( lnextpiv2bewritten .GT. unextpiv2bewritten )
THEN
3076 IF (do_u_first)
GOTO 200
3077 100
IF (write_l .AND.
typef_l > 0 )
THEN
3079 IF ((monbloc%Typenode.EQ.2).AND.(.NOT.monbloc%MASTER))
3083 IF (tmpsize_of_block .LT. 0_8)
THEN
3084 tmpsize_of_block = -tmpsize_of_block - 1_8
3086 lnextpiv2bewritten =
3089 & / int(monbloc%NROW,8)
3094 & tempftype, afac, lafac, monbloc,
3096 & lnextpiv2bewritten,
3099 & filesize, last_call )
3100 IF (ierr .LT. 0)
RETURN
3101 IF (do_u_first)
GOTO 300
3103 200
IF (write_u)
THEN
3106 & tempftype, afac, lafac, monbloc,
3108 & unextpiv2bewritten,
3111 & filesize, last_call)
3112 IF (ierr .LT. 0)
RETURN
3113 IF (do_u_first)
GOTO 100
3118 CALL omp_unset_lock(lock_for_l0omp)
3124 & AFAC, LAFAC, MonBloc,
3126 & LorU_NextPiv2beWritten,
3127 & LorU_AddVirtNodeI8, LorUSIZE_OF_BLOCK,
3128 & FILESIZE, LAST_CALL
3132 INTEGER,
INTENT(IN) :: strat
3133 INTEGER,
INTENT(IN) :: typef
3134 INTEGER(8),
INTENT(INOUT) :: filesize
3135 INTEGER(8),
INTENT(IN) :: lafac
3136 COMPLEX(kind=8),
INTENT(IN) :: afac(lafac)
3137 INTEGER,
INTENT(INOUT) :: loru_nextpiv2bewritten
3138 INTEGER(8),
INTENT(INOUT) :: loru_addvirtnodei8
3139 INTEGER(8),
INTENT(INOUT) :: lorusize_of_block
3140 TYPE(
io_block),
INTENT(INOUT) :: monbloc
3141 INTEGER,
INTENT(OUT) :: ierr
3142 LOGICAL,
INTENT(IN) :: last_call
3144 INTEGER(8) :: totsize, effsize
3145 INTEGER(8) :: tailleecrite
3147 INTEGER(8) :: addvirtcour
3148 LOGICAL virt_add_reserved_bef_call
3149 LOGICAL virtual_address_just_reserved
3150 LOGICAL hole_processed_before_call
3152 INTEGER icur, inode_cur, ilast
3153 INTEGER(8) :: addr_last
3156 nnmax = monbloc%NROW
3158 nnmax = monbloc%NCOL
3161 IF ( (.NOT.monbloc%Last) .AND.
3162 & (monbloc%LastPiv-loru_nextpiv2bewritten+1.LT.size_panel))
3168 & (monbloc%NFS, nnmax, size_panel, monbloc, tmp_estim)
3169 IF (monbloc%Last)
THEN
3172 & (monbloc%LastPiv, nnmax, size_panel, monbloc, tmp_estim)
3174 effsize = -1034039740327_8
3176 IF (monbloc%Typenode.EQ.3.AND. monbloc%NFS.NE.monbloc%NCOL)
THEN
3177 WRITE(*,*)
'Internal error in ZMUMPS_OOC_STORE_LorU for type3',
3178 & monbloc%NFS,monbloc%NCOL
3181 IF (monbloc%Typenode.EQ.3.AND. typef.NE.
typef_l)
THEN
3182 WRITE(*,*)
'Internal error in ZMUMPS_OOC_STORE_LorU,TYPEF=',
3183 & typef,
'for typenode=3'
3186 IF (monbloc%Typenode.EQ.2.AND.
3188 & .NOT. monbloc%MASTER )
THEN
3189 WRITE(*,*)
'Internal error in ZMUMPS_OOC_STORE_LorU',
3190 & monbloc%MASTER,monbloc%Typenode, typef
3193 hole_processed_before_call = (lorusize_of_block .LT. 0_8)
3194 IF (hole_processed_before_call.AND.(.NOT.monbloc%Last))
THEN
3195 WRITE(6,*)
' Internal error in ZMUMPS_OOC_STORE_LorU ',
3196 &
' last is false after earlier calls with last=true'
3199 IF (hole_processed_before_call)
THEN
3200 lorusize_of_block = - lorusize_of_block - 1_8
3201 totsize = -99999999_8
3203 virtual_address_just_reserved = .false.
3204 virt_add_reserved_bef_call =
3205 & ( lorusize_of_block .NE. 0_8 .OR.
3206 & hole_processed_before_call )
3207 IF (monbloc%Last .AND. .NOT. hole_processed_before_call)
THEN
3209 & (monbloc%LastPiv+size_panel-1) / size_panel)
3210 IF (virt_add_reserved_bef_call)
THEN
3212 & (loru_addvirtnodei8+totsize) )
THEN
3216 virtual_address_just_reserved = .true.
3217 IF (effsize .EQ. 0_8)
THEN
3218 loru_addvirtnodei8 = -9999_8
3225 IF (.NOT. virt_add_reserved_bef_call
3231 addvirtcour = loru_addvirtnodei8 + lorusize_of_block
3235 & loru_nextpiv2bewritten, addvirtcour,
3238 IF ( ierr .LT. 0 )
RETURN
3239 lorusize_of_block = lorusize_of_block + tailleecrite
3240 IF (lorusize_of_block.EQ.0_8 )
THEN
3241 IF ( .NOT. virt_add_reserved_bef_call
3242 & .AND. .NOT. virtual_address_just_reserved )
3245 loru_addvirtnodei8 = 0_8
3247 ELSE IF (.NOT. virt_add_reserved_bef_call )
THEN
3248 virtual_address_just_reserved = .true.
3250 IF ( virtual_address_just_reserved)
THEN
3252 & typef) = monbloc%INODE
3254 IF (monbloc%Last)
THEN
3269 IF (monbloc%Last)
THEN
3270 lorusize_of_block = - lorusize_of_block - 1_8
3273 IF (.NOT.monbloc%Last)
THEN
3274 WRITE(6,*)
' Internal error in ZMUMPS_OOC_STORE_LorU ',
3275 &
' LAST and LAST_CALL are incompatible '
3278 lorusize_of_block = - lorusize_of_block - 1_8
3282 IF ( inode_cur .NE. monbloc%INODE .AND.
3291 IF (inode_cur .EQ. monbloc%INODE)
THEN
3292 lorusize_of_block = addr_last -
3295 IF (icur .LE. 1)
THEN
3296 WRITE(*,*)
"Internal error in ZMUMPS_OOC_STORE_LorU"
3297 WRITE(*,*)
"Did not find current node in sequence"
3303 filesize = filesize + lorusize_of_block
3308 & STRAT, TYPEF, MonBloc,
3311 & NextPiv2beWritten, AddVirtCour,
3312 & TailleEcrite, IERR )
3315 INTEGER,
INTENT(IN) :: strat, typef, size_panel
3317 INTEGER(8),
INTENT(IN) :: addvirtcour
3318 COMPLEX(kind=8),
INTENT(IN) :: afac(lafac)
3319 INTEGER,
INTENT(INOUT) :: nextpiv2bewritten
3320 TYPE(
io_block),
INTENT(INOUT) :: monbloc
3321 INTEGER(8),
INTENT(OUT) ::
3322 INTEGER,
INTENT(OUT) :: ierr
3323 INTEGER :: i, nbeff, lpaneleff, iend
3324 INTEGER(8) :: addvirtdeb
3327 addvirtdeb = addvirtcour
3328 i = nextpiv2bewritten
3329 IF ( nextpiv2bewritten .GT. monbloc%LastPiv )
THEN
3333 nbeff =
min(size_panel,monbloc%LastPiv-i+1 )
3334 IF ((nbeff.NE.size_panel) .AND. (.NOT.monbloc%Last))
THEN
3337 IF (typef.EQ.
typef_l.AND.monbloc%MASTER.AND.
3338 &
keep_ooc(50).EQ.2 .AND. monbloc%Typenode.NE.3)
THEN
3339 IF (monbloc%INDICES(nbeff+i-1) < 0)
3347 & addvirtdeb, i, iend, lpaneleff,
3349 IF ( ierr .LT. 0 )
THEN
3352 IF ( ierr .EQ. 1 )
THEN
3357 monbloc%LastPanelWritten_L = monbloc%LastPanelWritten_L+1
3359 monbloc%LastPanelWritten_U = monbloc%LastPanelWritten_U+1
3361 addvirtdeb = addvirtdeb + int(lpaneleff,8)
3362 tailleecrite = tailleecrite + int(lpaneleff
3364 IF ( i .LE. monbloc%LastPiv )
GOTO 10
3366 nextpiv2bewritten = i
3370 & (nfsornpiv, nnmax, size_panel, monbloc
3372 TYPE(
io_block),
INTENT(IN):: monbloc
3373 INTEGER,
INTENT(IN) :: nfsornpiv, nnmax, size_panel
3374 LOGICAL,
INTENT(IN) :: estim
3376 INTEGER(8) :: totsize
3378 IF (nfsornpiv.EQ.0)
GOTO 100
3379 IF (.NOT. monbloc%MASTER .OR. monbloc%Typenode.EQ.3)
THEN
3380 totsize = int(nfsornpiv,8) * int(nnmax,8)
3384 nbeff =
min(size_panel, nfsornpiv-i+1)
3389 IF (monbloc%INDICES(i+nbeff-1) < 0)
THEN
3395 & int(nnmax-i+1,8) * int(nbeff,8)
3397 IF ( i .LE. nfsornpiv )
GOTO 10
3405 INTEGER,
INTENT(IN) :: nnmax
3434 DO WHILE ((i.GE.1).AND.
3450 & Pruned_List,nb_prun_nodes,STEP)
3452 INTEGER,
INTENT(IN) :: N, KEEP201, nb_prun_nodes
3453 INTEGER,
INTENT(IN) :: STEP(N),
3454 & Pruned_List(nb_prun_nodes)
3456 IF (keep201 .GT. 0)
THEN
3458 DO i = 1, nb_prun_nodes
3459 istep = step(pruned_list(i))
if(complex_arithmetic) id
subroutine mpi_allreduce(sendbuf, recvbuf, cnt, datatype, operation, comm, ierr)
integer function mumps_ooc_get_fct_type(fwdorbwd, mtype, k201, k50)
subroutine mumps_ooc_convert_bigintto2int(int1, int2, bigint)
subroutine mumps_ooc_init_filetype(typef_l, typef_u, typef_cb, k201, k251, k50, typef_invalid)
integer(8), dimension(:,:), pointer ooc_vaddr
integer(8), save hbuf_size
character(len=1), dimension(err_str_ooc_max_len) err_str_ooc
integer, save low_level_strat_io
logical, save strat_io_async
integer, dimension(:), pointer step_ooc
integer, public strat_write_max
integer, parameter, public typef_invalid
integer(8), dimension(:), allocatable addvirtlibre
integer, dimension(:,:), pointer ooc_inode_sequence
integer, dimension(:), pointer procnode_ooc
integer err_str_ooc_max_len
integer, dimension(:), pointer keep_ooc
subroutine zmumps_copy_lu_to_buffer(strat, typef, monbloc, afac, lafac, addvirtcour, ipivbeg, ipivend, lpaneleff, ierr)
subroutine zmumps_end_ooc_buf()
subroutine zmumps_ooc_next_hbuf(typef_arg)
subroutine zmumps_init_ooc_buf(i1, i2, ierr)
integer, dimension(:), allocatable i_cur_hbuf_nextpos
subroutine zmumps_ooc_buf_clean_pending(ierr)
subroutine zmumps_ooc_do_io_and_chbuf(typef_arg, ierr)
subroutine zmumps_ooc_copy_data_to_buffer(block, size_of_block, ierr)
subroutine zmumps_ooc_end_facto(id, ierr)
subroutine zmumps_solve_stat_reinit_panel(nsteps, keep38, keep20)
integer(8), dimension(:,:), pointer size_of_block
subroutine zmumps_get_bottom_area_space(a, la, requested_size, ptrfac, nsteps, zone, flag, ierr)
integer function zmumps_solve_is_inode_in_mem(inode, ptrfac, nsteps, a, la, ierr)
integer ooc_node_not_permuted
subroutine zmumps_get_top_area_space(a, la, requested_size, ptrfac, nsteps, zone, flag, ierr)
integer, dimension(:), allocatable req_to_zone
subroutine zmumps_ooc_update_solve_stat(inode, ptrfac, nsteps, flag)
subroutine zmumps_set_strat_io_flags(strat_io_arg, strat_io_async_arg, with_buf_arg, low_level_strat_io_arg)
integer(8), dimension(:), allocatable size_of_read
subroutine zmumps_solve_compute_read_size(zone, size, dest, pos_seq, nb_nodes, flag, ptrfac, nsteps)
integer special_root_node
subroutine zmumps_solve_modify_state_node(inode)
subroutine zmumps_solve_update_pointers(request, ptrfac, nsteps)
subroutine, public zmumps_read_ooc(dest, inode, ierr)
subroutine, public zmumps_ooc_end_solve(ierr)
integer, dimension(:), allocatable inode_to_pos
subroutine zmumps_submit_read_for_z(a, la, ptrfac, nsteps, ierr)
integer, save max_nb_nodes_for_zone
integer zmumps_elementary_data_size
subroutine zmumps_solve_prepare_pref(ptrfac, nsteps, a, la)
integer, dimension(:), allocatable ooc_state_node
integer(8), save max_size_factor_ooc
integer(8), dimension(:), allocatable read_dest
integer(8), save size_zone_req
subroutine zmumps_free_factors_for_solve(inode, ptrfac, nsteps, a, la, flag, ierr)
subroutine, public zmumps_ooc_init_solve(id)
integer(8), save size_solve_emm
integer function, public zmumps_ooc_panel_size(nnmax)
subroutine zmumps_init_fact_area_size_s(la)
integer, parameter, public typef_both_lu
subroutine, public zmumps_initiate_read_ops(a, la, ptrfac, nsteps, ierr)
subroutine zmumps_solve_try_zone_for_read(zone)
subroutine zmumps_struc_store_file_name(id, ierr)
integer(8), save fact_area_size
integer, dimension(:), pointer total_nb_ooc_nodes
integer(8), dimension(:), allocatable lrlu_solve_b
integer ooc_node_permuted
subroutine zmumps_solve_select_zone(zone)
integer used_not_permuted
integer(8), save tmp_size_fact
integer ooc_solve_type_fct
integer(8), dimension(:), allocatable posfac_solve
logical function zmumps_solve_is_end_reached()
subroutine zmumps_convert_str_to_chr_array(dest, src, nb, nb_eff)
integer(8) function zmumps_ooc_nbentries_panel_123(nfsornpiv, nnmax, size_panel, monbloc, estim)
subroutine zmumps_solve_alloc_ptr_upd_t(inode, ptrfac, keep, keep8, a, zone)
integer(8), save min_size_read
integer, save current_solve_read_zone
integer, dimension(:), allocatable pos_in_mem
subroutine zmumps_ooc_force_wrt_buf_panel(ierr)
integer, save nb_zone_req
integer ooc_node_not_in_mem
integer, dimension(:), allocatable pdeb_solve_z
integer(8), save size_zone_solve
subroutine zmumps_search_solve(addr, zone)
subroutine zmumps_ooc_clean_files(id, ierr)
subroutine, private zmumps_ooc_store_loru(strat, typef, afac, lafac, monbloc, ierr, loru_nextpiv2bewritten, loru_addvirtnodei8, lorusize_of_block, filesize, last_call)
integer, dimension(:), allocatable pos_hole_b
subroutine zmumps_ooc_skip_null_size_node()
subroutine zmumps_solve_find_zone(inode, zone, ptrfac, nsteps)
integer(8), dimension(:), allocatable lrlu_solve_t
subroutine zmumps_solve_alloc_ptr_upd_b(inode, ptrfac, keep, keep8, a, zone)
integer, dimension(:), allocatable io_req
integer, dimension(:), allocatable current_pos_b
integer, save cur_pos_sequence
subroutine, private zmumps_ooc_wrt_in_panels_loru(strat, typef, monbloc, size_panel, afac, lafac, nextpiv2bewritten, addvirtcour, tailleecrite, ierr)
subroutine zmumps_solve_zone_read(zone, a, la, ptrfac, nsteps, ierr)
subroutine, public zmumps_solve_alloc_factor_space(inode, ptrfac, keep, keep8, a, ierr)
integer, save tmp_nb_nodes
integer, dimension(:), allocatable current_pos_t
integer(8), save ooc_vaddr_ptr
subroutine zmumps_free_space_for_solve(a, la, requested_size, ptrfac, nsteps, zone, ierr)
double precision, save max_ooc_file_size
integer(8), dimension(:), allocatable lrlus_solve
subroutine zmumps_ooc_set_states_es(n, keep201, pruned_list, nb_prun_nodes, step)
subroutine zmumps_force_write_buf(ierr)
integer, dimension(:), allocatable first_pos_in_read
subroutine, public zmumps_solve_init_ooc_fwd(ptrfac, nsteps, mtype, a, la, doprefetch, ierr)
subroutine zmumps_ooc_open_files_for_solve(id)
subroutine, public zmumps_solve_init_ooc_bwd(ptrfac, nsteps, mtype, i_worked_on_root, iroot, a, la, ierr)
subroutine, public zmumps_new_factor(inode, ptrfac, keep, keep8, a, la, size, ierr)
subroutine zmumps_update_read_req_node(inode, size, dest, zone, request, pos_seq, nb_nodes, flag, ptrfac, nsteps, ierr)
integer, dimension(:), allocatable req_id
subroutine zmumps_solve_upd_node_info(inode, ptrfac, nsteps)
subroutine zmumps_ooc_clean_pending(ierr)
integer, dimension(:), allocatable read_mng
subroutine, public zmumps_ooc_io_lu_panel(strat, typefile, afac, lafac, monbloc, lnextpiv2bewritten, unextpiv2bewritten, iw, liwfac, myid, filesize, ierr, last_call)
subroutine zmumps_clean_ooc_data(id, ierr)
subroutine zmumps_read_solve_block(dest, indice, size, zone, ptrfac, nsteps, pos_seq, nb_nodes, flag, ierr)
logical function, public zmumps_is_there_free_space(inode, zone)
integer, dimension(:), allocatable pos_hole_t
integer(8), dimension(:), allocatable ideb_solve_z
integer(8), dimension(:), allocatable size_solve_z
subroutine, public zmumps_ooc_init_facto(id, maxs)
integer function zmumps_ooc_get_panel_size(hbuf_size, nnmax, k227, k50)