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?
linear-algebra
libraries
performance
intel-mkl
Stefano Borini
fuente
fuente
Respuestas:
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í .
fuente
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.
fuente
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.
fuente
Las respuestas anteriores a esta pregunta han cubierto la mayoría de los puntos destacados, pero quiero agregar un comentario con respecto a esto:
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:
Divulgación completa: trabajo para Intel.
fuente
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.
fuente