¿Diferencias de rendimiento entre ATLAS y MKL?


31

ATLAS es un reemplazo gratuito de BLAS / LAPACK que se sintoniza en la máquina cuando se compila. MKL es la biblioteca comercial enviada por Intel. ¿Son comparables estas dos bibliotecas cuando se trata de rendimiento, o MKL tiene la ventaja para algunas tareas? ¿De ser asi, cuales?


Respuestas:


18

MKL (de Intel) está optimizado para procesadores Intel, y probablemente tenga la "ventaja" en muchos casos. Pero también es "famoso" por elegir las "peores" rutas de código para los procesadores AMD, como se describe aquí .


13

BLAS no es monlítico. BLAS1 y BLAS2 tienen un ancho de banda de memoria limitado, y no hay mucho que pueda hacer para acelerarlos más allá de lo obvio (desenrollado de bucle, bloqueo de caché para el nivel 2). BLAS3 es más interesante y el punto de referencia prototípico aquí es la multiplicación matriz-matriz. Que yo sepa, GOTOBlas siempre ha sido el claro ganador aquí, vea, por ejemplo, esta comparación o esta y esta justificación .

Ahora es años después, y tenemos el Proyecto BLIS . Es la mejor alternativa gratuita a MKL.


44
Matt tiene razón, pero GotoBLAS ya no está en desarrollo. Todavía funciona bastante bien para algunos procesadores modernos, pero el MKL ciertamente lo superará para DGEMM en futuros procesadores si aún no lo hace. No lo hemos probado en Westmere, por ejemplo, pero no me sorprendería que GotoBLAS ya haya perdido.
Bill Barth

2
El Dr. Goto fue comprado por M $. Tristeza . . .
meawoppl

2
OpenBLAS es el proyecto de código abierto bifurcado de GotoBLAS. github.com/xianyi/OpenBLAS
ShadowWarrior

Goto trabaja en MKL ahora. No más tristeza :-)
Jeff

6

Perfil, no especules! (también funciona como "Punto de referencia, ¡no especules!" )

No hay nada genérico que se pueda decir, depende en gran medida de las tareas que desea realizar (BLAS 1/2/3, por ejemplo) y el hardware en el que se encuentra (obviamente, el Intel MKL no se ejecuta en procesadores ARM, por ejemplo). ejemplo; pero incluso entre los procesadores Intel, puede esperar diferencias de rendimiento).


Otra cosa que creo que vale la pena mencionar es que AMD también ofrece bibliotecas matemáticas adaptadas a sus procesadores, la Biblioteca AMD Core Math . No es tan rico en funciones como el MKL de Intel, pero incluye BLAS.


Cierto. Hay mucha evidencia anecdótica (y perfiles reales) para respaldar las otras respuestas aquí (como lo demuestran los enlaces). Sin embargo, su kilometraje puede variar, y siempre ayuda tener un perfil para saber que tiene razón.
Geoff Oxberry

1
Sin embargo, es molesto para el perfil, ya que el MKL es de $ 499. Sin embargo ellos no ofrecen una prueba 1 mes
Lyndon Blanca

@LyndonWhite, ¿sigue siendo así? La página de descarga parece mostrar que es gratis
Luciano

Sí, creo que ahora es gratis, veo mucha gente usándolo ahora.
Lyndon White

6

Las respuestas anteriores a esta pregunta han cubierto la mayoría de los puntos destacados, pero quiero agregar un comentario con respecto a esto:

¿MKL tiene la ventaja para algunas tareas?

El equipo de MKL está en una posición única para conocer los futuros conjuntos de instrucciones de Intel y sus implementaciones en procesadores específicos. Además, tienen acceso a simuladores de procesador patentados y hardware de preproducción que nadie fuera de Intel puede usar. Por lo tanto, MKL tiene la ventaja con respecto al grado de conocimiento sobre productos futuros y cuándo obtienen este conocimiento. Por lo tanto, no debería ser demasiado sorprendente si producen mejores implementaciones de BLAS que cualquier otra persona, al menos al principio de la vida útil de un producto con nuevas características.

Por otro lado, Intel ha sido bastante abierto sobre el conjunto de instrucciones AVX-512 y ha proporcionado el Emulador de desarrollo de software Intel® (SDE) que permite a los desarrolladores emular instrucciones AVX-512 en procesadores que no los admiten de forma nativa. Debido a esto, no será demasiado sorprendente si las implementaciones de código abierto de alta calidad de BLAS están disponibles para los procesadores Intel que admiten AVX-512 al principio de la vida útil de estos productos.

Por supuesto, cuánta diferencia hace tener información detallada sobre un procesador en particular frente a los fundamentos de los algoritmos de álgebra lineal densa no se resuelve completamente. La siguiente cita aborda este problema mejor de lo que puedo:

En teoría, no hay diferencia entre teoría y práctica. Pero, en la práctica, la hay.

Divulgación completa: trabajo para Intel.


¿Hay alguna posibilidad de tener MKL de código abierto?
Royi

¿Con qué propósito? MKL ya es gratis como en cerveza. Hay un valor educativo mucho mayor en la lectura del código fuente de BLIS. Si quieres leer el ensamblaje, prueba OpenBLAS.
Jeff

1

Creo que la principal diferencia entre las bibliotecas BLAS de proveedores y las bibliotecas BLAS de código abierto es el tiempo que tarda el código abierto en admitir las últimas funciones de hardware.

Como BLAS se usa ampliamente, es de interés para el proveedor admitir las últimas funciones de hardware. Por ejemplo, considere las extensiones vectoriales AVX de Intel que se introdujeron con el procesador "sandy-bridge" en enero de 2011. MKL tenía soporte AVX incluso antes de que la CPU estuviera disponible, pero solo recientemente ATLAS (finales de 2011) comenzó a implementar soporte para AVX .

Además, si su aplicación realmente necesita rendimiento y antes de comenzar a comparar diferentes bibliotecas BLAS o comenzar a hackear, optimice cualquier cosa: perfile su aplicación. Es común que la intuición humana no sea un predictor muy eficaz del generador de perfiles, ¡al menos sé que el mío no lo es! Entonces, en lugar de perder tiempo optimizando al azar, perfile su aplicación y aborde sistemáticamente cada cuello de botella.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.