FrontISTR  6.0.0
Large-scale structural analysis program with finit element method
hecmw_mf_numeric.f90 File Reference

Go to the source code of this file.

Modules

module  hecmw_mf_numeric
 Numeric factorization (tiled multifrontal LDLt with threshold pivoting and delayed pivots) and the triangular solves, on the read-only structure of hecmw_mf_symbolic.
 

Functions/Subroutines

subroutine, public hecmw_mf_numeric::hecmw_mf_numeric_init (graph, sym, tile, blr, eta, fct)
 Estimates of the factor and stack sizes from the symbolic structure and the work space; tile is the target tile size in DOFs. With blr and eta > 0 the cluster distance cache for the admissibility test is built from the graph, capped at eta (a serial pass over the symbolic structure, identical on every rank). More...
 
subroutine, public hecmw_mf_numeric::hecmw_mf_numeric_finalize (fct)
 
subroutine, public hecmw_mf_numeric::hecmw_mf_numeric_admis_bcast (fct, root)
 Broadcast the admissibility cache from the rank that built it (the distributed driver builds the graph on the root only); bdptr is rebuilt from the per-front sizes. More...
 
subroutine, public hecmw_mf_numeric::hecmw_mf_numeric_factor (hecMAT, sym, fct, ierr)
 Factor the matrix of hecMAT in the order of sym, in LDLt mode (lower part referenced) or in LU mode when the symmetric flag is off; the mode option overrides either way. ierr is 0 on success, the permuted DOF of a zero pivot (singular matrix), -1 when the block size of hecMAT does not match the structure, or -2 when the structure is not symmetric. More...
 
subroutine, public hecmw_mf_numeric::hecmw_mf_numeric_factor_mpi (hecMAT, sym, map, fct, ierr)
 Factor the matrix with the supernodes distributed by map: every rank first factors its subtrees with the task-parallel code, then every rank of a rank set walks the upper fronts in ascending order. hecMAT may hold the matrix partially: a rank reads the rows of the own columns of its supernodes only, each block paired with its transposed partner, so a matrix reduced to those pairs (with the index arrays kept full length) factors bitwise like the replicated one. The assembly, the factorization and the storage of an upper front are distributed over its rank set by contribution row tiles (1D row distribution), the fully summed part staying with the master (the owner), which keeps the pivot sequence identical to the sequential factorization. MPI calls stay on the master thread outside the parallel regions because hecmw initializes MPI without a threading level. Sends are isend and are consumed within the phase of their front, so a rank blocked in a receive has already issued every send an earlier front needs, which makes the ascending walk deadlock free. Tags encode 16*supernode+kind, relying on a tag space larger than the MPI minimum of 32767, as every mainstream MPI provides. More...
 
subroutine, public hecmw_mf_numeric::hecmw_mf_numeric_solve (sym, fct, b, x)
 x = A^-1 b with the factor; b and x are in the original DOF numbering. The forward solve works on the row DOFs (z, indexed by frow), the backward solve on the column DOFs (xx). A front reads the b entries of its own DOFs only; the forward result of the rows beyond its pivots is kept per supernode (dval) and added by the parent, mirroring the extend-add. More...
 
subroutine, public hecmw_mf_numeric::hecmw_mf_numeric_solve_mpi (sym, map, fct, b, x)
 x = A^-1 b on the supernodes distributed by map; b and x are the replicated global vectors in the original DOF numbering. The solves of the upper fronts follow the 1D row distribution of the factorization: the master runs the fully summed sweeps, every tile owner applies its stored rows, and the forward contributions travel as row slices to the ranks holding the parent rows. In the backward substitution the running right hand side of a tile column travels along the tile owners in ascending order (a token chain), so the reduction keeps the sequential fold order and the solution stays bitwise identical to the sequential solve. The solved pivot values of the owned supernodes are summed over the ranks at the end, which is exact and order independent because every DOF is eliminated on exactly one rank. More...
 
integer(kind=8) function, public hecmw_mf_numeric::hecmw_mf_numeric_front_words (fct, s)
 Stored panel words of supernode s held on this rank (test support). More...
 
subroutine, public hecmw_mf_numeric::hecmw_mf_numeric_print (fct)
 

Variables

integer(kind=kint), parameter, public hecmw_mf_numeric::mf_blr_eta = 2
 BLR admissibility: default cluster distance threshold, a contribution tile within it of the pivot cluster is expected full rank and skips the compression attempt. More...