Repository navigation
Add correctness-gated hierarchical scaling and Diffrax comparisons - #218
Merged
Merged
Conversation
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.
Closes #204. The correctness fixture was delivered separately in #217; this change adds its opt-in scaling and solver comparison protocol.
The serial CLI varies group count, local rate/initial-condition dimension and the discovery maximum-step policy while keeping observation times fixed. Each fresh CPU worker disables persistent compilation caches and emits correctness-gated JSON with actual accepted counts, separated tracing/compilation/first/warm execution, process RSS, compiled buffer requirements, exact source/package/hardware provenance and explicit errors or censored timeouts. It measures native and external replay plus Diffrax on the same frozen Dormand–Prince mesh. Live adaptive Tsit5/Kvaerno5 and concrete SciPy/NumPy trajectory references identify their different tasks and capabilities. Diffrax adjoints support the requested AD order, including bounded scans for higher derivatives.
The optional benchmark extra, runnable guide and tiny required comparison job make the protocol reproducible without performance thresholds or publication timing claims. Protocol tests retain failures and reject invalid dimensions; clean-wheel tests copy the CLI as a test asset without adding it to the installed package.
Validation: full repository formatting/lint, strict typing, 910 core tests (2 optional skips; CPU Torch present in the rerun), 389 provider tests, strict documentation, required NumPy/JAX/CPU Torch qualification (44/52/65 cases, zero selected skips) and both clean-wheel suites (830 core cases plus provider compatibility). The exact CI smoke commands validate ten trajectory/reverse cases and Diffrax Hessian/log-determinant-gradient cases. Additional bounded runs check dimension/step scaling, coupled forward derivatives in both stiffness regimes and coupled stiff/live-adaptive log-determinant gradients. Multi-group coupled derivatives also pass. All bounded cases passed their accuracy gates; an inherited-cache probe verifies all 12 smoke cases remain uncached, and five protocol tests plus representative native/external/Diffrax derivatives pass against the built core wheel without source imports. Raw evidence is retained under
/tmp.