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. | |
|
strong |
|
strong |
| 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.
| aInfoG1 | rank-uniform INFOG(1) |
| aRelax | current ICNTL(14) in percent |
| aRelaxCeiling | ladder ceiling for ICNTL(14) |
| aBudgetSlot | current ICNTL(23) slot ( 0 = not set ) |
| aBudgetMB | per-process budget the machine affords ( 0 = unknown ) |
| aBoundMB | MUMPS'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