La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Universidad de Murcia1 Algoritmos matriciales por bloques Multiplicación de matrices. BLAS Domingo Giménez Departamento de Informática y Sistemas Universidad.

Presentaciones similares


Presentación del tema: "Universidad de Murcia1 Algoritmos matriciales por bloques Multiplicación de matrices. BLAS Domingo Giménez Departamento de Informática y Sistemas Universidad."— Transcripción de la presentación:

1 Universidad de Murcia1 Algoritmos matriciales por bloques Multiplicación de matrices. BLAS Domingo Giménez Departamento de Informática y Sistemas Universidad de Murcia, Spain dis.um.es/~domingo

2 Universidad de Murcia2 Contenido Jerarquía de librerías Obteniendo información Algoritmos por bloques BLAS

3 Universidad de Murcia3 Jerarquía de librerías ScaLAPACK LAPACK BLAS PBLAS BLACS Comunicaciones: PVM, MPI Secuencial Paso de mensajes Dependiente de la plataforma Independiente de la plataforma Direccionamiento local Direccionamiento global

4 Universidad de Murcia4 Jerarquía de librerías ScaLAPACK LAPACK BLAS PBLAS BLACS Comunicaciones Inverse Eigenvalue ProblemLeast Square ProblemPDE Solver Se puede extender la jerarquía resolviendo problemas de alto coste computacional. Necesarios algoritmos eficientes en sistemas de altas prestaciones.

5 Universidad de Murcia5 Obteniendo información www.netlib.org/liblist.html www.netlib.org/utk/people/JackDongarr a/la-sw.html www.netlib.org/utk/people/JackDongarr a/la-sw.html

6 Universidad de Murcia6 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.

7 Universidad de Murcia7 Algoritmos por bloques Multiplicación de matrices (en SUN Ultra 1) : Método\tamaño200400800 Normal0.217913.4601217.5464 Traspuesta0.20133.365327.9945 Bloques 100.28802.590121.9029 250.21921.834714.9642 500.21611.770914.2502 Bloq tras100.29372.502620.4405 250.21951.800914.6415 500.21521.762814.1806 Almac blo100.29492.512220.3762 250.22771.849014.8625 500.22961.842914.7314 Bl tr al bl100.29252.498520.1975 250.22441.808214.5282 500.22311.714713.6553 Bloq dob20 50.61054.936339.9594 20 100.32062.666919.7044 50 100.30392.454219.7044 50 250.23701.922115.5190

8 Universidad de Murcia8 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 …

9 Universidad de Murcia9 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

10 Universidad de Murcia10 Algoritmos por bloques multmult(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.

11 Universidad de Murcia11 Algoritmos por bloques multbloquesmultbloques(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.

12 Universidad de Murcia12 Algoritmos por bloques A i k tb B k j C i j s

13 Universidad de Murcia13 Algoritmos por bloques multbloquesgrandesmultbloquesgrandes(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.

14 Universidad de Murcia14 Algoritmos por bloques Almacenamiento por bloques: matriz 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 almacenamiento 0 1 4 5 2 3 6 7 8 9 12 13 10 11 14 15 posible acceso más rápido a los datos dentro de las operaciones por bloques

15 Universidad de Murcia15 Algoritmos por bloques Trasposición de la matriz B y multiplicación: Trasposició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; }

16 Universidad de Murcia16 BLAS ScaLAPACK LAPACK BLAS PBLAS BLACS Comunicaciones: PVM, MPI Paso de mensajes Secuencial Dependiente de la plataforma Independiente de la plataforma Direccionamiento local Direccionamiento global Basic Linear Algebra Subprograms

17 Universidad de Murcia17 BLAS Conjunto de rutinas para realizar operaciones básicas sobre vectores y matrices Publications/references for the BLAS? 1. 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. 308--323.ACM Trans. Math. Soft., 5 (1979) 2. 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. 1--17.ACM Trans. Math. Soft., 14 (1988) 3. 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. 1--17.ACM Trans. Math. Soft., 16 (1990)

18 Universidad de Murcia18 BLAS Hay tres niveles según el coste computacional: tipo costeaccesos operacionescomputacionalmemoria BLAS1 vector-vectorn n BLAS2 matriz-vectorn 2 n 2 BLAS3 matriz-matrizn 3 n 2

19 Universidad de Murcia19 BLAS 1

20 Universidad de Murcia20 BLAS 1 Ejemplo ddot.fddot.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 1versión con BLAS 1 Se compila con (depende del sistema) cc –O3 mb1.c –lblas -lm

21 Universidad de Murcia21 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...

22 Universidad de Murcia22 BLAS 2

23 Universidad de Murcia23 BLAS 2

24 Universidad de Murcia24 BLAS 2 Ejemplo dgemv.fdgemv.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 2versión con BLAS 2 Se compila con cc –O3 mb2.c –lblas -lm

25 Universidad de Murcia25 BLAS 3

26 Universidad de Murcia26 BLAS 3 Ejemplo dgemm.fdgemm.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 BLASllamando directamente Se compila con icc –O3 mb3.c –lgslcblas -lm

27 Universidad de Murcia27 BLAS Multiplicación de matrices (en kefren, pentium 4) : Método\tamaño200400800 Normal0.04630.78547.9686 Traspuesta0.02310.28752.3190 Bloques 100.02550.24932.0327 250.02650.20331.6928 500.02190.17851.6594 Bloq dob20 5 0.03930.36693.4955 20 100.02690.30902.4424 50 100.03160.22322.2768 50 250.02150.17551.4726 Blas 10.05360.81908.2311 Blas 20.05010.58615.9997 Blas 30.04290.61154.7252

28 Universidad de Murcia28 BLAS - Práctica Probar las prestaciones de: La multiplicación de matrices por bloques y sin bloques Variando el tamaño de las matrices Y determinar el tamaño de bloque óptimo Comparar con las prestaciones obtenidas usando BLAS en sus tres niveles


Descargar ppt "Universidad de Murcia1 Algoritmos matriciales por bloques Multiplicación de matrices. BLAS Domingo Giménez Departamento de Informática y Sistemas Universidad."

Presentaciones similares


Anuncios Google