LAPACK'07 Avances en la Generación de Bibliotecas de Álgebra Lineal Universidad Politécnica de Valencia Marzo, 2006 Índice ¿LAPACK'07? Algunos ejemplos Sistemas lineales Valores propios Facilidad de uso Optimización Fuentes de información LAPACK'07 ¿LAPACK'07? Algunas “razones de peso” (http://www.google.com): S. Graham, M. Snir, C.A. Patterson. “Getting up to speed. The future of supercomputing”. National Research Council. 2005 High-End Computing Revitalization Task Force. “Federal plan for highend computing”. 2004 D. Rotman, P. Harding. “DOE Greenbook – Needs and directions in high-performance computing for the office of science”. 2002 LAPACK'07 ¿LAPACK'07? ¿2007? Nuevos problemas Problemas no lineales de valores propios, funciones de matrices, etc. Nuevos algoritmos LAPACK 3.0 incorpora el estado del arte en algoritmos ¡en 1999! Mejoras en velocidad, fiabilidad y coste de almacenamiento Nuevos lenguajes de programación y arquitecturas Python y Multi-cores LAPACK'07 ¿LAPACK'07? Facilidad el uso Autooptimización Portar funcionalidad de LAPACK a ScaLAPACK (memoria distribuida) LAPACK'07 Algunos Ejemplos: Sistemas Lineales Estructuras de datos recursivas para matrices densas Almacenamiento en Fortran (por columnas) 1 1 2 3 4 5 6 2 . . . 6 LAPACK'07 Algunos Ejemplos: Sistemas Lineales Estructuras de datos recursivas para matrices densas A C B D 1 2 LAPACK'07 3 4 1 A . . . 2 . . . . . . Algunos Ejemplos: Sistemas Lineales Ventajas de las estructuras de datos recursivas: Mayor velocidad y aceleración MFLOPs Tamaño problema Permite el uso de BLAS-3 para matrices simétricas empaquetadas Ajuste automático del tamaño de bloque del algoritmo al tamaño de las cachés de segundo y tercer nivel (¿?) ... El primer nivel de recursividad reduce el número de fallos de TLB LAPACK'07 Algunos Ejemplos: Sistemas Lineales Inconvenientes de las estructuras de datos recursivas: El uso de “matrices recursivas” complica la tarea del usuario de la biblioteca Solución de LAPACK'07: Realizar las transformaciones de almacenamiento por columnas a recursivo dentro de la rutina de cálculo LAPACK'07 Algunos Ejemplos: Valores Propios Cálculo de los valores propios de matrices no simétricas en LAPACK 3.0: SUBROUTINE DGEES(...) ... CALL DGEHRD(...) 14 n 3 3 ... CALL DHSEQR(...) 25 n3 ... END O n2 La rutina DHSEQR (iteración QR) ocupa el 81% del coste teórico LAPACK'07 Algunos Ejemplos: Valores Propios Plataforma: Procesador: Memoria: Bibliotecas BLAS: Compilador: S.O.: Intel Xeon 2.4 GHz 512 KB de caché L2 y 1 GB de RAM Referencia, GotoBLAS 1.00st, MKL 8.0 (Intel) y ATLAS 3.7.11st gcc 3.3.5; optimización -O3 Linux 2.4.27 Parámetro de rendimiento: MFLOPs Velocidad pico teórica: 4800 MFLOPs LAPACK'07 Algunos Ejemplos: Valores Propios LAPACK'07 Algunos Ejemplos: Valores Propios Nuevo método de cálculo de los valores propios: K. Braman, R. Byers, R. Mathias. “The Multi-Shift QR Algorithm Part I: Maintaining Well Focused Shifts and Level 3 Performance”. SIMAX, 23:929947, 2002 K. Braman, R. Byers, R. Mathias. “The Multi-Shift QR Algorithm Part II: Aggressive Early Deflation”. SIMAX, 23:948-973, 2002 Aceleración de DHSEQR entre 3 y 10 veces LAPACK'07 Facilidad de Uso Apuesta de LAPACK'07: “Since we do not believe that we can simultaneously maximize performance, memory efficiency, ease of use, reliability, and ease of maintenance, we have decided on the following strategy: Maintain one core version in Fortran 77, and provide wrappers in other languages just for the driver routines. Based on current user demand, these other languages will include Fortran 95, C,.... Matlab, Python and Mathematica...” Ventajas citadas en el párrafo LAPACK'07 Facilidad de Uso Inconvenientes: ¡Opinión personalísima! Se sigue apostando por un lenguaje, Fotran 77, con 40 años de existencia que arrastra, como principal problema, la inexistencia de rutinas para gestión de memoria dinámica (malloc/free) Se sigue apostando por un modelo de programación de una época donde la memoria era un bien muy escaso Sólo las rutinas drivers dispondrán de wrappers para otros lenguajes LAPACK'07 Optimización Apuesta de LAPACK'07: Uso de ATLAS a nivel de BLAS Extensión de las ideas de ATLAS a la elección del tamaño de bloque óptimo para las rutinas de LAPACK Ventajas: Aproximación conocida Inconvenientes: El rendimiento es muy variable, aunque suele ser subóptimo LAPACK'07 Optimización Plataforma: Procesador: Memoria: Biblioteca BLAS: Compilador: S.O.: Intel Xeon 2.4 GHz 512 KB de caché L2 y 1 GB de RAM GotoBLAS 0.96st gcc 3.3.5; optimización -O3 Linux 2.4.27 Parámetro de rendimiento: MFLOPs Velocidad pico teórica: 4800 MFLOPs LAPACK'07 Optimización LAPACK'07 Optimización Plataforma: Procesador: Memoria: Bibliotecas BLAS: Compilador: S.O.: Intel Itanium2 1.5 GHz 256 KB/4 MB de cachés L2/L3 y 1 GB de RAM Referencia, GotoBLAS 0.95st, MKL 8.0 (Intel) y ATLAS 3.7.11st icc 9.0; optimización -O3 Linux 2.4.21 Parámetro de rendimiento: MFLOPs Velocidad pico teórica: 6000 MFLOPs LAPACK'07 Optimización LAPACK'07 Fuentes de Información LAPACK working notes (http://www.netlib.org/lapack/lawns/downloads): J. Demmel, J. Dongarra. “LAPACK 2005 prospectus: Reliable and scalable software for linear algebra computations on high end computers” LAPACK'07