Parameters for MUMPS solver

Hello everyone,

does anyone have experience using MUMPS (PetSc) with ogs?

The parameter set below does not work, i.e. ogs jumps back to the default solver.

<linear_solver>
	<name>general_linear_solver</name>
	<petsc>
		<parameters>-mat_type aij -pc_type lu -pc_factor_mat_solver_package mumps -ksp_view</parameters>
	</petsc>
</linear_solver>

Do you have any suggestions on how to correclty activate/parametrize it?

Thanks!

Best,
Tuanny

PS: Please disregard my last post “MUMPS solver - Parameters”.

Dear all,

the simulation runs with

    <linear_solver>
		<name>general_linear_solver</name>
		<petsc>
			<prefix>hc</prefix>
			<parameters>-hc_mat_type aij -hc_pc_type lu -hc_pc_factor_mat_solver_type mumps -hc_ksp_view</parameters>
		</petsc>
    </linear_solver>

This seems to be the simplest parameter combination.

Output example:

KSP Object: (hc_) 1 MPI processes
  type: gmres
	restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement
	happy breakdown tolerance 1e-30
  maximum iterations=10000, nonzero initial guess
  tolerances:  relative=1e-05, absolute=1e-50, divergence=10000.
  left preconditioning
  using PRECONDITIONED norm type for convergence test
PC Object: (hc_) 1 MPI processes
  type: lu
	out-of-place factorization
	tolerance for zero pivot 2.22045e-14
	matrix ordering: nd
	factor fill ratio given 0., needed 0.
	  Factored matrix follows:
		Mat Object: 1 MPI processes
		  type: mumps
		  rows=26874, cols=26874
		  package used to perform factorization: mumps
		  total: nonzeros=5792610, allocated nonzeros=5792610
			MUMPS run parameters:
			  SYM (matrix type):                   0 
			  PAR (host participation):            1 
			  ICNTL(1) (output for error):         6 
			  ICNTL(2) (output of diagnostic msg): 0 
			  ICNTL(3) (output for global info):   0 
			  ICNTL(4) (level of printing):        0 
			  ICNTL(5) (input mat struct):         0 
			  ICNTL(6) (matrix prescaling):        7 
			  ICNTL(7) (sequential matrix ordering):7 
			  ICNTL(8) (scaling strategy):        77 
			  ICNTL(10) (max num of refinements):  0 
			  ICNTL(11) (error analysis):          0 
			  ICNTL(12) (efficiency control):                         1 
			  ICNTL(13) (sequential factorization of the root node):  0 
			  ICNTL(14) (percentage of estimated workspace increase): 20 
			  ICNTL(18) (input mat struct):                           0 
			  ICNTL(19) (Schur complement info):                      0 
			  ICNTL(20) (RHS sparse pattern):                         0 
			  ICNTL(21) (solution struct):                            0 
			  ICNTL(22) (in-core/out-of-core facility):               0 
			  ICNTL(23) (max size of memory can be allocated locally):0 
			  ICNTL(24) (detection of null pivot rows):               0 
			  ICNTL(25) (computation of a null space basis):          0 
			  ICNTL(26) (Schur options for RHS or solution):          0 
			  ICNTL(27) (blocking size for multiple RHS):             -32 
			  ICNTL(28) (use parallel or sequential ordering):        1 
			  ICNTL(29) (parallel ordering):                          0 
			  ICNTL(30) (user-specified set of entries in inv(A)):    0 
			  ICNTL(31) (factors is discarded in the solve phase):    0 
			  ICNTL(33) (compute determinant):                        0 
			  ICNTL(35) (activate BLR based factorization):           0 
			  ICNTL(36) (choice of BLR factorization variant):        0 
			  ICNTL(38) (estimated compression rate of LU factors):   333 
			  CNTL(1) (relative pivoting threshold):      0.01 
			  CNTL(2) (stopping criterion of refinement): 1.49012e-08 
			  CNTL(3) (absolute pivoting threshold):      0. 
			  CNTL(4) (value of static pivoting):         -1. 
			  CNTL(5) (fixation for null pivots):         0. 
			  CNTL(7) (dropping parameter for BLR):       0. 
			  RINFO(1) (local estimated flops for the elimination after analysis): 
				[0] 8.52752e+08 
			  RINFO(2) (local estimated flops for the assembly after factorization): 
				[0]  7.85459e+06 
			  RINFO(3) (local estimated flops for the elimination after factorization): 
				[0]  8.52752e+08 
			  INFO(15) (estimated size of (in MB) MUMPS internal data for running numerical factorization): 
			  [0] 72 
			  INFO(16) (size of (in MB) MUMPS internal data used during numerical factorization): 
				[0] 72 
			  INFO(23) (num of pivots eliminated on this processor after factorization): 
				[0] 26874 
			  RINFOG(1) (global estimated flops for the elimination after analysis): 8.52752e+08 
			  RINFOG(2) (global estimated flops for the assembly after factorization): 7.85459e+06 
			  RINFOG(3) (global estimated flops for the elimination after factorization): 8.52752e+08 
			  (RINFOG(12) RINFOG(13))*2^INFOG(34) (determinant): (0.,0.)*(2^0)
			  INFOG(3) (estimated real workspace for factors on all processors after analysis): 5792610 
			  INFOG(4) (estimated integer workspace for factors on all processors after analysis): 261736 
			  INFOG(5) (estimated maximum front size in the complete tree): 399 
			  INFOG(6) (number of nodes in the complete tree): 1394 
			  INFOG(7) (ordering option effectively use after analysis): 5 
			  INFOG(8) (structural symmetry in percent of the permuted matrix after analysis): 100 
			  INFOG(9) (total real/complex workspace to store the matrix factors after factorization): 5792610 
			  INFOG(10) (total integer space store the matrix factors after factorization): 261736 
			  INFOG(11) (order of largest frontal matrix after factorization): 399 
			  INFOG(12) (number of off-diagonal pivots): 0 
			  INFOG(13) (number of delayed pivots after factorization): 0 
			  INFOG(14) (number of memory compress after factorization): 0 
			  INFOG(15) (number of steps of iterative refinement after solution): 0 
			  INFOG(16) (estimated size (in MB) of all MUMPS internal data for factorization after analysis: value on the most memory consuming processor): 72 
			  INFOG(17) (estimated size of all MUMPS internal data for factorization after analysis: sum over all processors): 72 
			  INFOG(18) (size of all MUMPS internal data allocated during factorization: value on the most memory consuming processor): 72 
			  INFOG(19) (size of all MUMPS internal data allocated during factorization: sum over all processors): 72 
			  INFOG(20) (estimated number of entries in the factors): 5792610 
			  INFOG(21) (size in MB of memory effectively used during factorization - value on the most memory consuming processor): 63 
			  INFOG(22) (size in MB of memory effectively used during factorization - sum over all processors): 63 
			  INFOG(23) (after analysis: value of ICNTL(6) effectively used): 0 
			  INFOG(24) (after analysis: value of ICNTL(12) effectively used): 1 
			  INFOG(25) (after factorization: number of pivots modified by static pivoting): 0 
			  INFOG(28) (after factorization: number of null pivots encountered): 0
			  INFOG(29) (after factorization: effective number of entries in the factors (sum over all processors)): 5792610
			  INFOG(30, 31) (after solution: size in Mbytes of memory used during solution phase): 65, 65
			  INFOG(32) (after analysis: type of analysis done): 1
			  INFOG(33) (value used for ICNTL(8)): 7
			  INFOG(34) (exponent of the determinant if determinant is requested): 0
			  INFOG(35) (after factorization: number of entries taking into account BLR factor compression - sum over all processors): 5792610
			  INFOG(36) (after analysis: estimated size of all MUMPS internal data for running BLR in-core - value on the most memory consuming processor): 0 
			  INFOG(37) (after analysis: estimated size of all MUMPS internal data for running BLR in-core - sum over all processors): 0 
			  INFOG(38) (after analysis: estimated size of all MUMPS internal data for running BLR out-of-core - value on the most memory consuming processor): 0 
			  INFOG(39) (after analysis: estimated size of all MUMPS internal data for running BLR out-of-core - sum over all processors): 0 
  linear system matrix = precond matrix:
  Mat Object: 1 MPI processes
	type: mpiaij
	rows=26874, cols=26874
	total: nonzeros=1054062, allocated nonzeros=1054062
	total number of mallocs used during MatSetValues calls=0
	  using I-node (on process 0) routines: found 11493 nodes, limit used is 5

Best,
Tuanny

2 Likes

This is great news! Thanks for finding out the solution. Now more interesting solvers can be used.

There is indeed some clarification needed for those prefixed petsc solver settings and which one has priority.

Hi Dima, indeed there are many options! We need to try a bit more and see where/how we can optimize the calculations. Here is a link with additional parameters:

https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MATSOLVERMUMPS.html

Thanks indeed. Now we can use a direct solver in a Petsc environment. This is great.