Repository navigation
Fix restricted-pointer cooperative handoffs and expand regressions - #45
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.
Optimized kernels that pass
__restrict__pointers into GLASS can reuse stale values across cooperative handoffs despite existing barriers. The original 3×3 triangular solve returns an incorrect component; related softmax/logsumexp, pivoted inverse, LDLT, eigensolver and LU-pivot paths can return wrong results, access invalid memory or diverge.Reload the affected handoffs explicitly, keeping the existing synchronization. The helper uses volatile loads for cooperating scopes and normal loads for the thread-only path. No dispatch defaults or hardware barriers are added. This covers issue #44 and related reproduced patterns.
The new regressions preserve the minimal failing kernel context alongside broader independent NumPy/SciPy checks. Generalizing the kernel initially masked all baseline failures, so both contexts remain. Coverage includes float/double, runtime and compile-time dimensions, shared/global buffers, ragged and multidimensional launches, triangle/transpose/unit flags, actual pivoting, and caller-owned trailing barriers. Banded solve, PCG and box-QP drivers now also test restricted callers at
-O3.Validation:
docs/audits/2026-10-28-restrict/.The audit records the corrected pivoted-inverse harness defect, rejected compiler-fence experiment, and remaining coverage gaps. Includes the reviewed dependency updates from #41 (theme 0.22.0) and #42 (deploy-pages 5.0.1). Holds #43 because Breathe 5 produced 84 warnings in an isolated strict docs build. The refreshed open queues contained no additional issues or PRs to integrate. No release tag is included.
Fixes #44.