Skip to content

Scale iterative refinement tolerance with mu#44

Draft
bodono wants to merge 1 commit into
mainfrom
adaptive-refinement-tol
Draft

Scale iterative refinement tolerance with mu#44
bodono wants to merge 1 commit into
mainfrom
adaptive-refinement-tol

Conversation

@bodono
Copy link
Copy Markdown
Collaborator

@bodono bodono commented Apr 6, 2026

Summary

  • Iterative refinement tolerance was fixed at 1e-12 throughout all IPM iterations
  • Early iterations (large mu) don't need this accuracy — IPM convergence only requires solve error = o(mu)
  • Now scales tolerance as max(atol + rtol * ||rhs||, 1e-4 * mu), so early iterations use fewer refinement steps while final iterations retain full accuracy
  • Motivated by the observation that the mu*I regularization in QTQP's KKT system makes early systems well-conditioned, so high-accuracy refinement is wasted work

Test plan

  • All SCIPY tests pass (268/268)
  • All SCIPY_DENSE tests pass (268/268)
  • All UMFPACK tests pass (268/268)
  • CI green on all platforms

IPM convergence only requires linear solve error = o(mu), but the
refinement tolerance was fixed at 1e-12 throughout. Early iterations
(large mu, well-conditioned system) were wasting refinement steps
solving far more accurately than needed.

Scale tolerance as max(atol + rtol * ||rhs||, 1e-4 * mu) so early
iterations use fewer refinement steps while final iterations retain
full accuracy.
@bodono bodono marked this pull request as draft April 8, 2026 22:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant