Skip to content

Presolve profile#2950

Open
jajhall wants to merge 29 commits into
latestfrom
presolve-profile
Open

Presolve profile#2950
jajhall wants to merge 29 commits into
latestfrom
presolve-profile

Conversation

@jajhall

@jajhall jajhall commented Apr 3, 2026

Copy link
Copy Markdown
Member

Adds profiling of presolve and enhancement of dependent equations time-out

Dependent equations time-out is still not deterministic: see #2949

@codecov

codecov Bot commented Apr 3, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 66.31130% with 158 lines in your changes missing coverage. Please review.
✅ Project coverage is 72.90%. Comparing base (249a1ea) to head (560c7aa).
⚠️ Report is 264 commits behind head on latest.

Files with missing lines Patch % Lines
highs/presolve/PresolveTimer.h 0.00% 92 Missing ⚠️
highs/presolve/HPresolve.cpp 83.80% 34 Missing ⚠️
highs/presolve/HPresolveAnalysis.cpp 68.42% 18 Missing ⚠️
highs/util/HFactor.cpp 92.06% 5 Missing ⚠️
highs/lp_data/HighsModelUtils.cpp 57.14% 3 Missing ⚠️
highs/simplex/HighsSimplexAnalysis.cpp 0.00% 3 Missing ⚠️
highs/simplex/HEkk.cpp 0.00% 2 Missing ⚠️
highs/lp_data/HighsOptions.h 75.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           latest    #2950      +/-   ##
==========================================
- Coverage   72.96%   72.90%   -0.07%     
==========================================
  Files         428      428              
  Lines      103275   102563     -712     
  Branches    16607    16495     -112     
==========================================
- Hits        75353    74771     -582     
+ Misses      27646    27516     -130     
  Partials      276      276              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@jajhall jajhall requested a review from fwesselm May 21, 2026 14:38
@jajhall

jajhall commented May 21, 2026

Copy link
Copy Markdown
Member Author

@fwesselm This is now ready for review. It mainly implements profiling for LP presolve and improvements to the dependent equations presolve rule.

However - motivated by presolving models for a client - I've also introduced the presolve_light option which switches off the expensive presolve rules.

I've also added the method HighLp::numNz, and used it wherever there was a_matrix_.numNz(), so there are quite a few small changes in a number of files.

There's some more refactoring of presolve that I want to do in order to address #3040, but I'll do that in a separate branch.

Comment thread highs/util/HFactor.cpp
} else {
// Otherwise, other entries in the pivotal column will be
// smaller than the pivot, so zero the column
zeroCol(jColPivot);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is

num_active_nz_ -= mc_count_a[jColPivot];

needed before calling zeroCol?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I would think so. Good spot!

@jajhall jajhall self-assigned this Jul 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants