VORTEXM4: SYRK/SYR2K diagonal blocks are expensive with GEMM_UNROLL_MN 64
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 43/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- c
- Área
- backend, performance
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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).
- Lenguaje dominante
- C
- Estrellas
- 7.6k
- Forks
- 1.7k
- Merge medio
- 1 d 18 h
- PR fusionados (30 d)
- 46
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de OpenMathLib/OpenBLAS
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
OpenMathLib/OpenBLAS#6152 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 28/100
OpenMathLib/OpenBLAS#6151 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
VORTEXM4: s2_usable() runs RDSVL before the SME2 check (SIGILL without SME)Posiblemente ocupada @tesch1 la tomó hace 1 día. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 25/100
OpenMathLib/OpenBLAS#6150 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
OpenMathLib/OpenBLAS#6149 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
OpenMathLib/OpenBLAS#6147 ·
Los mantenedores suelen responder en 1 día
Todos los issues de OpenMathLib/OpenBLAS
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
polhenarejos/pico-fido#302 ·
-
开发板墙缺少 ESP32_S31_MOSAICOAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
espressif/esp-vision#16 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
libsdl-org/SDL#16577 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 1 día
-
halt_error adds a trailing newline for non-string input, contrary to the manualPosiblemente ocupada @Huang-404-Q la tomó hoy. Abierto
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 2 días