Skip to content

Schedule SuperMalloc rounds under node budgets and speed up its search - #76

Open
fpedd wants to merge 3 commits into
tests-ci-cleanupfrom
supermalloc-search
Open

fpedd wants to merge 3 commits into
tests-ci-cleanupfrom
supermalloc-search

Conversation

@fpedd

@fpedd fpedd commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

With fewer than six threads the portfolio ran only the incumbent bound and its members one after another, so the first member consumed the whole budget and machines with one to four cores solved none of the eleven challenging Minimalloc instances within 3 s. Rounds now always include the lower-bound rung and run under doubling node budgets starting at max(10k, 2n), since a single dive places all n allocations; try_solve_many reports whether a member stopped early, so an exhausted round proves its best solution optimal (or that none exists) without a second proof round. Nine of the eleven are now proved optimal on one thread in under a second each, with no regression at 8 or 14 threads, and a 128k-allocation decomposable chain proves within the default budget on one thread.

The search re-keys its candidate trees only for placements that pass the bound check and marks placed allocations with a sentinel, raising node throughput 1.1-5.8x with byte-identical search trees under the default heuristics. Decomposition buckets allocations once instead of scanning all of them per band (128k allocations took 15.6 s, now 0.26 s), members are copied once inside the worker, the reorders are built only when greedy misses the lower bound and time remains, and the deadline is checked from the first node. The sweep no longer records zero-length sections at an exit-then-enter instant, so the non-default SECTIONS sort key ('C') counts only non-empty spans. Omni does not use SuperMalloc, so its output is unchanged. The integration test checks proved optima on challenging instances instead of running a 40 s benchmark campaign. Stacked on #75.

@fpedd
fpedd force-pushed the supermalloc-search branch from 422e778 to f551109 Compare September 29, 2026 17:19
@fpedd
fpedd force-pushed the tests-ci-cleanup branch 2 times, most recently from c481893 to e64ce23 Compare September 29, 2026 21:21
@fpedd
fpedd force-pushed the supermalloc-search branch from f551109 to e1d41cc Compare September 29, 2026 21:21
@fpedd
fpedd force-pushed the supermalloc-search branch from e1d41cc to 02379be Compare October 17, 2026 11:24
@fpedd
fpedd force-pushed the supermalloc-search branch from 02379be to cfff80f Compare October 17, 2026 11:37
fpedd added 3 commits October 17, 2026 15:03
Candidate trees are re-keyed only for placements that pass the bound check, placed allocations are marked with a sentinel, and decomposition buckets allocations once. Search trees are byte-identical under the default heuristics. The sweep no longer records zero-length sections at an exit-then-enter instant, so the SECTIONS sort key ('C') now counts only non-empty spans; no default heuristic uses it.
@fpedd
fpedd force-pushed the supermalloc-search branch from cfff80f to 7facba0 Compare October 17, 2026 13:09
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