Repository navigation
Conversation
added 3 commits
November 5, 2026 13:16
Use BLASLONG to preserve signed byte strides in the RVV complex norm kernels. Add regressions to the existing unit-test framework. Validated against pinned upstream 02f5854 with full BLAS/CBLAS suites in QEMU and on native RISC-V VLEN256 hardware.
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.
OpenBLAS supports negative NRM2 increments, and the public wrapper starts at the last logical element for such calls. Both RVV complex NRM2 kernels store the byte stride in unsigned int. A negative stride is consequently passed to a strided vector load as a large positive offset, so a two-element public DZNRM2/SCNRM2 call can fault.
Use BLASLONG for the byte stride in znrm2_vector.c and znrm2_rvv.c. Add C/Z Fortran and CBLAS regressions for negative unit, negative non-unit and positive non-unit increments. Keep the tests usable with NO_CBLAS and check result finiteness before approximate comparisons.
Local/QEMU validation used upstream
02f585444a0fba2505cfda77cc6684de008ea477, Clang 21.1.8, LP64D/32-bit BLAS integers, S/D/C/Z BLAS, pthreads with a two-thread limit, and QEMU 9.1.0:git apply --check --whitespace=error-allagainst the pinned upstream tree.BLAS was built with NO_LAPACK=1. A modern GCC RVV build and legacy C910V intrinsics have not been tested. No performance improvement is claimed.
Native RISC-V Linux validation (VLEN=256):
Native and QEMU results are separate correctness evidence; no hardware performance measurement is claimed.