Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porMiguel Robles Figueroa Modificado hace 6 años
1
Librerías secuenciales de Álgebra Lineal Densa: BLAS y LAPACK
Domingo Giménez Departamento de Informática y Sistemas Universidad de Murcia, Spain dis.um.es/~domingo 18 de noviembre de de noviembre de 2018 Universidad Politécnica de Valencia
2
Universidad Politécnica de Valencia
Contenido Jerarquía de librerías Obteniendo información Algoritmos por bloques BLAS LAPACK Otras librerías 18 de noviembre de 2018 Universidad Politécnica de Valencia
3
Jerarquía de librerías
ScaLAPACK Paso de mensajes Direccionamiento global PBLAS Independiente de la plataforma Dependiente de la plataforma LAPACK BLACS Secuencial Direccionamiento local BLAS Comunicaciones: PVM, MPI 18 de noviembre de 2018 Universidad Politécnica de Valencia
4
Jerarquía de librerías: historia
ScaLAPACK 1994 PRISM LAPACK2 Templates 1995 PBLAS 1994 Templates LAPACK 1987 BLACS 1991 LINPACK 1979 EISPACK 1974 BLAS BLAS3 1990 Comunicaciones: PVM, MPI 1993 Rutinas de comunicación específicas 18 de noviembre de 2018 Universidad Politécnica de Valencia
5
Jerarquía de librerías: extensión
PDE Solver Least Square Problem Inverse Eigenvalue Problem Se puede extender la jerarquía resolviendo problemas de alto coste computacional. Necesarios algoritmos eficientes en sistemas de altas prestaciones. ScaLAPACK PBLAS LAPACK BLACS BLAS Comunicaciones 18 de noviembre de 2018 Universidad Politécnica de Valencia
6
Obteniendo información
18 de noviembre de 2018 Universidad Politécnica de Valencia
7
Algoritmos por bloques
En vez de realizar operaciones elemento a elemento realizarlas con bloques de elementos: menos accesos a memoria para el mismo volumen de computación menor tiempo de ejecución. Técnica utilizada desde los años 80. Se utiliza en LAPACK para obtener rutinas eficientes independientemente del sistema donde se ejecuten. 18 de noviembre de 2018 Universidad Politécnica de Valencia
8
Algoritmos por bloques
Multiplicación de matrices (en SUN Ultra 1): Método\tamaño Normal Traspuesta Bloques Bloq tras Almac blo Bl tr al bl Bloq dob 18 de noviembre de 2018 Universidad Politécnica de Valencia
9
Algoritmos por bloques
Las prestaciones de los distintos algoritmos varían con: Tamaño del problema Parámetros del algoritmo Sistema en que se ejecuta Forma de la matriz … 18 de noviembre de 2018 Universidad Politécnica de Valencia
10
Algoritmos por bloques
Necesario: Aprender a usar librerías eficientes Aprender a desarrollar algoritmos por bloques Desarrollar técnicas de autooptimización, que seleccionen el algoritmo y los parámetros a usar, para obtener buenas prestaciones independiente de: El sistema donde se ejecuta Las condiciones actuales del sistema Los conocimientos del usuario 18 de noviembre de 2018 Universidad Politécnica de Valencia
11
Algoritmos por bloques
mult(a,fa,ca,lda,b,fb,cb,ldb,c,fc,cc,ldc) double *a; int fa,ca,lda; double *b; int fb,cb,ldb; double *c; int fc,cc,ldc; { int i,j,k; double s; for(i=0;i<fa;i++) for(j=0;j<cb;j++) { s=0.; for(k=0;k<ca;k++) s+=a[i*lda+k]*b[k*ldb+j]; c[i*ldc+j]=s; } Algoritmo sin bloques (normal). Acceso elemento a elemento. Problemas pequeños buenas prestaciones pues caben en memoria de niveles bajos de la jerarquía. Problemas grandes peores prestaciones. 18 de noviembre de 2018 Universidad Politécnica de Valencia
12
Algoritmos por bloques
multbloques(a,fa,ca,lda,b,fb,cb,ldb,c,fc,cc,ldc,tb) double *a; int fa,ca,lda; double *b; int fb,cb,ldb; double *c; int fc,cc,ldc, tb; { int i,j,k; double *s; s=(double *) malloc(sizeof(double)* tb * tb); for(i=0;i<fa;i=i+ tb) for(j=0;j<cb;j=j+ tb) { ceros(s, tb, tb, tb); for(k=0;k<ca;k=k+ tb) multsumar(&a[i*lda+k], tb, tb,lda,&b[k*ldb+j], tb, tb,ldb,s, tb, tb, tb); copiar(s, tb, tb, tb,&c[i*ldc+j], tb, tb,ldc); } free(s); Algoritmo por bloques. Acceso y operaciones por bloques . Buenas prestaciones independiente del tamaño. El tamaño de bloque es parámetro a determinar. 18 de noviembre de 2018 Universidad Politécnica de Valencia
13
Algoritmos por bloques
k tb tb j j B C tb k i s 18 de noviembre de 2018 Universidad Politécnica de Valencia
14
Algoritmos por bloques
multbloquesgrandes(a,fa,ca,lda,b,fb,cb,ldb,c,fc,cc,ldc,tb,tbp) double *a; int fa,ca,lda; double *b; int fb,cb,ldb; double *c; int fc,cc,ldc, tb, tbp; { int i,j,k; double *s; s=(double *) malloc(sizeof(double)* tb * tb); for(i=0;i<fa;i=i+ tb) for(j=0;j<cb;j=j+ tb) { ceros(s, tb, tb, tb); for(k=0;k<ca;k=k+ tb) multsumarbloques(&a[i*lda+k], tb, tb,lda,&b[k*ldb+j], tb, tb,ldb,s, tb, tb, tb, tbp); copiar(s, tb, tb, tb,&c[i*ldc+j], tb, tb,ldc); } free(s); Algoritmo por bloques dobles. La operación sobre bloques no es la multiplicación directa, sino por bloques. Tenemos dos tamaños de bloque. 18 de noviembre de 2018 Universidad Politécnica de Valencia
15
Algoritmos por bloques
Almacenamiento por bloques: matriz almacenamiento posible acceso más rápido a los datos dentro de las operaciones por bloques 18 de noviembre de 2018 Universidad Politécnica de Valencia
16
Algoritmos por bloques
Trasposición de la matriz B y multiplicación: mult(a,fa,ca,lda,b,fb,cb,ldb,c,fc,cc,ldc) double *a; int fa,ca,lda; double *b; int fb,cb,ldb; double *c; int fc,cc,ldc; { int i,j,k; double s; for(i=0;i<fa;i++) for(j=0;j<cb;j++) { s=0.; for(k=0;k<ca;k++) s+=a[i*lda+k]*b[j*ldb+k]; c[i*ldc+j]=s; } 18 de noviembre de 2018 Universidad Politécnica de Valencia
17
Comunicaciones: PVM, MPI
BLAS ScaLAPACK Paso de mensajes Direccionamiento global PBLAS Independiente de la plataforma Dependiente de la plataforma LAPACK BLACS Basic Linear Algebra Subprograms Direccionamiento local Secuencial BLAS Comunicaciones: PVM, MPI 18 de noviembre de 2018 Universidad Politécnica de Valencia
18
Universidad Politécnica de Valencia
BLAS Conjunto de rutinas para realizar operaciones básicas sobre vectores y matrices Publications/references for the BLAS? C. L. Lawson, R. J. Hanson, D. Kincaid, and F. T. Krogh, Basic Linear Algebra Subprograms for FORTRAN usage, ACM Trans. Math. Soft., 5 (1979), pp J. J. Dongarra, J. Du Croz, S. Hammarling, and R. J. Hanson, An extended set of FORTRAN Basic Linear Algebra Subprograms, ACM Trans. Math. Soft., 14 (1988), pp J. J. Dongarra, J. Du Croz, I. S. Duff, and S. Hammarling, A set of Level 3 Basic Linear Algebra Subprograms, ACM Trans. Math. Soft., 16 (1990), pp 18 de noviembre de 2018 Universidad Politécnica de Valencia
19
Universidad Politécnica de Valencia
BLAS Hay tres niveles según el coste computacional: tipo coste accesos operaciones computacional memoria BLAS1 vector-vector n n BLAS2 matriz-vector n n2 BLAS3 matriz-matriz n n2 18 de noviembre de 2018 Universidad Politécnica de Valencia
20
Universidad Politécnica de Valencia
BLAS 1 18 de noviembre de 2018 Universidad Politécnica de Valencia
21
Universidad Politécnica de Valencia
BLAS 1 Ejemplo ddot.f Calcula el producto escalar de dos vectores Se puede usar en el bucle más interno de la multiplicación de matrices, dando lugar a una versión con BLAS 1 Se compila con icc –O3 mb1.c –lgslcblas -lm 18 de noviembre de 2018 Universidad Politécnica de Valencia
22
Universidad Politécnica de Valencia
BLAS Formato de las funciones (niveles 2 y 3): XYYZZZ X: Tipo de datos: S : REAL D : DOUBLE PRECISION C : COMPLEX Z : DOUBLE COMPLEX YY: Tipo de matriz: GE, GB, HE, HP, HB, SY, SP, TR, TP, TB ZZZ: Operación: MV: productor matriz vector MM: producto matriz matriz SV: sistema de ecuaciones ... 18 de noviembre de 2018 Universidad Politécnica de Valencia
23
Universidad Politécnica de Valencia
BLAS 2 18 de noviembre de 2018 Universidad Politécnica de Valencia
24
Universidad Politécnica de Valencia
BLAS 2 18 de noviembre de 2018 Universidad Politécnica de Valencia
25
Universidad Politécnica de Valencia
BLAS 2 Ejemplo dgemv.f Calcula el producto de una matriz por un vector Se puede usar en el segundo bucle en la multiplicación de matrices, dando lugar a una versión con BLAS 2 Se compila con icc –O3 mb2.c –lgslcblas -lm 18 de noviembre de 2018 Universidad Politécnica de Valencia
26
Universidad Politécnica de Valencia
BLAS 3 18 de noviembre de 2018 Universidad Politécnica de Valencia
27
Universidad Politécnica de Valencia
BLAS 3 Ejemplo dgemm.f Calcula el producto de una matriz por un vector Se puede hacer la multiplicación de matrices llamando directamente a la rutina correspondiente de BLAS Se compila con icc –O3 mb3.c –lgslcblas -lm 18 de noviembre de 2018 Universidad Politécnica de Valencia
28
Universidad Politécnica de Valencia
BLAS Multiplicación de matrices (en kefren, pentium 4): Método\tamaño Normal Traspuesta Bloques Bloq dob Blas Blas Blas 18 de noviembre de 2018 Universidad Politécnica de Valencia
29
Universidad Politécnica de Valencia
BLAS - Práctica Hacer llamada a dgemm desde programa en C y en Fortran: Ver las formas diferentes en la llamada Comparar los resultados, teniendo en cuenta que en C los elementos se almacenan por filas y en Fortran por columnas (en la multiplicación de matrices estas no deben ser simétricas) 18 de noviembre de 2018 Universidad Politécnica de Valencia
30
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 18 de noviembre de 2018 Universidad Politécnica de Valencia
31
Universidad Politécnica de Valencia
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 18 de noviembre de 2018 Universidad Politécnica de Valencia
32
Universidad Politécnica de Valencia
LAPACK Algoritmos orientados a bloques Basados en BLAS Eficiencia Portabilidad 18 de noviembre de 2018 Universidad Politécnica de Valencia
33
Universidad Politécnica de Valencia
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. 18 de noviembre de 2018 Universidad Politécnica de Valencia
34
Universidad Politécnica de Valencia
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. 18 de noviembre de 2018 Universidad Politécnica de Valencia
35
Universidad Politécnica de Valencia
LAPACK Tipos de matrices: Densas. Banda. Reales y complejas. … no escasas Tipos de sistemas: Secuenciales. Memoria compartida. 18 de noviembre de 2018 Universidad Politécnica de Valencia
36
Universidad Politécnica de Valencia
LAPACK 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. 18 de noviembre de 2018 Universidad Politécnica de Valencia
37
Universidad Politécnica de Valencia
LAPACK 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. 18 de noviembre de 2018 Universidad Politécnica de Valencia
38
Universidad Politécnica de Valencia
LAPACK 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. 18 de noviembre de 2018 Universidad Politécnica de Valencia
39
Universidad Politécnica de Valencia
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 ... 18 de noviembre de 2018 Universidad Politécnica de Valencia
40
Universidad Politécnica de Valencia
LAPACK Tipos de matrices: 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; 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 18 de noviembre de 2018 Universidad Politécnica de Valencia
41
Universidad Politécnica de Valencia
LAPACK 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. 18 de noviembre de 2018 Universidad Politécnica de Valencia
42
Universidad Politécnica de Valencia
LAPACK Ejemplo dgesv.f Resuelve un sistema de ecuaciones Llamada en Fortran: call dgesv( ) En C: dgesv_( ) y se pasan las referencias a los parámetros 18 de noviembre de 2018 Universidad Politécnica de Valencia
43
Universidad Politécnica de Valencia
LAPACK - Prácticas Resolver un sistema de ecuaciones usando dgesv.f Utilizando C y Fortran, y comparar las dos formas de llamada 18 de noviembre de 2018 Universidad Politécnica de Valencia
44
Universidad Politécnica de Valencia
LAPACK Problema de mínimos cuadrados Problema: Rutinas: xyyLS, xyyLSX, xyyLSS Problema generalizado de mínimos cuadrados Rutinas: xyyLSE, xyyGLM 18 de noviembre de 2018 Universidad Politécnica de Valencia
45
Universidad Politécnica de Valencia
LAPACK Problema simétrico de valores propios Problema: Rutinas: Conductora simple: xyyEV Conductora divide y vencerás: xyyEVD Conductora experta: xyyEVX 18 de noviembre de 2018 Universidad Politécnica de Valencia
46
Universidad Politécnica de Valencia
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. 18 de noviembre de 2018 Universidad Politécnica de Valencia
47
Algoritmos por bloques - Práctica
Factorización LU por bloques: = Paso 1: (factorización LU sin bloques) Paso 2: (sistema triangular inferior múltiple) Paso 3: (sistema triangular superior múltiple) Paso 4: (actualización de bloque sur-este) L11 L22 L33 L32 L31 L21 A11 A22 A33 A32 A31 A23 A21 A13 A12 U11 U22 U33 U23 U13 U12 18 de noviembre de 2018 Universidad Politécnica de Valencia
48
Algoritmos por bloques - Práctica
Programar la factorización LU por bloques utilizando llamadas a rutinas de BLAS y LAPACK. Usar la LU sin bloques como referencia. Hacerla sin pivotamiento. Comparar el tiempo de ejecución con el obtenido con la rutina sin bloques. Comparar el tiempo de ejecución sustituyendo la multiplicación de matrices por la versión por bloques programada. 18 de noviembre de 2018 Universidad Politécnica de Valencia
49
Comunicaciones: PVM, MPI
ATLAS ScaLAPACK Paso de mensajes Direccionamiento global PBLAS Independiente de la plataforma Dependiente de la plataforma Automatic Tuned Linear Algebra Software LAPACK BLACS Direccionamiento local Secuencial ATLAS Comunicaciones: PVM, MPI 18 de noviembre de 2018 Universidad Politécnica de Valencia
50
Universidad Politécnica de Valencia
ATLAS Rutinas básicas de Álgebra Lineal con autooptimización. En la instalación se realizan una serie de tests para decidir los mejores parámetros a utilizar en la resolución de los problemas, dependiendo de la rutina y del tamaño de los vectores y matrices. Tiempo de instalación grande. Se tendría disponible software eficiente para nuevas plataformas sin esperar el tedioso proceso de desarrollar software optimizado. La misma funcionalidad que BLAS. Se puede hacer interface para que las llamadas a las rutinas sean iguales. 18 de noviembre de 2018 Universidad Politécnica de Valencia
51
Comunicaciones: PVM, MPI
FLAME ScaLAPACK Paso de mensajes Direccionamiento global PBLAS Independiente de la plataforma Dependiente de la plataforma LAPACK BLACS Formal Linear Algebra Methods Environment Direccionamiento local Secuencial FLAME Comunicaciones: PVM, MPI 18 de noviembre de 2018 Universidad Politécnica de Valencia
52
Universidad Politécnica de Valencia
FLAME Desarrollo de rutinas de Álgebra Lineal manera sistemática. Metodología orientada a objeto. Código más sencillo. Para algunos tamaños (matrices rectangulares) mejores prestaciones que ATLAS y BLAS. 18 de noviembre de 2018 Universidad Politécnica de Valencia
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.