Skip to content

Vectorize Simulated Annealing - #276

Open
abussy-pasqal wants to merge 1 commit into
prerelease/v1.0from
273-vectorize-simulated-annealing
Open

abussy-pasqal wants to merge 1 commit into
prerelease/v1.0from
273-vectorize-simulated-annealing

Conversation

@abussy-pasqal

Copy link
Copy Markdown
Member

Vectorize simulated_annealing's incremental cost tracking

Maintain Qx incrementally instead of recomputing x^T Q x for every candidate flip, deriving each candidate's delta from it via _flip_deltas (moved to the shared qubosolver.utils._costs so tabu_search can reuse it too). Adds a periodic exact recompute of energy/Qx (_REFRESH_EVERY) to bound rounding drift in both the sequential and vectorized runners, and has both recompute costs exactly from the final bitstrings via Solution._update before returning.

Also preallocates the vectorized history buffer (visited_bits/ visited_energy) instead of append-then-stack, removing an extra copy and a mixed-dtype torch.stack promotion bug where only the first history entry was cast to Bitstrings's int8 dtype. Parametrizes the test suite over vectorized=True/False, skipping the non-vectorized variant for cases whose n_starts * max_iter would make it too slow.

Maintain Qx incrementally instead of recomputing x^T Q x for every
candidate flip, deriving each candidate's delta from it via
_flip_deltas (moved to the shared qubosolver.utils._costs so
tabu_search can reuse it too). Adds a periodic exact recompute of
energy/Qx (_REFRESH_EVERY) to bound rounding drift in both the
sequential and vectorized runners, and has both recompute costs
exactly from the final bitstrings via Solution._update before
returning.

Also preallocates the vectorized history buffer (visited_bits/
visited_energy) instead of append-then-stack, removing an extra copy
and a mixed-dtype torch.stack promotion bug where only the first
history entry was cast to Bitstrings's int8 dtype. Parametrizes the
test suite over vectorized=True/False, skipping the non-vectorized
variant for cases whose n_starts * max_iter would make it too slow.
@abussy-pasqal abussy-pasqal added this to the v1.0.0-alpha milestone Sep 14, 2026
@abussy-pasqal abussy-pasqal self-assigned this Sep 14, 2026
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