270 likes | 278 Views
Symmetric Weighted Matching for Indefinite Systems. Iain Duff, RAL and CERFACS John Gilbert, MIT and UC Santa Barbara June 21, 2002. Symmetric indefinite systems: Block LDL T. Optimization, interior eigenvalues, . . . Factor A = L * D * L’ L is unit lower triangular
E N D
Symmetric Weighted Matching for Indefinite Systems Iain Duff, RAL and CERFACS John Gilbert, MIT and UC Santa Barbara June 21, 2002
Symmetric indefinite systems: Block LDLT • Optimization, interior eigenvalues, . . . • Factor A = L * D * L’ • L is unit lower triangular • D is block diagonal with small symmetric blocks
Symmetric indefinite systems: Block LDLT • Optimization, interior eigenvalues, . . . • Factor A = L * D * L’ • L is unit lower triangular • D is block diagonal with small symmetric blocks Static pivoting after preprocessing by weighted matching
TRAJ06B • optimal control (Boeing) • condest = 1.4e6 • inertia = (794, 0, 871)
TRAJ06B permuted • optimal control (Boeing) • condest = 1.4e6 • inertia = (794, 0, 871) • 794 2-by-2 pivots, 77 1-by-1 pivots
TRAJ06B factor, solve, iterative refinement • optimal control (Boeing) • condest = 1.4e6 • inertia = (794, 0, 871) • 794 2-by-2 pivots, 77 1-by-1 pivots • factor nz = 29,842 • max |L| = 550 • iterations = 2 • rel residual = 3.7e-14 • [AGL] nz = 40,589 • GESP nz = 53,512 • GEPP nz = 432,202
3 1 2 3 4 5 1 4 5 2 3 4 2 5 1 A G(A) Symmetric matrix and graph • Hollow vertex = zero diagonal element
3 1 2 3 4 5 1 4 5 2 3 4 2 5 1 A G(A) Symmetric matrix, nonsymmetric matching • Perfect matching in A = disjoint directed cycles that cover every vertex of G
Symmetric matrix, symmetric matching 3 1 2 3 4 5 1 4 5 2 3 4 2 5 1 A G(A) • Theorem (easy): Any even cycle can be converted to a set of 2-cycles without decreasing the weight of the matching
1 1 2 3 4 5 1 5 2 2 3 4 3 5 4 A G(A) What about odd cycles? • Breaking up odd cycles may decrease weight
What about odd cycles? 1 1 2 3 4 5 1 5 2 2 3 4 3 5 4 A G(A) • Breaking up odd cycles may decrease weight • Can break up odd cycles of length more than k and keep weight at least (k+1)/(k+2) times max
What about odd cycles? 1 1 2 3 4 5 1 5 2 2 3 4 3 5 4 A G(A) • Breaking up odd cycles may decrease weight • Can break up odd cycles of length more than k and keep weight at least (k+1)/(k+2) times max • But, may need to defer singular pivots
BlockPerm: Static block pivot permutation • Find nonsymmetric max weight matching (MC64) • Break up long cycles • Permute symmetrically to make pivot blocks contiguous • Permute blocks symmetrically for low fill (approx minimum degree) • Move any singular pivots to end (caused by odd cycles or structural rank deficiency) • Factor A = L*D*L’ without row/col interchanges (possibly fixing up bad pivots) • Solve, and improve solution by iterative refinement
SAWPATH • optimization (RAL) • condest = 2e17 • inertia = (776, 0, 583) • 580 2-by-2 pivots,199 1-by-1 pivots • factor nz = 5,988 • max |L| = 9e14 • iterations = 1 • rel residual = 4.4e-9 • MA57 nz = 8,355 (best u) • GESP nz = 34,060 • GEPP nz = 331,344
LASER • optimization • inertia = (1000, 2, 2000) • 1000 2-by-2 pivots,1002 1-by-1 pivots(2 singular) • factor nz = 7,563 • max |L| = 1.6 • iterations = 0 • rel residual = 6.8e-17 • GESP nz = 11,001 • GEPP nz = 10,565 (rank wrong)
DUFF320 • optimization (RAL) • inertia = (100, 120, 100) • 100 2-by-2 pivots (3 singular) • 120 1-by-1 pivots (all singular) • factor nz = 685 • max |L| = 3.4e8 • iterations = 2 • rel residual = 3.0 • MA57 nz = 2,848 • GESP nz = 1,583 • GEPP nz = 1,500 (no solve)
DUFF320, take 2: Magic permutation • optimization (RAL) • inertia = (100, 120, 100) • 100 2-by-2 pivots(none singular) • 120 1-by-1 pivots (all singular)
DUFF320, take 2: Magic permutation • optimization (RAL) • inertia = (100, 120, 100) • 100 2-by-2 pivots(none singular) • 120 1-by-1 pivots (all singular) • factor nz = 722 • max |L| = 1.0 • iterations = 0 • rel residual = 0.0
DUFF320, take 3: Identity block • optimization (RAL) • inertia = (100, 0, 220) • 100 2-by-2 pivots • 120 1-by-1 pivots • factor nz = 1907 • max |L| = 1 • iterations = 1 • rel residual = 1.7e-15 • GESP nz = 2,929 • GEPP nz = 3,554
Questions • Judicious dynamic pivoting (e.g. MA57) • Preconditioning iterative methods • Combinatorial methods to seek good block diagonal directly (high weight, well-conditioned, sparse) • Symmetric equilibration / scaling • Better fixups for poor static pivots “We’ll hope to get some boundedness from hyperbolic sines”[Burns & Demmel 2002]
Questions • Judicious dynamic pivoting (e.g. MA57) • Preconditioning iterative methods • Combinatorial methods to seek good block diagonal directly (high weight, well-conditioned, sparse) • Symmetric equilibration / scaling • Better fixups for poor static pivots “We’ll hope to get some boundedness from hyperbolic sines”[Burns & Demmel 2002]
BCSSTK24 • structures (Boeing) • condest = 6e11 • inertia = (0, 0, 3562) • no 2-by-2 pivots,3562 1-by-1 pivots • factor nz = 289,191 • max |L| = 410 • iterations = 2 • rel residual = 2.2e-16 • AGL nz = 299,000 • Cholesky nz = 289,191 • GEPP nz = 1,217,475
DUFF320, take 2: Magic permutation • optimization (RAL) • inertia = (100, 120, 100) • 100 2-by-2 pivots(none singular) • 120 1-by-1 pivots (all singular)
DUFF33 • optimization (RAL) • inertia = (9, 15, 9) • 9 2-by-2 pivots (1 singular) • 15 1-by-1 pivots (all singular) • factor nz = 62 • max |L| = 7.0e7 • iterations = 1 • rel residual = 3.0 • MA57 nz = • GESP nz = • GEPP nz =
DUFF33, take 2: Magic permutation • optimization (RAL) • inertia = (9, 15, 9) • 9 2-by-2 pivots(none singular) • 15 1-by-1 pivots (all singular) • factor nz = 51 • max |L| = 1.0 • iterations = 0 • rel residual = 0.0
DUFF33, take 2: L with magic permutation • optimization (RAL) • inertia = (9, 15, 9) • 9 2-by-2 pivots(none singular) • 15 1-by-1 pivots (all singular) • factor nz = 51 • max |L| = 1.0 • iterations = 0 • rel residual = 0.0
DUFF33, take 2: D with magic permutation • optimization (RAL) • inertia = (9, 15, 9) • 9 2-by-2 pivots(none singular) • 15 1-by-1 pivots (all singular) • factor nz = 51 • max |L| = 1.0 • iterations = 0 • rel residual = 0.0