soplex icon indicating copy to clipboard operation
soplex copied to clipboard

High runtime of `_rationalLUSolver.clear()` in `SoPlexBase<R>::_changeLhsReal()`

Open FlorianPommerening opened this issue 11 months ago • 22 comments

Hi all,

we run SoPlex on relatively small LPs where we solve the same constraints with different bounds several times per second. I realize that such small LPs are a bit of a niche use case but one thing we noticed in a profile was that updating the bounds took a surprisingly long time (~14% of the total time). Most of time was spent in _rationalLUSolver.clear(). This sounds related to SYNCMODE which we had set to SYNCMODE_ONLYREAL (as well as SOLVEMODE and CHECKMODE).

We also saw a large overhead in storing the solution (SoPlexBase::_storeSolutionReal, 8% of total time) and the solve itself took much longer than with our baseline of SoPlex 3 (we are in the process of upgrading from v3 to v6, so the baseline is v3 and the version where we experience the slowdown is the latest version on the main branch here).

Can either of these overheads be avoided in some way? I'm attaching the profile in case you are interested: callgrind.out.303286.log

FlorianPommerening avatar Jul 18 '23 23:07 FlorianPommerening