Commit f3ebc67
authored
Add iterative refinement to the GPU ADAT solve path (#1680)
Adds iterative refinement to the GPU ADAT (Schur-complement) solve path in the barrier solver
**Changes:**
- Implement a simple ADAT matvec (gpu_adat_multiply_simple) that does not rely on pre-allocated cuSPARSE descriptors
- Apply GMRES-based iterative refinement after the ADAT Cholesky solve (Hiverge proposed Richardson-style; GMRES chosen based on our experiments for better robustness)
- Improves accuracy when the diagonal scaling D becomes ill-conditioned near convergence
- Previously only the augmented-KKT path had iterative refinement; the ADAT path had none
**Motivation:**
As the barrier parameter shrinks, D spans huge magnitude ranges and the direct Cholesky solve alone can degrade. Refining the ADAT solution improves robustness on ill-conditioned LP/QP instances without affecting the SOCP path (which does not use the Schur-complement formulation).
**Benchmarks:**
- **LP Barrier (10 min)**: Optimal 32 → 34, suboptimal 3 → 4, unsolved 14 → 11. 9% geometric mean speedup.
- **QP (Maros):** All 136 problems solved (131 optimal, 5 suboptimal); previously 130 optimal, 2 suboptimal, 4 failures. 27% geometric mean speedup.
- **QCQP:** bdry3 goes from suboptimal → optimal. No performance change.
- **SOCP:** Slight differences possibly from code perturbation; this change is inactive for SOCP (Schur-complement path only).
**Acknowledgment:** This improvement was proposed by the [Hiverge](https://www.hiverge.ai/) AI discovery engine with experiments by [@kerry-hiverge](https://github.com/kerry-hiverge).
Authors:
- Rajesh Gandham (https://github.com/rg20)
Approvers:
- Chris Maes (https://github.com/chris-maes)
URL: #16801 parent bd4b8f6 commit f3ebc67
2 files changed
Lines changed: 52 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
360 | 360 | | |
361 | 361 | | |
362 | 362 | | |
363 | | - | |
| 363 | + | |
364 | 364 | | |
365 | 365 | | |
366 | 366 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1715 | 1715 | | |
1716 | 1716 | | |
1717 | 1717 | | |
| 1718 | + | |
| 1719 | + | |
| 1720 | + | |
| 1721 | + | |
| 1722 | + | |
| 1723 | + | |
| 1724 | + | |
| 1725 | + | |
| 1726 | + | |
| 1727 | + | |
| 1728 | + | |
| 1729 | + | |
| 1730 | + | |
| 1731 | + | |
| 1732 | + | |
| 1733 | + | |
| 1734 | + | |
| 1735 | + | |
| 1736 | + | |
| 1737 | + | |
1718 | 1738 | | |
1719 | 1739 | | |
1720 | 1740 | | |
| |||
2947 | 2967 | | |
2948 | 2968 | | |
2949 | 2969 | | |
| 2970 | + | |
| 2971 | + | |
| 2972 | + | |
| 2973 | + | |
| 2974 | + | |
| 2975 | + | |
| 2976 | + | |
| 2977 | + | |
| 2978 | + | |
| 2979 | + | |
| 2980 | + | |
| 2981 | + | |
| 2982 | + | |
| 2983 | + | |
| 2984 | + | |
| 2985 | + | |
| 2986 | + | |
| 2987 | + | |
| 2988 | + | |
| 2989 | + | |
| 2990 | + | |
| 2991 | + | |
| 2992 | + | |
| 2993 | + | |
| 2994 | + | |
| 2995 | + | |
| 2996 | + | |
| 2997 | + | |
| 2998 | + | |
| 2999 | + | |
| 3000 | + | |
2950 | 3001 | | |
2951 | 3002 | | |
2952 | 3003 | | |
| |||
0 commit comments