The matrix a constraint makes

A tolerance is not an accuracy

A fixed perturbed block predicted what an inexact inner solve would do to a triangularly preconditioned saddle-point system: a two-step residual growing like the inner tolerance, a constant a few times the model's, and a step rule exact to one step on nine runs in ten. A real inner iteration under flexible GMRES delivers something else. Conjugate gradients stopped at a residual tolerance hands back errors ten to a billion times smaller than it was asked for, the outer residual follows that error with a slope near one and a constant ten to a hundred times the model's, the rule counts four runs in five — and the real solve still costs no more outer steps, while loosening it never once saved inner work.

Worth reading first: Three eigenvalues, and two are the golden ratio · The zero that is not a missing entry · A parameter that counts steps.

A square root the residual does not pay took the block upper-triangular preconditioner for a saddle-point system, which with exact solves makes every eigenvalue one in Jordan blocks of size two and lets GMRES finish in two steps, and asked what an inexact solve with the Hessian block does to it. It modelled the inexact solve as an exact solve with a perturbed block, H~=H+τH1/2EH1/2\tilde H = H + \tau H^{1/2}EH^{1/2} for a fixed EE of unit norm, so that the outer iteration was still GMRES on one operator. The Jordan pairs split by τ\sqrt\tau; the residual after two steps grew like τ\tau, because GMRES’s polynomial has a double root at one and cancels a split pair to second order; and a rule written in τ\tau alone, ⌈2log⁡(tol)/log⁡(cτ)⌉\lceil 2\log(\mathrm{tol})/\log(c\tau)\rceil with cc the two-step residual over τ\tau at one tolerance, predicted the step count within one on 228 of 234 runs.

It said plainly where the model stops. A real inner iteration returns a different error for every vector it is given, so there is no single perturbed operator, and GMRES has to become flexible GMRES, which keeps every preconditioned vector it used rather than one preconditioner. “The prediction with a sign is that with each inner solve stopped at a relative residual of τ\tau, flexible GMRES’s two-step residual still follows τ\tau rather than τ\sqrt\tau, with a constant at most three times the fixed perturbation’s, and that the step rule above predicts its count within one step on at least nine runs in ten.”

Measured on the same eighteen systems, the first clause holds once “follows τ\tau” is read correctly, and the other two fail. All three turn on the same fact: the tolerance an inner solve is stopped at is not the accuracy it delivers.

The same systems, with a real inner solve

The eighteen systems are the earlier essay’s: three shapes — twelve unknowns and five constraints, nine and six, fourteen and two — with Hessian blocks of condition number 1, 10210^2 and 10410^4 and constraint blocks of condition number 10 and 10410^4. The Schur complement is still applied exactly. The Hessian block is now solved by conjugate gradients, started from zero for every vector and stopped at the first step whose relative residual is at most τ\tau, for eleven tolerances from 10−1210^{-12} to 10−210^{-2}. The outer iteration is flexible GMRES to a relative residual of 10−1010^{-10}.

The fixed model is run through the same flexible GMRES with its one fixed perturbed block, so that both report the same quantity — the unpreconditioned residual ∥b−Kx∥/∥b∥\|b - Kx\|/\|b\| — and the only difference between them is the inner solve. Run that way the model behaves as it did under ordinary GMRES: its two-step residual grows with a slope between 0.8 and 1.5 in τ\tau on every system.

What the inner solve actually delivers

Before asking what the outer iteration does with an inner solve, it is worth asking what the inner solve does. Every application can be checked: the block is small enough to solve exactly as well, and the error of conjugate gradients’ answer can be measured in HH’s own norm, the energy norm in which the fixed model’s τ\tau is stated.

The energy error conjugate gradients actually delivered in the Hessian block, median over every application, against the residual tolerance it was stopped at, on eighteen saddle-point systemsOn 163 of 198 runs the error delivered is ten times smaller than the tolerance or more. With κ(H) = 1 the first inner step is exact and the error sits at rounding whatever the tolerance. With κ(H) = 100 and 10⁴ the delivered error moves in steps, flat across several decades of tolerance where one inner step cuts the residual past them.10⁻¹²10⁻¹⁰10⁻⁸10⁻⁶10⁻⁴10⁻²10⁻¹⁶10⁻¹⁴10⁻¹²10⁻¹⁰10⁻⁸10⁻⁶10⁻⁴10⁻²1inner tolerance τ, on the residualenergy error delivered, medianerror = toleranceκ(H) = 100κ(H) = 10⁴κ(H) = 1dashed: the error the tolerance would suggesta tolerance is a bound, not an accuracy
Fig. 1 The energy error conjugate gradients delivered in the Hessian block, median over every application in a solve, against the residual tolerance it was stopped at, on all eighteen systems. The dashed line is error equal to tolerance. With κ(H) = 1 every solve is exact; elsewhere the error moves in steps, often several decades below the line.

On the six systems with κ(H)=1\kappa(H) = 1 the Hessian is a multiple of the identity, conjugate gradients’ first step is exact, and every inner solve returns an answer correct to rounding — 6⋅10−166 \cdot 10^{-16} — whether it was asked for 10−1210^{-12} or 10−210^{-2}. Those six systems are solved by flexible GMRES in two steps at every tolerance, which is the exact preconditioner’s count. The fixed model, asked for the same τ\tau, needs seven to nine steps at 10−210^{-2}.

On the other twelve the delivered error moves in steps. The blocks have nine to fourteen unknowns, and conjugate gradients on a matrix of nn distinct eigenvalues terminates in at most nn steps in exact arithmetic; long before that a single step can cut the residual by several orders of magnitude, from just above one tolerance to far below the next. On the nine-by-six system with κ(H)=102\kappa(H) = 10^2 the delivered residual is 2⋅10−92 \cdot 10^{-9} at every tolerance from 10−810^{-8} to 10−410^{-4}: nine inner steps reach it, eight do not reach 10−410^{-4}. Across all 198 runs, the median residual delivered is ten times smaller than the tolerance or more on 140, and the energy error on 163.

This is not a property of conjugate gradients alone. A stopping test checks a quantity at discrete steps and stops at the first one that passes; the quantity at that step can be anywhere below the threshold. A tolerance that reads its own residual found the same gap in inexact Newton’s inner solves, where a forcing term set the tolerance and the work done depended on how far each inner solve overshot it. Here the overshoot is the main effect rather than a correction to it.

The case a good inner preconditioner makes

The six systems with κ(H)=1\kappa(H) = 1 look like a degenerate corner of the sweep, a block so easy that the question of inner accuracy does not arise. In a real code they are the case the inner solve is built to approach. The Hessian block of a discretised problem is not solved by unpreconditioned conjugate gradients; it is solved with a multigrid cycle or an incomplete factorisation as the inner preconditioner, and the whole point of that preconditioner is to make the block’s preconditioned spectrum cluster near one. Changing the condition number on purpose is the general statement, and a rate that does not notice the size is what a V-cycle does to it: a tenfold reduction per cycle at every grid size.

A clustered spectrum is exactly where conjugate gradients takes the largest steps. The rate the condition number predicts found the textbook bound in κ\sqrt{\kappa} to be a bound and not an estimate, and the gap between them is largest when the eigenvalues bunch: the iteration removes a cluster’s error almost at once and the next residual is far below the last. So the better the inner preconditioner, the larger the jump past any given tolerance on the step that crosses it, and the further the delivered accuracy sits from the nominal one. The extreme of that is the identity block here, where one step delivers rounding error at every tolerance.

That turns the overshoot from a curiosity of small blocks into something a solver designer has to plan for. The tolerance passed to an inner solve is a ceiling on its error, not a forecast of it, and how far below the ceiling the answer lands depends on the inner preconditioner’s quality — which is the one thing that is usually tuned independently of the outer iteration.

The residual follows the error, not its square root

The first clause of the prediction was that the outer residual would follow τ\tau and not τ\sqrt\tau — that the defective eigenvalue’s square-root sensitivity, visible in the split of the Jordan pairs, would again not reach the residual. With the tolerance replaced by the error delivered, that holds.

Flexible GMRES's relative residual after two steps against the energy error the inner solves delivered, on the twelve systems whose inner solves are not exact, beside the fixed model's lineThe fixed model's two-step residual is about 44.2 times its τ at the median. The flexible runs climb with the error at a slope near one, not one half, but sit above the model's line: the ratio is 12 at the median with κ(A) = 10 and 99 with κ(A) = 10⁴.10⁻¹⁴10⁻¹²10⁻¹⁰10⁻⁸10⁻⁶10⁻⁴10⁻²10⁻¹⁴10⁻¹²10⁻¹⁰10⁻⁸10⁻⁶10⁻⁴10⁻²1energy error delivered by the inner solvesrelative residual after two stepsκ(A) = 10κ(A) = 10⁴dashed: the fixedmodel, slope onedotted: slope one halfeach dot a system at one toleranceslope one, and a larger constant
Fig. 2 Flexible GMRES’s residual after two steps against the energy error the inner solves delivered, on the twelve systems whose inner solves are not exact. The dashed line is the fixed model’s, slope one; the dotted line has slope one half. The runs climb with slope near one and sit above the model’s line.

On eleven of the twelve systems the two-step residual climbs with a slope between 0.69 and 1.06 in the delivered error; the twelfth, where conjugate gradients delivers 2⋅10−92 \cdot 10^{-9} at most tolerances and flexible GMRES finishes in four steps regardless, has too little range to fit a slope to and gives 0.34. Nothing sits on the line of slope one half. The mechanism the earlier essay gave survives the change of iteration: a residual polynomial with a double root at one cancels each pair split by ε\sqrt{\varepsilon} to order ε\varepsilon, and flexible GMRES, which minimises the same residual over a space spanned by the preconditioned vectors it actually used, has that polynomial available whenever the first two inner solves are close enough to each other.

So the square root still stays in the spectrum. That part of the argument is about GMRES’s polynomial, and it does not care whether the perturbation came from a model or from an iteration.

A constant the model does not supply

The second clause fails, and by more than the prediction’s factor of three. The fixed model’s two-step residual is a constant times its τ\tau — between 0.5 and 360 depending on the system, 44 at the median. Divide each flexible run’s two-step residual by its own system’s model constant times the energy error the inner solves delivered, and the ratio should be about one if a real inner solve of a given accuracy costs what a fixed perturbation of that accuracy costs.

It has a median of 12 on the systems whose constraint block has κ(A)=10\kappa(A) = 10, and 99 on those with κ(A)=104\kappa(A) = 10^4, with a tenth of the runs above 160 and 2,000 respectively. Twenty-four runs of 66 sit within three of the model on the well-conditioned constraints, thirteen of 66 on the ill-conditioned ones. The figure above shows it as a band of points lying one to three decades over the model’s line, roughly parallel to it.

A real inner solve’s error is not a random perturbation. Conjugate gradients removes error fastest in the directions of HH’s extreme eigenvalues and leaves it last in the interior and lower part of the spectrum, so the error it hands back is concentrated in a few eigenvectors of HH, and it is a different few each time it is applied to a different vector. The fixed EE spreads its perturbation evenly. Which of the two the constraint block amplifies more depends on how AA couples to those eigenvectors, and the ratio’s dependence on κ(A)\kappa(A) says that the coupling matters; why it comes out at ten to a hundred, rather than at one or at a thousand, is not established here.

The rule was a fixed operator’s rule

The step rule's prediction, read in the energy error the inner solves delivered, against the outer steps flexible GMRES took, on 198 runsWithin one step on 158 of 198 runs; read in the tolerance instead, 156. Predictions above fifteen are drawn at fifteen. The misses lie both above and below the diagonal, and gather at the loosest tolerances and on κ(H) = 10⁴.24681012142468101214outer steps takensteps the rule predicts158 of 198 within onethe prediction askedfor 179shaded: within one stepthe rule is a fixed operator's rule
Fig. 3 The step rule’s prediction, with its constant read off each system’s run at τ = 10⁻⁶ and given the energy error delivered, against the outer steps flexible GMRES took. The shaded band is within one step. Predictions above fifteen are drawn at fifteen.

The third clause fails too. Read in the delivered error, the rule predicts the flexible step count within one on 158 runs of 198; read in the tolerance, as the prediction stated it, on 156. Both are about four in five, where nine in ten was predicted and the fixed model managed 228 of 234.

The misses gather where they would be expected. Thirty-one of the forty are at tolerances of 10−510^{-5} and looser, and twenty-six are on the systems with κ(H)=104\kappa(H) = 10^4, where an inner solve’s error varies most from one application to the next. Twenty-seven of them predict too many steps. The rule assumes each pair of outer steps divides the residual by the same factor cτc\tau, which is true of GMRES on a fixed operator whose spectrum sits in clusters of radius τ\sqrt\tau. Flexible GMRES on a sequence of different inner solves has no such geometric rate. A late application that happens to be accurate can finish the solve early; a loose one can stall it. The constant read off one tolerance does not carry to another, because the errors at different tolerances are not multiples of one another — they are different vectors.

The real solve costs no more

All three clauses of the prediction were about how well a model describes the real thing. The practical question is what the real thing costs, and the answer is better than the model.

Outer steps on eighteen saddle-point systems with the Hessian block solved to τ = 10⁻⁶: a fixed perturbed block under GMRES, and conjugate gradients stopped at τ under flexible GMRES12×5, κ(H) 1, κ(A) 10: 4 against 2; 12×5, κ(H) 1, κ(A) 10000: 4 against 2; 12×5, κ(H) 100, κ(A) 10: 4 against 4; 12×5, κ(H) 100, κ(A) 10000: 4 against 4; 12×5, κ(H) 10000, κ(A) 10: 4 against 4; 12×5, κ(H) 10000, κ(A) 10000: 4 against 4; 9×6, κ(H) 1, κ(A) 10: 4 against 2; 9×6, κ(H) 1, κ(A) 10000: 4 against 2; 9×6, κ(H) 100, κ(A) 10: 4 against 4; 9×6, κ(H) 100, κ(A) 10000: 4 against 4; 9×6, κ(H) 10000, κ(A) 10: 5 against 4; 9×6, κ(H) 10000, κ(A) 10000: 4 against 4; 14×2, κ(H) 1, κ(A) 10: 4 against 2; 14×2, κ(H) 1, κ(A) 10000: 4 against 2; 14×2, κ(H) 100, κ(A) 10: 4 against 4; 14×2, κ(H) 100, κ(A) 10000: 4 against 4; 14×2, κ(H) 10000, κ(A) 10: 4 against 4; 14×2, κ(H) 10000, κ(A) 10000: 4 against 4. The real inner solve takes more steps on 0 of 18.0369121512×5, κ(H) 1, κ(A) 1012×5, κ(H) 1, κ(A) 10⁴12×5, κ(H) 100, κ(A) 1012×5, κ(H) 100, κ(A) 10⁴12×5, κ(H) 10⁴, κ(A) 1012×5, κ(H) 10⁴, κ(A) 10⁴9×6, κ(H) 1, κ(A) 109×6, κ(H) 1, κ(A) 10⁴9×6, κ(H) 100, κ(A) 109×6, κ(H) 100, κ(A) 10⁴9×6, κ(H) 10⁴, κ(A) 109×6, κ(H) 10⁴, κ(A) 10⁴14×2, κ(H) 1, κ(A) 1014×2, κ(H) 1, κ(A) 10⁴14×2, κ(H) 100, κ(A) 1014×2, κ(H) 100, κ(A) 10⁴14×2, κ(H) 10⁴, κ(A) 1014×2, κ(H) 10⁴, κ(A) 10⁴outer steps to a relative residual of 10⁻¹⁰fixed perturbed blockconjugate gradients stopped at τred: the real inner solve took more stepsthe real solve costs no more
Fig. 4 Outer steps on all eighteen systems at the inner tolerance on the dial: the fixed perturbed block (ring) and conjugate gradients stopped at τ (dot, red where it took more). Turn the dial from 10⁻¹⁰ to 10⁻².

Over all 198 runs, flexible GMRES with a real inner solve takes no more outer steps than the fixed model on 181. At the median it takes the same number up to 10−610^{-6} — three to four — and fewer beyond it: four against five at 10−410^{-4}, five against seven at 10−310^{-3}, seven or eight against nine at 10−210^{-2}. The seventeen runs where it takes more are scattered through the tolerances with a cluster at the loosest. At 10−210^{-2} it takes more on seven of the eighteen systems, up to fourteen steps against nine on the nine-by-six system with both blocks ill conditioned. That is the one setting where a single bad inner solve can cost several outer steps, and it is the setting where the fixed model looked worst anyway.

The reason is the overshoot. A solve asked for 10−410^{-4} that delivers 10−910^{-9} is, for the outer iteration, a solve at 10−910^{-9}, and the outer iteration’s cost is set by what it is given.

Loosening the inner solve bought nothing

That leaves the question an inner tolerance is chosen to answer: how loose can it be before the extra outer steps cost more than the inner work saved?

Conjugate-gradient steps spent in the Hessian block over a whole solve, against the inner tolerance, medians over six systems each for κ(H) = 100 and 10⁴, with the median outer steps printedκ(H) = 100: 10⁻¹² 33.5, 10⁻¹¹ 38, 10⁻¹⁰ 37, 10⁻⁹ 44, 10⁻⁸ 46.5, 10⁻⁷ 48, 10⁻⁶ 49.5, 10⁻⁵ 48, 10⁻⁴ 48, 0.001 58, 0.01 85; κ(H) = 10000: 10⁻¹² 70, 10⁻¹¹ 69.5, 10⁻¹⁰ 73.5, 10⁻⁹ 70.5, 10⁻⁸ 72, 10⁻⁷ 67.5, 10⁻⁶ 65, 10⁻⁵ 79, 10⁻⁴ 94.5, 0.001 90, 0.01 118. On these blocks of nine to fourteen unknowns an inner solve takes nearly as many steps at a loose tolerance as at a tight one, and the outer steps a loose tolerance adds are paid for in full.10⁻¹²10⁻¹⁰10⁻⁸10⁻⁶10⁻⁴10⁻²020406080100120inner tolerance τinner steps over the whole solve, median22.54449κ(H) = 10044445.58.5κ(H) = 10⁴numbers: median outer stepsa looser inner solve bought nothing here
Fig. 5 Conjugate-gradient steps in the Hessian block over a whole solve against the inner tolerance, median over the six systems with κ(H) = 100 and the six with 10⁴; the numbers are the median outer steps. The tightest tolerance is cheapest, or within a fifth of it, on both.

On these systems, never. With κ(H)=102\kappa(H) = 10^2 the median total is 34 inner steps at 10−1210^{-12} and climbs to 85 at 10−210^{-2}; with κ(H)=104\kappa(H) = 10^4 it is 70 at 10−1210^{-12}, between 65 and 74 up to 10−610^{-6}, and 118 at 10−210^{-2}. The tightest tolerance is within a fifth of the cheapest on both, and the loosest is the dearest on both.

The arithmetic is visible in the two counts. One inner solve on a nine-to-fourteen-unknown block takes 11 to 26 steps at 10−1210^{-12} and 6 to 18 at 10−210^{-2} — a saving of about a third — while the outer iteration goes from two to four steps to eight or nine, and every outer step needs one more inner solve. A loose inner tolerance trades a third of each solve for twice as many solves.

That arithmetic belongs to small blocks. On a block of a million unknowns conjugate gradients’ steps grow like the logarithm of 1/τ1/\tau times the square root of κ(H)\kappa(H), there is no finite termination to fall into, and the trade looks different; it is the question a tolerance that reads its own residual and two forcing terms, one floor answer for Newton’s method, where the inner tolerance is chosen step by step. What the small blocks do show is that the saving a loose tolerance offers has to be measured in delivered accuracy and in total work, and that the nominal tolerance predicts neither.

What eighteen small blocks do not show

Every inner solve here starts from zero, and the Schur complement is exact. A real code would warm-start each inner solve from the previous one and approximate the Schur complement too, as a preconditioner that need not know the constraint does with the Hessian block; both would change what each application delivers. The blocks are small enough that conjugate gradients terminates, which is what makes the overshoot so large; on larger blocks the delivered error would sit closer to the tolerance, and the gap between the real solve and the fixed model would be expected to narrow. The explanation offered for the constant — that conjugate gradients’ error is concentrated in a few eigenvectors and the constraints amplify those — is consistent with the dependence on κ(A)\kappa(A) and is not tested by any measurement here. One eigenvalue and two steps and three eigenvalues, and two are the golden ratio set the exact counts all of this is measured against.

Still open: an inner error in chosen directions, and a test on delivered accuracy

Where the error lies. If the constant comes from conjugate gradients concentrating its error in a few eigenvectors of HH, a fixed model built with its perturbation in those directions should reproduce it. The prediction with a sign is that a fixed perturbation τH1/2EH1/2\tau H^{1/2}EH^{1/2} with EE supported on the eigenvectors of HH’s three smallest eigenvalues gives a two-step residual within a factor of three of flexible GMRES’s at matched energy error on at least nine of the twelve systems, where the evenly spread EE manages it on fewer than half.

Stopping on the error delivered. An inner solve can estimate its own energy error cheaply from the quantities conjugate gradients already carries. The prediction is that stopping each inner solve when that estimate falls below a target η\eta, rather than when the residual falls below τ\tau, makes the step rule — written in η\eta — count the outer steps within one on at least 180 of 198 runs, because the error each application delivers then sits within a factor of a few of the target instead of anywhere below it.

Shares its objects with

Essays that name at least two of the same things, and that neither author linked.

Named objects

A flat tag is an object no other essay names yet.

Block preconditionerConjugate gradientsFinite terminationGMRESSaddle-point systemsSchur complementStopping criterionTolerance