VORTEXM4: SYRK/SYR2K diagonal blocks are expensive with GEMM_UNROLL_MN 64
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 43/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- Active
- Stack technique
- c
- Domaine
- backend, performance
Piste de recherche
Read driver/level3/syrk_kernel.c and profile SSYRK at n = 256 to confirm the diagonal block and zero-fill costs. Compare the listed options, including the sgemm_otcopy path for trans = T; the issue does not choose an approach. Done means reducing the diagonal-block overhead and checking performance across the reported sizes and transpose modes.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
On VORTEXM4 (GEMM_UNROLL_M 64 since #6074), the generic SYRK/SYR2K driver spends much time on the diagonal blocks. driver/level3/syrk_kernel.c computes each GEMM_UNROLL_MN x GEMM_UNROLL_MN diagonal block (64 x 64 here) into a temporary buffer zeroed with GEMM_BETA and then adds one triangle into C. A sampling profile of SSYRK at n = 256, one thread, on an M4 Pro shows ssyrk_kernel_L plus sgemm_beta zero-fill at about 20% of the time, against under 10% for the SME2 compute (the rest is packing, see #6146).
Measured against Accelerate on the same machine (one thread): SSYRK 0.18x / 0.36x / 0.73x at n = 64 / 256 / 1024, 0.75-0.93x at 4096. trans = T is slower than trans = N (1074 vs 1370 GFLOPS at n = 1024).
Options:
- compute the diagonal block directly into C with a masked store (the SME2 kernels can predicate rows and columns), which needs a per-target hook in the driver;
- a smaller diagonal block for targets with a large GEMM_UNROLL_MN;
- check why the trans = T path is slower (packing of A^T with
sgemm_otcopy).
- Langage dominant
- C
- Étoiles
- 7.6k
- Forks
- 1.7k
- Merge moyen
- 1 j 18 h
- PR mergées (30 j)
- 46
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de OpenMathLib/OpenBLAS
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
OpenMathLib/OpenBLAS#6152 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 28/100
OpenMathLib/OpenBLAS#6151 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
VORTEXM4: s2_usable() runs RDSVL before the SME2 check (SIGILL without SME)Peut-être pris @tesch1 l’a pris il y a 2 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 25/100
OpenMathLib/OpenBLAS#6150 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
OpenMathLib/OpenBLAS#6149 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
OpenMathLib/OpenBLAS#6147 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de OpenMathLib/OpenBLAS
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
polhenarejos/pico-fido#302 ·
-
开发板墙缺少 ESP32_S31_MOSAICOOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
espressif/esp-vision#16 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
libsdl-org/SDL#16577 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
Les mainteneurs répondent en général sous 1 jour
-
halt_error adds a trailing newline for non-string input, contrary to the manualPeut-être pris @Huang-404-Q l’a pris aujourd’hui. Ouverte
Difficulté 1/5 1-3 heures Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 2 jours