Repository navigation
perf(#178): propagate D18 Haar ensemble by deterministic block action - #181
Open
marcohost33-maker wants to merge 17 commits into
Open
marcohost33-maker wants to merge 17 commits into
marcohost33-maker wants to merge 17 commits into
Conversation
marcohost33-maker
marked this pull request as ready for review
September 29, 2026 23:12
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
This branch has not been deployed
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.
Scope
Implements item 1 of #178 only: D18
initial_state_sensitivity. Resolvent/non-normality optimisation remains a separate measured follow-up.Design
propagate_block_at_time(L, B, t)alongside the trajectory primitive.Bis the Haar ensemble as RHS columns, so oneexpm_multiplyblock action replaces materialisingexpm(L*t)for larger systems.n < 512stays on the historical reference and applies the propagator column-by-column in the pre-diagnose() at d >= 8: the exponential action now propagates the trajectory — D18 and the resolvent/non-normality layers are the remaining bottlenecks #178 arithmetic order. Forced action remains available for differential tests.expm, not one per grid point.n0, the RHS column count. The sub-step norm ceiling is therefore_SUBSTEP_NORM / n_rhs; using the trajectory's one-vector ceiling would re-enter randomisedonenormestfor D18 blocks and consume globalnp.randomstate.LepResult.initial_state_backend.Regression pins
expm_multiplycall is below the n0-scaled condition-(3.13) ceiling;compute_lep_layerrecords the actual D18 backend; a selector test pins dense atn=256and action eligibility atn=1024on a zero-shift-cost fixture.Non-goals
Refs #178. The implementation intentionally reuses the failure-domain and overflow-safe norm machinery merged in #176.
Exploratory crossover check
A local single-thread-style cross-check on the same damped-Ising family used by the trajectory benchmark found a non-monotone small/medium crossover for the one-expm D18 workload: at
n=64block action was faster in that environment, atn=256dense was faster, and atn=1024block action was again clearly faster. These are not release performance claims; they are the reason auto does not reuse issue #162'sn=64trajectory threshold and instead stays conservative belown=512. A target-hardware benchmark remains follow-up evidence.