cblas_simatcopy: poor performance/avx512 instructions not supported

Abierto
#3,078 6 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
c
Área
performance

Línea de trabajo

Comienza con el archivo adjunto simat_cblas.txt y la invocación de cblas_simatcopy; después, reproduce los tiempos indicados en el Intel i9-10980XE con diferentes cantidades de hilos de OpenBLAS. Inspecciona el ensamblado generado en busca de instrucciones AVX512 y compara los resultados con un solo hilo y con varios hilos. Se considera terminado cuando se haya identificado y documentado o corregido la causa de la falta de uso de AVX512 y del mal escalado.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Good afternoon,

I was trying to compare the cblas_simatcopy routine against intel-mkl equivalent and noticed this routine is performing very poorly. I would like to understand if these performance issues were caused by me or if they are inherent to this BLAS implementation.

I've called the routine as defined in intel-mkl documentation:

cblas_simatcopy(CblasRowMajor /* row-major ordering /,
CblasTrans /
A will be transposed /,
n /
rows /,
n /
cols /,
1. /
scales the input matrix /,
src /
source matrix /,
n /
src_stride /,
n /
dst_stride */);

I performed some tests on a Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz with GCC version 9.3.1 20200408 (Red Hat 9.3.1-2).

The following sequential execution times were obtained for input matrices of size 8000x8000:
cblas_simatcopy -> 0.117561 seconds
mkl_simatcopy -> 0.047644 seconds

The performance of cblas_simatcopy seems to worsen in a multi-threaded environment (same input matrix):
2 cores -> 0.117933 seconds
4 cores -> 0.166409 seconds
8 cores -> 0.198745 seconds

The number of threads was selected using openblas_set_num_threads(num_threads).

Furthermore I've analyzed the asm file generated by cblas_simatcopy and no zmm register was found, which implies no avx512 instruction was used. My processor, however, can support avx512 instruction and so does my compiler version.

My source code follows in attachment.

Thanks in advance for any insight!

simat_cblas.txt

Lenguaje dominante
C
Estrellas
7.6k
Forks
1.7k
Merge medio
1 d 3 h
PR fusionados (30 d)
42

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de OpenMathLib/OpenBLAS

Todos los issues de OpenMathLib/OpenBLAS

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.