Basic Linear Algebra Subprograms () Avances en la Generación de Bibliotecas de Álgebra Lineal Universidad Politécnica de Valencia Marzo, 2006
Índice Qué es la biblioteca? Organización de Funcionalidad de Prestaciones de -2-3 Optimización del producto de matrices Fuentes de información
Qué es la Biblioteca? En la base de los problemas de Álgebra lineal pueden identificarse un conjunto de operaciones numéricas básicas como, por ejemplo: Cálculo de la norma de un vector, Resolución de un sistema triangular de ecuaciones, Producto de matrices, etc. (Basic Linear Algebra Subprograms) es un conjunto de núcleos (rutinas) computacionales escritos en Fortran 77 para operaciones básicas del Álgebra lineal
Qué es la Biblioteca? Las especificaciones (interfaces y funcionalidad) de los núcleos de se han convertido en estándares de facto. Ejemplo: Cálculo de la norma de un vector FUNCTION xnrm2( N, X, INCX ) Implementación de referencia http://www.netlib.org/blas
Qué es la Biblioteca? Si la mayor parte de los cálculos se realizan en forma de las operaciones del, su optimización redunda en una reducción del tiempo de la resolución de las aplicaciones Existen implementaciones de optimizadas por los propios fabricantes: ACML de AMD, Velocity Engine de Apple, libsci de Cray, MLIB de HP, ESSL de IBM, MKL de Intel, PDLIB/SX de NEC, SCSL de SGI, Sun Performance Library de SUN, etc.
Qué es la biblioteca?...aunque también existen otras implementaciones eficientes Implementación portable: ATLAS Goto para Intel Pentium/IA-64, Alpha EV, SPARC, IBM PowerPC, AMD Opteron, etc. Además, algunas implementaciones proporcionan paralelismo a nivel de threads para arquitecturas con memoria compartida (espacio de direccionamiento único): MKL de Intel Goto para Intel ATLAS, etc.
Qué es la biblioteca? constituye la interfaz entre las bibliotecas y aplicaciones numéricas de alto nivel y la arquitectura subyacente Aplicaciones Optimizaciones independientes de la arquitectura LAPACK Optimizaciones dependientes de la arquitectura Proc.
Qué es la biblioteca? define la especificación de las rutinas: Interfaz FUNCTION xnrm2( N, X, INCX ) Funcionalidad Cálculo de la norma de un vector Revisaremos la funcionalidad ofrecida por. Las interfaces de las rutinas se verán en la parte práctica
Organización de -1 Operaciones básicas sobre escalares y vectores Caracterización: O(n) cálculos sobre O(n) datos Ejemplo: Cálculo de la norma de un vector -2 Operaciones básicas de tipo matriz-vector Caracterización: O(n 2 ) cálculos sobre O(n 2 ) datos Ejemplo: Resolución de un sistema triangular de ecuaciones -3 Operaciones básicas de tipo matriz-matriz Caracterización: O(n 3 ) cálculos sobre O(n 2 ) datos Ejemplo: Producto de matrices
Funcionalidad de -1. Operandos: a R, x, y R n Operaciones de reducción Producto escalar a x T y Norma vectorial a x 2 a x i Suma Máximo a max x i Generación de transformaciones Rotaciones de Givens Operaciones vectoriales Escalado de un vector x a x AXPY y a x y Aplicación de una rotación de Givens Movimientos de datos Copia x y Intercambio x y
Funcionalidad de -2. Operandos: Producto matriz-vector a R, x R n, y R m, f A R mxn, T R nxn triangular, f M =M o M T y ya f A x Actualizaciones de rango 1(y 2) A Aayx T Resolución de sistemas triangulares lineales x f T 1 x
Funcionalidad de -3. Operandos: a,b R, f A R mxk, f B R kxn,c R mxn T R mxm triangular, f M =M o M T Producto de matrices C acb f A f ' B Actualizaciones de rango k C C af A f A T, C=C T, m=n Resolución de sistemas triangulares lineales múltiples B f T 1 B, m=k B B f T 1, m=n
Funcionalidad de Tipos de datos Simple precisión (IEEE 754 32 bits) Doble precisión (IEEE 754 64 bits) Reales Complejos
Funcionalidad de Tipos de matrices General Simétrica/ Hermitiana Triangular Densa Banda Formatos empaquetados disponibles Sólo una mitad almacenada
Prestaciones Plataforma: Procesador: Memoria: Biblioteca : Intel Xeon 2.4 GHz 512 KB de caché L2 y 1 GB de RAM Goto 0.96st Compilador: gcc 3.3.5; optimización -O3 S.O.: Linux 2.4.27 Parámetro de rendimiento: MFLOPs Velocidad pico teórica: 4800 MFLOPs
Prestaciones: -2 Qué pasa desde n=220?
Prestaciones: -2 Qué pasa desde n=220? Una matriz nxn de números en doble precisión, con n=220 ocupa 220x220x8 = 387.200 Bytes...... y la memoria caché de segundo nivel del procesador es de tamaño 512 Kbytes
Prestaciones: -3
Prestaciones: -3 Por qué 480 Mflops para dgemv y 4000 Mflops para dgemm? La justificación viene de los ratios entre cálculo (flops) y movimientos de datos (memops) dgemv: 2 n 2 n 2 flops memops =2 Necesitamos una memoria capaz de suministrar datos al procesador a la mitad de velocidad que éste realiza los cálculos! dgemm: 2 n 3 6 n 2 flops memops = n 3 A medida que crece el tamaño del problema, la velocidad de la memoria se vuelve menos importante!
Optimización del Producto de Matrices Consideraremos el producto general C = C + A B con todas las matrices cuadradas de la misma dimensión
Optimización del Producto de Matrices La operación puede implementarse de 3 formas diferentes GEPP C = C + A B GEMP C = C + A B GEPM C = C + A B
Optimización del Producto de Matrices Consideremos la implementación de GEPP C = C + A B Ésta, a su vez, puede implementarse de dos modos diferentes GEPB C = C + A B GEBP C = C + A B
Optimización del Producto de Matrices Por último, consideremos GEBP C = C + A B y supongamos que: C es m c x n, A es m c x k c y B es k c x n Las dimensiones permiten que A y sendas columnas de B y C residan en la caché Disponemos de una implementación capaz de calcular dgemv a la máxima velocidad del procesador si la matriz y los vectores residen en la caché Si A está en la caché, entonces permanece allí hasta que ya no sea necesaria
Optimización del Producto de Matrices Entonces, podemos implementar GEBP como una secuencia de dgemv C = C + A B con los siguientes costes: Cargar A (m c x k c ) en la caché: m c k c memops Cargar los pares de columnas de C y B en la caché: (m c +k c )n memops Almacenar las columnas modificadas de C en la memoria: m c n memops Calcular los productos matriz-vector: 2m c k c n flops
Optimización del Producto de Matrices Sea c m c k c ; entonces el ratio entre cálculo y movimientos de datos es de: 2c 2 n c 2 3cn Así, si c n/100, incluso si las operaciones con memoria son 10 veces más lentas que los cálculos, estas operaciones únicamente añaden un 10% de sobrecoste al total
Fuentes de Información: www, google,... Sitio en netlib: http://www.netlib.org/blas Basic Linear Algebra Subprograms Technical (T) Forum Standard, 2001: http://www.netlib.org/blas/blast-forum quick reference: http://www.netlib.org/blas/blasqr.pdf FAQs: http://www.netlib.org/blas/faq.html de referencia: http://www.netlib.org/blas/blas.tgz
Fuentes de Información: www, google,... Definición de núcleos del Álgebra lineal del -1 (http://www.acm.org/toms) R.J. Hanson, F.T. Krogh, C.L. Lawson. A proposal for standard linear algebra subprograms. ACM Signum Newsletter, 8:16, 1973. C.L. Lawson, R.J. Hanson, D. Kincaid, F.T. Krogh. Basic Linear Algebra Subprograms for FORTRAN usage. ACM TOMS, 5:308-323, 1979
Fuentes de Información: www, google,... Definición de núcleos del Álgebra lineal del -2 y -3 (http://www.acm.org/toms) J.J. Dongarra, J. Du Croz, S. Hammarling, R.J. Hanson. An extended set of FORTRAN basic linear algebra subprograms. ACM TOMS, 14:1-32, 1988 J.J. Dongarra, J. Du Croz, I.S. Duff, S. Hammarling. A set of level 3 basic linear algebra subprograms. ACM TOMS, 16:1-28, 1988
Fuentes de Información: www, google,... Implementaciones optimizadas de ATLAS: http://math-atlas.sourceforge.net/ Goto: http://www.tacc.utexas.edu/resources/software MKL de Intel: http://www.intel.com/cd/software/products/asmo-na/eng/perflib/mkl Implementación eficiente del producto de matrices: http://www.cs.utexas.edu/users/flame Laboratorio del curso