Optimized Fixed-Boundary Merge Notes¶
This page records the final merge scope for the optimized non-autodiff solver work.
Final decision¶
Merge the optimized non-autodiff fixed-boundary path as the default user experience for ordinary CLI and Python usage.
Do not change these defaults in the same step:
keep parity-oriented routes available,
keep autodiff-oriented workflows available,
keep free-boundary on the current robust default controller,
do not market the merged result as a blanket VMEC2000 runtime win.
What changes on merge¶
ordinary non-autodiff fixed-boundary CLI runs use the optimized controller automatically,
ordinary non-autodiff Python fixed-boundary runs do the same,
accelerated finishes accept only when the requested final-stage
FTOLis satisfied throughfsqr,fsqz, andfsql,staged and symmetry-sensitive fixed-boundary cases keep the more conservative handoff/follow-up logic that proved reliable on the bundled matrix,
free-boundary performance improvements are included, but free-boundary does not switch to the accelerated controller by default.
Final branch-head evidence¶
Local validation on the final merge head:
pytest -qcompleted successfully:186 passed, 12 skipped, 58 warnings,SPHINX_FAST=1 LC_ALL=C LANG=C python -m sphinx -W -j auto -b html docs docs/_build/html_fastcheckpassed.
Fresh final-head artifacts:
fixed-boundary optimized readiness:
outputs/readiness_fixed_all_20260313/summary.jsonfixed-boundary VMEC2000-vs-optimized warmed runtime matrix:
outputs/fixed_runtime_vmec2000_accel_cpu_warm_20260313/summary.jsonfree-boundary VMEC2000-vs-default warmed runtime matrix:
outputs/free_runtime_vmec2000_cpu_warm_20260313/summary.json
Key results from those artifacts:
fixed-boundary optimized path converged on all 16 bundled cases,
fixed-boundary optimized path is faster on 13 of 16 cases, effectively neutral on 1, and slower on 2,
all 21 shipped
vmec_jaxrows in the final VMEC2000 runtime matrix converged,free-boundary DIII-D remains much slower than VMEC2000 on CPU, but the branch still improved the robust default path materially (for example
DIII-D_lasym_falseis down to about113.78swarmed on the same host, versus the earlier~174sbranch checkpoint).
Representative fixed-boundary before/after points¶
Before = old default fixed-boundary controller on the same final head. After = optimized controller that becomes the ordinary non-autodiff default.
ITERModel:8.86s->4.48sLandremanPaul2021_QA_reactorScale_lowres:47.17s->45.52sLandremanSenguptaPlunk_section5p3_low_res:15.86s->7.48sup_down_asymmetric_tokamak:24.58s->2.97s
Scope boundary¶
This merge is about the default non-autodiff fixed-boundary user path.
It is not a claim that:
accelerated free-boundary is ready to be the default controller,
the merged code is broadly faster than VMEC2000 on same-host CPU,
parity-oriented or autodiff-oriented workflows should be removed or hidden.
Reviewer checklist¶
Confirm the default-path scope:
git diff main...HEAD -- vmec_jax/driver.py vmec_jax/cli.py README.md
Confirm the main local gates:
pytest -q SPHINX_FAST=1 LC_ALL=C LANG=C python -m sphinx -W -j auto -b html docs docs/_build/html_fastcheck
Inspect the final artifacts if needed:
outputs/readiness_fixed_all_20260313/summary.jsonoutputs/fixed_runtime_vmec2000_accel_cpu_warm_20260313/summary.jsonoutputs/free_runtime_vmec2000_cpu_warm_20260313/summary.json