La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Librería secuencial de Álgebra Lineal Densa LAPACK

Presentaciones similares


Presentación del tema: "Librería secuencial de Álgebra Lineal Densa LAPACK"— Transcripción de la presentación:

1 Librería secuencial de Álgebra Lineal Densa LAPACK
Domingo Giménez Javier Cuenca Facultad de Informática Universidad de Murcia

2 Comunicaciones: PVM, MPI
LAPACK ScaLAPACK Paso de mensajes Direccionamiento global PBLAS Independiente de la plataforma Linear Algebra Package Dependiente de la plataforma LAPACK BLACS Direccionamiento local Secuencial BLAS Comunicaciones: PVM, MPI

3 LAPACK Conjunto de rutinas para resolver problemas de los más frecuentes en álgebra lineal densa: sistemas de ecuaciones y problemas de valores propios Documentos: Implementation Guide for LAPACK UT, CS , April E. Anderson and J. Dongarra LAPACK: A Portable Linear Algebra Library for High-Performance Computers UT, CS , May E. Anderson, Z. Bai, C. Bischof, J. Demmel, J. Dongarra, J. DuCroz, A. Greenbaum, S. Hammarling, A. McKenney, D. Sorensen Programada en FORTRAN LAPACK = Linear Algebra PACKage

4 LAPACK Algoritmos orientados a bloques  Basados en BLAS Eficiencia
Portabilidad LAPACK surgió con el propósito de unificar y hacer más eficientes, robustas , precisas y funcionales dos librerías existentes con anterioriedad: EISPACK y LINPACK. El principal problema de estas librerías previas era el el patrón de acceso a los datos que seguían sus rutinas, ya que estaba basado en operaciones vectoriales de nivel 1 de BLAS. LAPACK mejoró esta ineficiencia reorganizando los algoritmos de cara a usar operaciones orientadas a bloques de matrices, con lo que aumenta la localidad de acceso a los datos, utilizando operaciones del nivel 3 de BLAS.

5 LAPACK Problemas que resuelve: Sistemas de ecuaciones lineales
Problemas de mínimos cuadrados Problemas de valores propios Problemas de valores singulares Otros: factorización de matrices, estimación del número de condición, etc.

6 LAPACK Tipos de matrices: Tipos de sistemas: Densas. Banda.
Reales y complejas. … no escasas Tipos de sistemas: Secuenciales. Memoria compartida.

7 LAPACK Tipos de rutinas: “Driver routines” – Rutinas conductoras.
Resuelve un problema. “Computational routines” – Rutinas computacionales. Realizan una tarea computacional “Auxiliary routines” – Rutinas auxiliares. Realizan una subtarea o trabajo de menor nivel. RUTINAS CONDUCTORAS: resuelven un problema completo, por ejemplo, un sistema linear de ecuaciones o el cálculo de valores propios de una matriz simétrica. RUTINAS COMPUTACIONALES: Resuelven diferentes tareas computacionales concretas, como, por ejemplo, una factorización LU. Cada rutina conductora suele estar formada por una secuencia de llamadas a rutinas computacionales. RUTINAS AUXILIARES: - Rutinas que realizan subtareas dentro de rutinas por bloques. Principalmente son implementaciones en forma de versiones sin bloques de estas mismas rutinas por bloques (por ejemplo DGETF2  LU sin bloques, dentro de DGETR LU con bloques). - Rutinas que realizan computaciones de bajo nivel requeridas frecuentemente como, por ejemplo, escalar una matriz. De cara a una mejor organización de las diferentes librerías, algunas de ellas podrían estar incluidas en futuras versiones de BLAS. - Unas pocas extensiones de BLAS tales como operaciones matriz-vector con matrices complejas. Al igual que las anteriores, también podrían incorporarse a futuras versiones de BLAS.

8 LAPACK. Tipos de rutinas
Rutinas conductoras: Para la resolución completa de problemas estándar: Sistemas de ecuaciones lineales. Problemas de valores propios. Siempre que sea posible es recomendable usar estas rutinas para resolver un problema. RUTINAS CONDUCTORAS: resuelven un problema completo, por ejemplo, un sistema linear de ecuaciones o el cálculo de valores propios de una matriz simétrica.

9 LAPACK. Tipos de rutinas
Rutinas computacionales: Realizan tareas computacionales: Factorizaciones LU y QR, reducción de matriz simétrica a tridiagonal, ... Cada rutina conductora realiza una secuencia de llamadas a las rutinas computacionales. El usuario también puede llamar en sus programas a rutinas computacionales. RUTINAS COMPUTACIONALES: Resuelven diferentes tareas computacionales concretas, como, por ejemplo, una factorización LU. Cada rutina conductora suele estar formada por una secuencia de llamadas a rutinas computacionales.

10 LAPACK. Tipos de rutinas
Rutinas auxiliares: Son rutinas que hacen operaciones de bajo nivel: Versiones no orientadas a bloques de algoritmos orientados a bloques. Computaciones de bajo nivel (escalar una matriz, generación de matriz de Householder). Extensiones de BLAS. RUTINAS AUXILIARES: - Rutinas que realizan subtareas dentro de rutinas por bloques. Principalmente son implementaciones en forma de versiones sin bloques de estas mismas rutinas por bloques (por ejemplo DGETF2  LU sin bloques, dentro de DGETR LU con bloques). - Rutinas que realizan computaciones de bajo nivel requeridas frecuentemente como, por ejemplo, escalar una matriz, calcular la norma de una matriz, generar una matriz elemental de Householder,.... De cara a una mejor organización de las diferentes librerías, algunas de ellas podrían estar incluidas en futuras versiones de BLAS. - Unas pocas extensiones de BLAS tales como operaciones matriz-vector con matrices complejas. Al igual que las anteriores, también podrían incorporarse a futuras versiones de BLAS.

11 LAPACK Formato de rutinas conductoras y computacionales: XYYZZZ
X: Tipo de datos: S : REAL D : DOUBLE PRECISION C : COMPLEX Z : DOUBLE COMPLEX YY: Tipo de matriz ZZZ: Operación: SV: sistemas de ecuaciones EV: valores propios ... YY: Tipos de matriz: [J-189 pag13] BD bidiagonal DI diagonal GB general banda GE general GT general tridiagonal ... HS upper Hessenberg SY simetrica

12 LAPACK Tipos de matrices YY (1/2): BD bidiagonal; GB general band;
GE general (i.e., unsymmetric, in some cases rectangular); GG general matrices, generalized problem (i.e., a pair of general matrices); GT general tridiagonal; HB (complex) Hermitian band; HE (complex) Hermitian; HG upper Hessenberg matrix, generalized problem (i.e a Hessenberg and a triangular matrix); HP (complex) Hermitian, packed storage; HS upper Hessenberg; OP (real) orthogonal, packed storage; OR (real) orthogonal; PB symmetric or Hermitian positive definite band; PO symmetric or Hermitian positive definite; PP symmetric or Hermitian positive definite, packed storage;

13 LAPACK Tipos de matrices YY (2/2):
PT symmetric or Hermitian positive definite tridiagonal; SB (real) symmetric band; SP symmetric, packed storage; ST (real) symmetric tridiagonal; SY symmetric; TB triangular band; TG triangular matrices, generalized problem (i.e., a pair of triangular matrices); TP triangular, packed storage; TR triangular (or in some cases quasi-triangular); TZ trapezoidal; UN (complex) unitary; UP (complex) unitary, packed storage

14 LAPACK Rutinas conductoras de resolución de ecuaciones lineales: AX = B Rutina simple: xyySV Factoriza A y sobreescribe B con X Rutina experta: xyySVX. Puede llevar a cabo otras funciones: ATX=B o AHX=B Número de condición, singularidad, ... Refina la solución y hace análisis de error. Equilibrado del sistema.

15 LAPACK. Ejemplo dgesv Ejemplo dgesv Resuelve un sistema de ecuaciones
Llamada en Fortran: call dgesv( ) En C: dgesv_( ) y se pasan las referencias a los parámetros

16 LAPACK. Ejemplo dgesv dgesv Rutina conductora de LAPACK
Resolución de un sistema de ecuaciones AX=B Llamadas: dgetrf Rutina computacional de LAPACK Factorización LU: Transforma A  LU dgetrs Resuelve el doble sistema triangular LU X = B

17 LAPACK. Ejemplo dgesv dgetrf Rutina computacional de LAPACK
Factorización LU: Transforma A  LU Llamadas en cada pasada de bucle: dgetf2 Rutina auxiliar de LAPACK Factorización LU sin bloques aplicada a determinados bloques de A dtrsm (2 veces por pasada) Rutina del nivel 3 de BLAS Resuelve un sistema triangular de ecuaciones dgemm Multiplicación de matrices

18 LAPACK. Ejemplo dgesv dgetrs Rutina computacional de LAPACK
Resuelve el doble sistema triangular LU X =B Llamadas en cada pasada de bucle: dlaswp Rutina auxiliar de LAPACK Aplica a B los intercambios de filas realizados previamente a las matrices L y U dtrsm Rutina del nivel 3 de BLAS Resuelve un sistema triangular de ecuaciones LY=B Resuelve un sistema triangular de ecuaciones UX=Y

19 LAPACK También: Valores propios no simétrico.
Descomposición en valores singulares. Valores propios simétrico generalizado. Valores propios no simétrico generalizado. Descomposición en valores singulares generalizado.

20 LAPACK. Práctica: Factorización LU por bloques
dgetf2: LU sin bloques dtrsm: sistema triangular dgemm: multiplicacion matricial Partiendo de una matriz A  Rn´n, ésta se particiona siguiendo el diagrama de la Figura 4.1, donde A00 es una submatriz b´b, A01 es una submatriz b´(n-b), A10 es una submatriz (n-b)´b y A11 es una submatriz (n-b)´(n-b). L00 y L11 son submatrices triangulares inferiores y unitarias, mientras que U00 y U11 son submatrices triangulares superiores. De manera que se puede escribir:  La ecuación 4.13 supone realizar una factorización LU en el bloque A00 de dimensiones b´b. Una vez realizado, se conocerán las matrices L00 y U00, con lo que se podrá resolver el sistema triangular superior de la ecuación 4.14 para obtener L10 y el sistema triangular inferior de la ecuación 4.15 para obtener U01. Finalmente la ecuación 4.16 se podría reformular de esta manera: con lo que ahora el problema de encontrar L11 y U11 se reduciría a realizar la factorización LU sobre la matriz A’11 de dimensiones (n-b)´(n-b), en lugar de sobre A, realizando el mismo proceso que anteriormente se aplicó sobre A (Figura 4.2). La factorización completa de A se obtendrá repitiendo este proceso un total de n/b veces, sobrescribiéndose la matriz A por L y U.

21 LAPACK. Práctica: Factorización LU por bloques
Evolución de la factorización LU por bloques sobre la matriz A, sobrescribiendola por L y U bloque a bloque en cada pasada Partiendo de una matriz A  Rn´n, ésta se particiona siguiendo el diagrama de la Figura 4.1, donde A00 es una submatriz b´b, A01 es una submatriz b´(n-b), A10 es una submatriz (n-b)´b y A11 es una submatriz (n-b)´(n-b). L00 y L11 son submatrices triangulares inferiores y unitarias, mientras que U00 y U11 son submatrices triangulares superiores. De manera que se puede escribir:  La ecuación 4.13 supone realizar una factorización LU en el bloque A00 de dimensiones b´b. Una vez realizado, se conocerán las matrices L00 y U00, con lo que se podrá resolver el sistema triangular superior de la ecuación 4.14 para obtener L10 y el sistema triangular inferior de la ecuación 4.15 para obtener U01. Finalmente la ecuación 4.16 se podría reformular de esta manera: con lo que ahora el problema de encontrar L11 y U11 se reduciría a realizar la factorización LU sobre la matriz A’11 de dimensiones (n-b)´(n-b), en lugar de sobre A, realizando el mismo proceso que anteriormente se aplicó sobre A (Figura 4.2). La factorización completa de A se obtendrá repitiendo este proceso un total de n/b veces, sobrescribiéndose la matriz A por L y U.   

22 LAPACK. Práctica: Factorización LU por bloques
Probar las rutinas proporcionadas: LU.c: factorización LU sin bloques. Almacenamiento [i][j] BLU.c: factorización LU por bloques utilizando llamadas a rutinas de BLAS y LAPACK Comparar el tiempo de ejecución de ambas rutinas: para diferentes tamaños de matriz para diferentes tamaños de bloque en BLU.c Comparar el tiempo de ejecución de estas rutinas con las correspondientes rutinas de LAPACK: dgetf2: factorización LU sin bloques dgetrf: factorización LU por bloques Comparar el tiempo de ejecución de BLU.c sustituyendo la llamada a dgemm (multiplicación de matrices de BLAS-3) por: rdgemm: una versión programada por bloques con llamadas a DGEMM para cada bloque mdgemm: una versión programada directamente de forma tradicional


Descargar ppt "Librería secuencial de Álgebra Lineal Densa LAPACK"

Presentaciones similares


Anuncios Google