Skip to content

Conversation

@Lhongpei
Copy link

@Lhongpei Lhongpei commented Nov 8, 2025

Summary

This PR introduces an optional feasibility-polishing phase that can be run after the normal PDHG solve.

What is new

  • Two new command-line flags
    --feasibility_polishing # enable the phase
    --eps_feas_polish_relative <tol> # relative tolerance (default 1e-6)

Two independent polishing loops
– Primal polish: solves a feasibility primal problem.
– Dual polish: solves an unconstrained dual feasibility problem.

If both primal polish and dual polish success, polished solutions will be saved.

Implementation details

  • New solver states primal_feas_polish_state_t and dual_feas_polish_state_t that reuse the GPU buffers already allocated for the main solver.
  • New kernels compute_primal_residual_kernel, compute_dual_residual_kernel, zero_finite_value_vectors_kernel and helper functions compute_primal_residual, compute_dual_residual.
  • New termination reason TERMINATION_REASON_FEAS_POLISH_SUCCESS.

README

  • Add new flags in the table of flags.
  • Add a subsection to introduce this new feature.

@ZedongPeng
Copy link
Collaborator

Hi @Lhongpei, thank you for the PR! Please let us know once it’s ready for review.

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