Skip to content

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