Skip to content

Add MadNLP pass-through fields (linear_solver, array_type, etc.)#74

Open
jack-champagne wants to merge 15 commits intomainfrom
feat/madnlp-gpu-passthroughs
Open

Add MadNLP pass-through fields (linear_solver, array_type, etc.)#74
jack-champagne wants to merge 15 commits intomainfrom
feat/madnlp-gpu-passthroughs

Conversation

@jack-champagne
Copy link
Copy Markdown
Member

@jack-champagne jack-champagne commented Apr 23, 2026

Summary

  • Re-adds pass-through fields to MadNLPOptions that were dropped during the v0.9 stub refactor:
    • linear_solver::Any = nothing — e.g. MadNLPGPU.CUDSSSolver
    • array_type::Any = nothing — e.g. CUDA.CuArray
    • kkt_system::Any = nothing — e.g. MadNLP.SparseUnreducedKKTSystem
    • cudss_ordering::Any = nothing
  • set_options! now skips fields left as nothing, so MadNLP's own defaults stand for anything the user didn't explicitly set.

Required for the MadNLPGPU / cuDSS flows. Defaults are unchanged, so CPU callers see no behavior diff.

Test plan

  • CI green (existing solver test items still pass — no call sites needed updates)

jack-champagne and others added 10 commits April 15, 2026 01:00
Sets up benchmark/ with Project.toml, .gitignore, and three @testitem
benchmarks: evaluator micro-benchmarks, Ipopt vs MadNLP comparison, and
memory scaling sweep (N × state_dim grid).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Specs for:
- Overall HarmoniqsBenchmarks.jl architecture
- Altissimo GPU benchmarks (3-way: Ipopt CPU / MadNLP-GPU / Altissimo-GPU)
- Implementation plan for DirectTrajOpt + HarmoniqsBenchmarks tasks
- Add .github/workflows/benchmark.yml that runs on PRs touching src/ or benchmark/
- Uses Pkg.add(url=...) to install HarmoniqsBenchmarks (unregistered)
- Uploads JLD2 artifacts for 90 days
- Add benchmark/README.md with run instructions
- Remove empty BenchmarkUtils.jl leftover
- Ignore Manifest.toml (regenerated on each CI run)
Uses Julia 1.11+ [sources] section to resolve:
- DirectTrajOpt from local path (parent dir)
- HarmoniqsBenchmarks from public GitHub URL

CI workflow simplified to just Pkg.instantiate (no manual Pkg.add needed).
Remove docs/superpowers/ (specs and plans) from this PR to keep the
diff focused on benchmarks and MadNLP integration. Fix stale Pkg.add
instruction in benchmark README — deps resolve via [sources] now.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The benchmark @testItems require HarmoniqsBenchmarks which is only
available in the benchmark/ project environment, not the test extras.
Filter them out so `Pkg.test()` / julia-runtest CI doesn't pick them up.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Restores pass-throughs consumed by MadNLP's MOI layer so users can select CUDSSSolver, CuArray, KKT variants, and cuDSS ordering through the MadNLPOptions struct (required for MadNLPGPU/cuDSS-on-GPU flows). set_options! now skips fields left as `nothing` so MadNLP's own defaults stand.
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 23, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@gennadiryan
Copy link
Copy Markdown
Member

I like this approach @jack-champagne; re-running tests right now. Let me think for a few mins if there's anything else we could easily include here; otherwise I say we get this merged in!

jack-champagne and others added 5 commits April 24, 2026 16:46
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
….9.1

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
benchmarks: Initial DirectTrajOpt benchmark suite (Ipopt vs MadNLP)
…t-initial"

This reverts commit 19fa68a, reversing
changes made to 9239b1a.
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.

2 participants