Skip to content

Releases: linkedin/DuaLip

DuaLip v5.0.0: GPU-Native LP Solver Rewritten in PyTorch

25 Feb 19:36
96ef4aa

Choose a tag to compare

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

16 Nov 19:02
7f5cc02

Choose a tag to compare

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

13 Oct 19:52

Choose a tag to compare

Changelog generated by Shipkit Changelog Gradle Plugin

4.0.4

v4.0.2

25 Jul 18:19
be79666

Choose a tag to compare

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

25 Jul 18:07
b2e6e95

Choose a tag to compare

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

25 Jul 16:58
01d63ad

Choose a tag to compare

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

12 Jun 17:28

Choose a tag to compare

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

08 Jun 17:06
a1224c9

Choose a tag to compare

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

19 May 19:23
2fcb78b

Choose a tag to compare

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

19 Apr 19:43
3315fa2

Choose a tag to compare

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)