solver: speed-up grounding and solve#51174
Conversation
Signed-off-by: Massimiliano Culpo <[email protected]>
Signed-off-by: Massimiliano Culpo <[email protected]>
|
Benchmarked against:
radiuss.pr.csv
|
|
Why does conduit double in solve time? |
No idea, it might be that our heuristic made things worse after this change for that specific spec. Overall, we have a few specs, including |
|
For conduit I see the opposite in solve time. Looks like performance is pretty deterministic for fixed input, just highly dependent on exact input. but I would suggest randomizing the input statements for more useful solve output, cause they typically dominate the overall time, but are pretty meaningless. |
Yes, that's what we discovered when working on #45023 For some unstable specs, slightly changing the order of input facts might change the solve time quite a bit.
Not sure what you mean here. "before" is ~2x faster than "after" in solve, but grounding improved a bit. If "before" is
I guess we can do that, though most specs are more stable than |
I think I mislabeled the first data :) |
|
So, with randomization cherry-picked, 5 jobs per concretization, and a smaller set of specs (cause it takes a long time to get results 🙂 ) : radiuss.pr.csv
The black line shows the min/max, bar shows the average |
which is skewed by outliers you've plotted ;) median would be better, or a test |
|
Running a statistical test Statistically significant improvements (3 fields):
|
|
Can we merge then? |
Speed up the concretizer, guided by the profiling results from the development version of clingo v6: - Use a positive fact `concrete(PackageNode)`, instead of `not build(PackageNode)` - Simplify construction of `condition_set` given the current set of rules Signed-off-by: Massimiliano Culpo <[email protected]>





This is another PR to speed-up the concretizer, guided by the profiling results from the development version of clingo v6:
concrete(PackageNode), instead ofnot build(PackageNode)condition_setgiven the current set of rules