BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
mumps Namespace Reference

Enumerations

enum class  Parameter {
  SolverID , Job , MasterRank , InfoLevel ,
  ErrorAnalysis , WorkingHost , SymmetryMode , SerialReordering ,
  ParallelReordering , CompressionMode , NumRefinementSteps , MemoryRelaxation ,
  ComputeDeterminant , MemoryBudget
}
enum class  WorkspaceAction { Ladder , Cap , GiveUp }
 what the wrapper does after a workspace failure of the factorization More...

Functions

WorkspaceAction next_workspace_action (const belfem::int_t aInfoG1, const belfem::int_t aRelax, const belfem::int_t aRelaxCeiling, const belfem::int_t aBudgetSlot, const belfem::int_t aBudgetMB, const belfem::int_t aBoundMB)
 The retry policy after a factorization returned INFOG(1) = -9, -8, -17, -20 or -19, as a pure function so it can be unit-tested without a MUMPS instance.

Enumeration Type Documentation

◆ Parameter

enum class mumps::Parameter
strong
Enumerator
SolverID 
Job 
MasterRank 
InfoLevel 
ErrorAnalysis 
WorkingHost 
SymmetryMode 
SerialReordering 
ParallelReordering 
CompressionMode 
NumRefinementSteps 
MemoryRelaxation 
ComputeDeterminant 
MemoryBudget 

◆ WorkspaceAction

enum class mumps::WorkspaceAction
strong

what the wrapper does after a workspace failure of the factorization

Enumerator
Ladder 
Cap 
GiveUp 

Function Documentation

◆ next_workspace_action()

WorkspaceAction mumps::next_workspace_action ( const belfem::int_t aInfoG1,
const belfem::int_t aRelax,
const belfem::int_t aRelaxCeiling,
const belfem::int_t aBudgetSlot,
const belfem::int_t aBudgetMB,
const belfem::int_t aBoundMB )

The retry policy after a factorization returned INFOG(1) = -9, -8, -17, -20 or -19, as a pure function so it can be unit-tested without a MUMPS instance.

The MUMPS 5.9 user guide ( sec. 2.11 and the error list ): -9 and -8 ( workarrays S / IS ) ask for a larger ICNTL(14) and "may still occur" once ICNTL(23) is set; -17 and -20 ( the MPI send / reception buffers, sized from ICNTL(14) before anything else once a cap is in place ) ask for a larger ICNTL(14) only – a cap does not help them; -19 means ICNTL(23) itself cannot be met.

Parameters
aInfoG1rank-uniform INFOG(1)
aRelaxcurrent ICNTL(14) in percent
aRelaxCeilingladder ceiling for ICNTL(14)
aBudgetSlotcurrent ICNTL(23) slot ( 0 = not set )
aBudgetMBper-process budget the machine affords ( 0 = unknown )
aBoundMBMUMPS's own estimate for the factorization ( INFOG(16), or INFOG(36) under BLR; 0 = unknown )

Rules, in order: any other code -> GiveUp ( nothing to retry ) -19 -> GiveUp -17 / -20 -> Ladder below the ceiling, else GiveUp -9 / -8, slot 0, budget known and >= bound -> Cap slot 0, budget known and < bound -> GiveUp ( the machine cannot hold the estimate; a rung would ask for more ) otherwise ( slot set, or budget unknown ), relaxation below the ceiling -> Ladder relaxation at the ceiling -> GiveUp