Algoritmos matriciales por bloques Multiplicacin de matrices' BLAS - PowerPoint PPT Presentation

1 / 28
About This Presentation
Title:

Algoritmos matriciales por bloques Multiplicacin de matrices' BLAS

Description:

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: ... – PowerPoint PPT presentation

Number of Views:612
Avg rating:3.0/5.0
Slides: 29
Provided by: dis86
Category:

less

Transcript and Presenter's Notes

Title: Algoritmos matriciales por bloques Multiplicacin de matrices' BLAS


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

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

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
4
Jerarquía de librerías
Inverse Eigenvalue Problem
Least Square Problem
PDE Solver
Se puede extender la jerarquía resolviendo problem
as de alto coste computacional.
Necesarios algoritmos eficientes en sistemas de
altas prestaciones.
ScaLAPACK
PBLAS
LAPACK
BLACS
BLAS
Comunicaciones
5
Obteniendo información
  • www.netlib.org/liblist.html
  • www.netlib.org/utk/people/JackDongarra/la-sw.html

6
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
Algoritmos por bloques
  • Multiplicación de matrices (en SUN Ultra 1)
  • Método\tamaño 200 400 800
  • Normal 0.2179 13.4601 217.5464
  • Traspuesta 0.2013 3.3653 27.9945
  • Bloques 10 0.2880 2.5901 21.9029
  • 25 0.2192 1.8347 14.9642
  • 50 0.2161 1.7709 14.2502
  • Bloq tras 10 0.2937 2.5026 20.4405
  • 25 0.2195 1.8009 14.6415
  • 50 0.2152 1.7628 14.1806
  • Almac blo 10 0.2949 2.5122 20.3762
  • 25 0.2277 1.8490 14.8625
  • 50 0.2296 1.8429 14.7314
  • Bl tr al bl 10 0.2925 2.4985 20.1975
  • 25 0.2244 1.8082 14.5282
  • 50 0.2231 1.7147 13.6553
  • Bloq dob 20 5 0.6105 4.9363 39.9594
  • 20 10 0.3206 2.6669 19.7044
  • 50 10 0.3039 2.4542 19.7044

8
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
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
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(i0iltfai)
  • for(j0jltcbj)
  • s0.
  • for(k0kltcak)
  • saildakbkldbj
  • cildcjs

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
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(i0iltfaii tb)
  • for(j0jltcbjj tb)
  • ceros(s, tb, tb, tb)
  • for(k0kltcakk tb)
  • multsumar(aildak, tb, tb,lda,bkldbj,
    tb, tb,ldb,s, tb, tb, tb)
  • copiar(s, tb, tb, tb,cildcj, 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
Algoritmos por bloques

tb
tb
C
B
i
s
13
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(i0iltfaii tb)
  • for(j0jltcbjj tb)
  • ceros(s, tb, tb, tb)
  • for(k0kltcakk tb)
  • multsumarbloques(aildak, tb,
    tb,lda,bkldbj, tb, tb,ldb,s, tb, tb, tb,
    tbp)
  • copiar(s, tb, tb, tb,cildcj, 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
Algoritmos por bloques

Almacenamiento por bloques
almacenamiento 0 1 4 5 2 3
6 7 8 9 12 13 10 11 14 15
matriz 0 1 2 3 4 5 6
7 8 9 10 11 12 13 14 15
posible acceso más rápido a los datos dentro de
las operaciones por bloques
15
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(i0iltfai)
  • for(j0jltcbj)
  • s0.
  • for(k0kltcak)
  • saildakbjldbk
  • cildcjs

16
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
17
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. 308--323.
  • 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.
  • 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.

18
BLAS
  • Hay tres niveles según el coste computacional
  • tipo coste accesos
  • operaciones computacional memoria
  • BLAS1 vector-vector n n
  • BLAS2 matriz-vector n2 n2
  • BLAS3 matriz-matriz n3 n2

19
BLAS 1

20
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 (depende del sistema)
  • cc O3 mb1.c lblas -lm

21
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
BLAS 2

23
BLAS 2

24
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
  • cc O3 mb2.c lblas -lm

25
BLAS 3

26
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

27
BLAS
  • Multiplicación de matrices (en kefren, pentium
    4)
  • Método\tamaño 200 400 800
  • Normal 0.0463 0.7854 7.9686
  • Traspuesta 0.0231 0.2875 2.3190
  • Bloques 10 0.0255 0.2493 2.0327
  • 25 0.0265 0.2033 1.6928
  • 50 0.0219 0.1785 1.6594
  • Bloq dob 20 5 0.0393 0.3669 3.4955
  • 20 10 0.0269 0.3090 2.4424
  • 50 10 0.0316 0.2232 2.2768
  • 50 25 0.0215 0.1755 1.4726
  • Blas 1 0.0536 0.8190 8.2311
  • Blas 2 0.0501 0.5861 5.9997
  • Blas 3 0.0429 0.6115 4.7252

28
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
Write a Comment
User Comments (0)
About PowerShow.com