Repository navigation
Conversation
RISCV64_ZVL256B built DSDOT from the scalar ../generic/dot.c. Use dot_rvv.c (compiled with -DDSDOT, as RISCV64_ZVL128B already does): on the SpacemiT X100 it is 4.9x faster at n = 1024, 3.4x at n = 32768 and 13% faster at n = 4M.
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.
Summary
RISCV64_ZVL256B builds DSDOT from the scalar
../generic/dot.c. This patchswitches it to
dot_rvv.c, compiled with-DDSDOT, which RISCV64_ZVL128Balready uses. It is a one-line change in
KERNEL.RISCV64_ZVL256B.Performance
Platform: SpacemiT K3, one X100 core (2.2 GHz), single thread, GCC 15.2,
cblas_dsdotwith unit stride. Each number is the median ns per call, builtexactly from this patch:
At every size, all patched processes were faster than all develop processes.
Two earlier jobs ran the same DSDOT kernel object in a larger kernel-selection
experiment: an exploratory job and a separate confirmation job, each with
4 processes per build, alternating. They measured 4.2x, 3.4x and 1.14–1.17x.
Testing
OpenBLAS tests. The default
makegoal's tests give identical resultsbefore and after the patch: utest 141/141, extension tests 1479/1479, and all
BLAS/CBLAS tests PASSED.
Accuracy checks against a long-double reference. The result must be
within 2·n·eps·Σ|x·y| of the reference. The cases cover:
There were no failures, before or after the patch.
Disclosure: an AI coding agent (Anthropic Claude) prepared this patch, its
validation runs and this description on behalf of the account owner. All
numbers above come from archived runs on the board.