Releases: linkedin/DuaLip
DuaLip v5.0.0: GPU-Native LP Solver Rewritten in PyTorch
DuaLip v5.0.0: GPU-Native LP Solver Rewritten in PyTorch
DuaLip v5.0.0 is a complete rewrite of the solver, replacing the Spark/Scala runtime (v1.0.0–v4.0.5) with a GPU-native, pure-PyTorch implementation. This delivers major performance improvements and a simpler, composable API.
Highlights
- GPU-native solver — Significant wall-clock speedups via native CUDA execution through PyTorch. No custom C++/CUDA kernels required.
- Distributed multi-GPU support — Scales horizontally via
torch.distributed(NCCL). Communication cost depends only on the dual dimension, enabling extreme-scale problems. - Operator-centric API — Three decoupled primitives (
ObjectiveFunction,ProjectionMap,Maximizer) make it easy to define new LP formulations by implementing only a new objective; projections and the solve loop are reused. - Nesterov-accelerated gradient ascent — Includes Lipschitz-based step sizing, Jacobi preconditioning, and optional γ decay for faster convergence.
- Warm start support — Initialize from a previous dual solution for faster convergence on recurring workloads.
- MLflow integration — Track dual objective, step sizes, hyperparameters, and convergence diagnostics out of the box.
Requirements
- Python ≥ 3.10
- PyTorch ≥ 2.6.0
Breaking Changes
This is a full API redesign. The Spark/Scala API from v4.0.5 and earlier is no longer supported. See the README and examples for
migration guidance.
Contributors
Gregory Dexter, Aida Rahmattalabi, Sanjana Garg, Qingquan Song, Zhipeng Wang
v4.0.5
Changelog generated by Shipkit Changelog Gradle Plugin
4.0.5
- 2023-11-16 - 1 commit(s) by Kenneth Tay
- Bugfix for PolytopeProjection.checkOptimality. (#47)
v4.0.4
Changelog generated by Shipkit Changelog Gradle Plugin
4.0.4
- 2023-10-13 - 2 commit(s) by Kenneth Tay
- Minor update to wiki. (#45)
v4.0.2
Changelog generated by Shipkit Changelog Gradle Plugin
4.0.2
- 2023-07-25 - 1 commit(s) by Kenneth Tay
- Add spark session as an argument to a new method to run the solver. (#44)
v4.0.1
Changelog generated by Shipkit Changelog Gradle Plugin
4.0.1
- 2023-07-25 - 1 commit(s) by Kenneth Tay
- Fix bug in twoStepGradientAggregator method. (#43)
v4.0.0
Changelog generated by Shipkit Changelog Gradle Plugin
4.0.0
- 2023-07-25 - 4 commit(s) by Ayan Acharya, Borja Ocejo, Miao Cheng
- Add case classes to enforce matching problem budget data assumptions, Release DuaLip v4.0 (#42)
- order of local and global budgets got reversed in the initialization of constrained matching solver, fixing that issue (#41)
v3.0.2
Changelog generated by Shipkit Changelog Gradle Plugin
3.0.2
- 2023-06-12 - 1 commit(s) by Ayan Acharya
- No notable improvements. No pull requests (issues) were referenced from commits.
v3.0.1
Changelog generated by Shipkit Changelog Gradle Plugin
3.0.1
- 2023-06-08 - 2 commit(s) by Ayan Acharya, Kenneth Tay
- Rename preprocess/MatchingDataGenerator.scala for parity between versions. (#40)
v3.0.0
Changelog generated by Shipkit Changelog Gradle Plugin
3.0.0
- 2023-05-19 - 4 commit(s) by Ayan Acharya, Kenneth Tay
- establish parity between external and internal solver (#39)
- Update Github README to match wiki. (#35)
v2.8.1
Changelog generated by Shipkit Changelog Gradle Plugin
2.8.1
- 2023-04-19 - 1 commit(s) by Borja Ocejo
- Updated contributions.md and .gitignore (#34)