Add best-fit, simulated annealing, tabu search, and telamalloc allocators#28
Merged
Conversation
…tors Four new C++ allocators exposed via nanobind with Python wrappers, registry integration, and unit tests: - BestFitAllocator: greedy placement into the smallest fitting gap among placed temporal overlaps, falling back past the last one. - SimulatedAnnealingAllocator: anneals over first-fit placement orders, swapping a peak allocation with an earlier temporal neighbor and accepting worsening moves with a cooling Metropolis probability. - TabuSearchAllocator: samples swap neighborhoods over the same orders with tabu memory and an aspiration criterion. - TelamallocAllocator: TelaMalloc-style search (Maas et al., ASPLOS 2023) adapted to minimize peak memory: phase decomposition over the temporal-overlap graph, tiered squeaky-wheel packing with min-conflict eviction, and binary search on per-phase capacity. The order-search scaffolding (initial_order, earlier_neighbors) and placement helpers (peak_of, placed_overlapping) live in greedy_base; simulated annealing and tabu search route their candidate evaluation through the existing FirstFitPlacer, and best-fit shares the placed-overlap collection with the first-fit offset search. The three search allocators release the GIL for the duration of the native search, matching greedy_many/solve_many.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Four new C++ allocators exposed via nanobind with Python wrappers,
registry integration, and unit tests:
among placed temporal overlaps, falling back past the last one.
swapping a peak allocation with an earlier temporal neighbor and
accepting worsening moves with a cooling Metropolis probability.
with tabu memory and an aspiration criterion.
2023) adapted to minimize peak memory: phase decomposition over the
temporal-overlap graph, tiered squeaky-wheel packing with
min-conflict eviction, and binary search on per-phase capacity.
The order-search scaffolding (initial_order, earlier_neighbors) and
placement helpers (peak_of, placed_overlapping) live in greedy_base;
simulated annealing and tabu search route their candidate evaluation
through the existing FirstFitPlacer, and best-fit shares the
placed-overlap collection with the first-fit offset search. The three
search allocators release the GIL for the duration of the native
search, matching greedy_many/solve_many.