Skip to content

Add AArch64-optimized SYMV kernels #5221

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 16, 2025

Conversation

tetsuzo-usui
Copy link
Contributor

This pull request adds [SD]SYMV kernels optimized for arm64.
Previously, generic/symv_k.c has been used on arm64 systems, in which the calculation falls back to using the GEMV kernels. This approach involves accessing each matrix element twice. To address this inefficiency, I’ve implemented new kernels by using a technique analogous to those employed in the x86_64 SYMV kernels.
As shown in the graphs below, performance is improved by about 2x on the A64FX, Graviton3E, Grace, and Ampere Altra Max platforms, respectively.

image

SYMV is an important component in symmetric matrix eigenvalue computations. Consequently, this PR yields performance improvements in higher-level routines such as DSYEVD. Specifically, the execution time of DSYTRD (tridiagonalization), which is the initial step within DSYEVD, is reduced as shown in the graph.

image

@martin-frbg martin-frbg added this to the 0.3.30 milestone Apr 11, 2025
@martin-frbg martin-frbg merged commit afb6645 into OpenMathLib:develop Apr 16, 2025
86 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants