Skip to content

[WIP]: Diffengine extractor: DNLP solving with differentiation engine#180

Closed
Transurgeon wants to merge 7 commits into
masterfrom
diffengine-extractor-v2
Closed

[WIP]: Diffengine extractor: DNLP solving with differentiation engine#180
Transurgeon wants to merge 7 commits into
masterfrom
diffengine-extractor-v2

Conversation

@Transurgeon
Copy link
Copy Markdown
Member

Squashed 163 commits from diffengine-extractor branch. Includes:

  • DNLP (Disciplined Nonlinear Programming) framework
  • NLP solver interfaces (IPOPT, COPT, Knitro, Uno)
  • Differentiation engine with sparse Jacobian/Hessian support
  • dnlp2smooth canonicalizers for all supported atoms
  • NLP solving chain and problem reduction pipeline
  • Comprehensive NLP test suite

Description

Please include a short summary of the change.
Issue link (if applicable):

Type of change

  • New feature (backwards compatible)
  • New feature (breaking API changes)
  • Bug fix
  • Other (Documentation, CI, ...)

Contribution checklist

  • Add our license to new files.
  • Check that your code adheres to our coding style.
  • Write unittests.
  • Run the unittests and check that they’re passing.
  • Run the benchmarks to make sure your change doesn’t introduce a regression.

Squashed 163 commits from diffengine-extractor branch. Includes:
- DNLP (Disciplined Nonlinear Programming) framework
- NLP solver interfaces (IPOPT, COPT, Knitro, Uno)
- Differentiation engine with sparse Jacobian/Hessian support
- dnlp2smooth canonicalizers for all supported atoms
- NLP solving chain and problem reduction pipeline
- Comprehensive NLP test suite
…fing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 17, 2026

Benchmarks that have stayed the same:

   before           after         ratio
 [5f3d6c33]       [d1718909]
     15.0±0ms         16.1±0ms     1.08  simple_QP_benchmarks.ParametrizedQPBenchmark.time_compile_problem
      4.46±0s          4.62±0s     1.03  svm_l1_regularization.SVMWithL1Regularization.time_compile_problem
      737±0ms          762±0ms     1.03  simple_QP_benchmarks.LeastSquares.time_compile_problem
      13.1±0s          13.5±0s     1.03  finance.CVaRBenchmark.time_compile_problem
     14.5±0ms         14.9±0ms     1.03  simple_LP_benchmarks.SimpleFullyParametrizedLPBenchmark.time_compile_problem
      238±0ms          244±0ms     1.03  simple_QP_benchmarks.SimpleQPBenchmark.time_compile_problem
      321±0ms          330±0ms     1.03  gini_portfolio.Yitzhaki.time_compile_problem
      10.4±0s          10.6±0s     1.02  simple_LP_benchmarks.SimpleLPBenchmark.time_compile_problem
      1.12±0s          1.15±0s     1.02  gini_portfolio.Cajas.time_compile_problem
      902±0ms          921±0ms     1.02  simple_LP_benchmarks.SimpleScalarParametrizedLPBenchmark.time_compile_problem
      1.79±0s          1.82±0s     1.02  simple_QP_benchmarks.UnconstrainedQP.time_compile_problem
      3.25±0s          3.31±0s     1.02  quantum_hilbert_matrix.QuantumHilbertMatrix.time_compile_problem
      230±0ms          234±0ms     1.02  gini_portfolio.Murray.time_compile_problem
      284±0ms          288±0ms     1.01  slow_pruning_1668_benchmark.SlowPruningBenchmark.time_compile_problem
      138±0ms          139±0ms     1.01  high_dim_convex_plasticity.ConvexPlasticity.time_compile_problem
      1.02±0s          1.03±0s     1.01  finance.FactorCovarianceModel.time_compile_problem
      5.07±0s          5.09±0s     1.00  optimal_advertising.OptimalAdvertising.time_compile_problem
      1.59±0s          1.60±0s     1.00  tv_inpainting.TvInpainting.time_compile_problem
      4.01±0s          4.02±0s     1.00  huber_regression.HuberRegression.time_compile_problem
      21.1±0s          21.1±0s     1.00  sdp_segfault_1132_benchmark.SDPSegfault1132Benchmark.time_compile_problem
      525±0ms          517±0ms     0.99  semidefinite_programming.SemidefiniteProgramming.time_compile_problem
      725±0ms          714±0ms     0.99  matrix_stuffing.ConeMatrixStuffingBench.time_compile_problem
      284±0ms          278±0ms     0.98  matrix_stuffing.ParamSmallMatrixStuffing.time_compile_problem
      1.40±0s          1.37±0s     0.98  matrix_stuffing.ParamConeMatrixStuffing.time_compile_problem
     44.8±0ms         43.2±0ms     0.96  matrix_stuffing.SmallMatrixStuffing.time_compile_problem

Transurgeon and others added 3 commits March 18, 2026 11:33
SymbolicQuadForm is produced during Dcp2Cone canonicalization (e.g. from
sum_squares) and has the same args layout as QuadForm, so it reuses the
existing _convert_quad_form converter.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@Transurgeon Transurgeon changed the title Diffengine extractor: DNLP solving with differentiation engine [WIP]: Diffengine extractor: DNLP solving with differentiation engine Mar 26, 2026
@Transurgeon Transurgeon marked this pull request as draft March 26, 2026 03:44
Transurgeon and others added 2 commits March 26, 2026 00:07
…ve_later.py with kron benchmark

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…nverters

Adds native kron_left node for kron(C, X) and left_matmul fallback for
kron(X, C). Converts dense matmul args to sparse CSR for better performance.
Adds vstack via transpose(hstack(transpose(args))) and fixes 1D right matmul
reshape handling.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@Transurgeon
Copy link
Copy Markdown
Member Author

closing this as work is resumed in #185

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.

1 participant