Skip to content

v0.9.2

Choose a tag to compare

@github-actions github-actions released this 20 May 15:40
· 19 commits to master since this release

MadNLP v0.9.2

Diff since v0.9.1

Highlights: new SchurComplementKKTSystem for two-stage stochastic programs (CPU + GPU), an API cleanup so solver and wrapper internals are accessed through getter functions, and a MUMPS 5.8.x fix.

New features

  • Add SchurComplementKKTSystem for exploiting the block-arrowhead structure of two-stage stochastic programs. Reduces each Newton step to a dense nd × nd design-variable system via per-scenario eliminations. CPU variant uses Umfpack for the per-scenario blocks by default; GPU variant lives in the MadNLPGPU CUDA extension and uses batched cuDSS + strided-batched CUBLAS. (#598)

API changes

  • Solver member access is now through getter functions instead of direct field access. Downstream code that reaches into MadNLPSolver fields will need to migrate. (#497)
  • Wrapper models use getters for inner-model access. (#595)
  • solve is now re-exported from SolverCore, aligning MadNLP with the broader JuliaSmoothOptimizers ecosystem. (#601)

Fixes

  • Update MUMPS bindings for the 5.8.x ABI. (#613)

Documentation

  • Fix mu_init in the warm-start tutorial. (#607)

MadNLPGPU v0.9.0

Highlights: CUDA/CUDSS and AMDGPU are now weak dependencies, and the new Schur-complement KKT system has a GPU backend.

  • CUDA/CUDSS moved to weak deps, GPU backend code deduplicated. Installing MadNLPGPU no longer pulls CUDA on machines without it; the CUDA-specific code (LapackCUDASolver, CUDSSSolver, GPU Schur) lives in the MadNLPGPUCUDAExt extension and loads only when both CUDA.jl and CUDSS.jl are present. The AMDGPU backend follows the same pattern via MadNLPGPUAMDGPUExt. (#596)
  • GPU SchurComplementKKTSystem: batched per-scenario factorizations via cuDSS, Schur accumulation via CUBLAS strided-batched GEMM. (#598)
  • Requires MadNLP ≥ 0.9.2.

Known issue — V100 / Volta (sm_70):
CUDA Toolkit 13 dropped support for Volta GPUs. Starting at CUDA.jl v5.10 (March 2026), Pkg may resolve to a CUDA.jl that auto-selects the CUDA 13 runtime, which then fails on V100. MadNLPGPU's compat allows this. Until JuliaGPU/CUDA.jl#3134 ships in a tagged release, V100 users should pin to a CUDA 12.x toolkit by running once per environment:

using CUDA
CUDA.set_runtime_version!(v"12.9")    # any 12.x works

Alternatively, pin CUDA = "~5.9" in your project's Project.toml.


MadNLPTests v0.6.1

  • Add Schur-complement two-stage stochastic test fixtures used by MadNLP and MadNLPGPU Schur tests. (#598)

Merged pull requests:

  • Overhaul solver member access via functions (#497) (@apozharski)
  • Wrappers should use getters for nlp models meta (#595) (@apozharski)
  • Add SchurComplementKKTSystem for two-stage stochastic programs (#598) (@michel2323)
  • Revert and use function solve from SolverCore (#601) (@frapac)
  • [doc] Fix mu_init in warm-start tutorial (#607) (@frapac)
  • [Mumps] Fix the MUMPS structure for v5.8.x (#613) (@frapac)

Closed issues:

  • Documentation (#93)
  • Restoration failed when using MadNLP for ODE parameter estimation (#264)
  • Using weak dependencies (#265)
  • lost of precision in constraints using MadNLP.SparseCondensedKKTSystem? (#593)
  • Consider not exporting own solve! (#597)
  • Performance regression in v0.9.1 compared to v0.8.12 with Mumps (#602)
  • Warm-start Tutorial Appears to be Out-of-Date (#606)