SlideShare una empresa de Scribd logo
1 de 60
Descargar para leer sin conexión
Programación y Computación
         paralela (6)
   Sistemas de Ec. lineales

         Glen D. Rodríguez R.
    Basado en material de J. Demmel




                                      1
Tipos de datos de usuario en MPI
• En el programa de metropolis por ejemplo, queríamos
  pasar 4 numeros (xmax, xmin, ymax, ymin) y tuvimos
  que hacer 4 broadcast. Mejor mandarlo todos como 1
  solo broadcast, pero esos números no son array.
• Creo un tipo de datos propio:
   •   int long_bloque[4]; /*en este caso, todos los elementos =1*/
   •   MPI_Aint desplaz[4]; /*elements: 0, direc.xmin-direc.xmax,
   •   Diecc.ymax-direc.xmax,direc.ymin-direc.xmax*/
   •   MPI_Datatype tipos[4]; /*todos son MPI_DOUBLE*/
   •   MPI_Datatype nuevotipo;
   •   MPI_Type_struct(4, long_bloque, desplaz, tipos, &nuevotipo);
   •   MPI_Type_commit(&nuevotipo);
   •   MPI_Bcast(variable,1,nuevotipo,…….)


                                                                  2
Comunicadores en MPI
• Comunicador: colección de procesos que se pueden
  mandar mensajes entre sí (“universo de comunicación”).
• Topologías: estructura que direcciona las
  comunicaciones en un comunicador.
• Se usaron en el ejemplo del alg. de Fox
• En vez de Bcast(…,MPI_COMM_WORLD), hacer un
  Bcast(…,Fila3). En el comunicador Fila3 hay q procesos
  con rank del 0 al q-1. MPI_COMM_WORLD es un grupo
  con comunicador de todos los procesos p>=q, con
  rangos de 0 al p-1. Para un procesador generalemente
  p!=q
• Cada comunicador tiene un identificador diferente.
   • MPI_Group mundo;
   • MPI_Group Fila1;
   • MPI_Comm Comun_Fila1;                            3
Sigue…
   • q=sqrt(p)
   • int rango[q];
   • rango[0]=0; rango[1]=1; ….; rango[q-1]=q-1;
   • MPI_Comm_group(MPI_COMM_WORLD, &mundo);
   • MPI_Group_incl(mundo, q, rango, &Fila1);
   • MPI_Comm_Create(MPI_COMM_WORLD, Fila1,
     &Comun_Fila1);
   • …..
   • MPI_Bcast(….., Comun_Fila1);
• Se pueden crear varios comunicadores a la vez:
   •   MPI_Comm comun_mi_fila;
   •   int mi_fila;
   •   MPI_Comm_rank(MPI_COMM_WORLD, &mi_rango)
   •   mi_fila= mi_rango/q; /*division entera, no decimales*/
   •   MPI_Comm_split(MPI_COMM_WORLD, mi_fila, mi_rango,
       &comun_mi_fila);                                         4
Sigue…
• Topologías: permiten enumerar los procesos de un
  comunicador en formas nuevas, por ejemplo con do
  índices en vez de uno.
   •   MPI_Comm comun_malla;
   •   int tamano_dim[2], wraping[2], reorden=1;
   •   tamano_dim[0]= tamano_dim[1]= q;
   •   wraping[0]= wraping[1]= 1;
   •   MPI_Cart_create(MPI_COMM_WORLD, 2, tamano_dim,
       wraping, reorden, &comun_malla)
• El comunicador comun_malla tiene a todos los procesos
  originales de MPI_COMM_WORLD pero reordenados, y
  una numeración 2D cartesiana asociada.
• Para que un proceso sepa sus coordenadas:
   • int coord[2]; int mi_rango_en_malla;
   • MPI_Comm_rank(comun_malla, &mi_rango_en_malla);
                                                            5
   • MPI_Cart_coords(comun_malla, mi_rango_en_malla, 2, coord);
Sigue…
• Para pasar de coordenadas a rango, usar
  MPI_Cart_rank
• Para dividir esta malla en mallas más pequeñas, se usa
  MPI_Cart_sub
• Ver ejemplo de Fox y como se usan estas funciones




                                                      6
Eliminación Gaussiana y matrices densas
• Algebra lineal densa
• “Gaussian Elimination” (GE) para resolver Ax=b
• Optimizar GE para máquinas secuenciales con caché
      • Usando multiplicación matriz x matriz (BLAS)
•   LAPACK
•   Partición de la Data en comp.paralelas
•   GE paralelo
•   ScaLAPACK
•   Problemas de Eigenvalue




                                                       7
Sca/LAPACK Overview




                      8
Exitos usando Sca/LAPACK
• Muy usado:
    • Adoptado por Mathworks, Cray,
       Fujitsu, HP, IBM, IMSL, NAG,
       NEC, SGI, …
    • >56M visitas en la web de
       Netlib (incl. CLAPACK,
       LAPACK95)
• Descubrimientos hechos a través
  de la solución de sistemas de ec.
  densos
    • Artículo en Nature sobre el
       universo plano usó               Cosmic Microwave Background
       ScaLAPACK                      Analysis, BOOMERanG collaboration,
                                        MADCAP code (Apr. 27, 2000).
    • Otros en Physics Review B
       también lo usaron
                                              ScaLAPACK
    • 1998 Premio Gordon Bell
    • www.nersc.gov/news/reports/ne
       wNERSCresults050703.pdf                                        9
Motivación (1)
3 problemas básicos de Alg. Lineal
 1. Ecuaciones Lineales: Resolver x en Ax=b
 2. Mínimos cuadrados: Hallar x que minimiza
    ||r||2 ≡ √Σ ri2 donde r=Ax-b
   • Estadística: Ajustar datos a funciones simples
 3a. Eigenvalues: Hallar λ , x tal que Ax = λ x
   • Análisis de vibraciones (terremotos, circuitos)
 3b. Singular Value Decomposition: ATAx=σ2x
   • Ajuste de data, Obtención de información


 Muchas variaciones para diferentes estructuras de A
   • Simétrica, definida positiva, en bandas, …


                                                       10
Motivación (2)
• Por qué A densa, en vez de A dispersa?
  • Muchas matrices grandes son dispersas,
    pero …
  • Alg. Densos son más fáciles de entender
  • Algunas aplicaciones producen matrices
    densas grandes
  • LINPACK Benchmark (www.top500.org)
     • “Qué tan rápida es tu computadora?” =
       “Qué tan rápido resuelves Ax=b denso?”
  • Alg. de matriz dispersa grande con
    frecuencia producen menores (pero aún
    grandes) problemas densos.
                                                11
Records en la solución de Sist. Densos (2006)
  www.netlib.org, click en Performance Database Server
                                 Gigaflops
   Máquina                  n=100 n=1000 Any n Pico

   IBM BlueGene/L                                  281K     367K
      (131K procs)                           (281 Teraflops)
                                                (n=1.8M)
   NEC SX 8
     (8 proc, 2 GHz)                      75.1             128
     (1 proc, 2 GHz)          2.2         15.0              16

   …


  Palm Pilot III         .00000169
                       (1.69 Kiloflops)

                                                                 12
Eliminación Gaussiana (GE) en Ax=b
• Añadir múltiplos de cada fila a las demás para volver A en triangular sup.
• Resolver el sist.triang. resultante Ux = c por sustitución

           … para cada columna i
           … “cerear” debajo de la diagonal añadiendo múltiplos de la fila i a las de abajo
           for i = 1 to n-1
             … para cada fila j debajo de la fila i
             for j = i+1 to n
                  … añadir un multiplo de la fila i a la fila j
                  tmp = A(j,i);
                  for k = i to n
                      A(j,k) = A(j,k) - (tmp/A(i,i)) * A(i,k)



       0
       .
                          0
                          . 0
                                            0
                                            . 0
                                                              …       0
                                                                      . 0
       .                  . .               . .                       . .
       .                  . .
                            .               . . 0
                                              . .                     . . 0
                                                                        . . 0
       0                  0 0               0 0                       0 0
                                                0                         0 0
                                                                              0
           After i=1        After i=2         After i=3                  After i=n-1


                                                                                       13
Refinando el algoritmo GE (1)
• Versión inicial
  … para cada columna i
  … “cerear” debajo de la diagonal añadiendo múltiplos de fila i a las de abajo
  for i = 1 to n-1
    … para cada fila j debajo de fila i
    for j = i+1 to n
         … añadir un múltiplo de la fila i a la fila j
         tmp = A(j,i);
         for k = i to n
             A(j,k) = A(j,k) - (tmp/A(i,i)) * A(i,k)

• Elimina computación de constante tmp/A(i,i) de loop
  interno
  for i = 1 to n-1
     for j = i+1 to n
         m = A(j,i)/A(i,i)
         for k = i to n                      m
             A(j,k) = A(j,k) - m * A(i,k)

                                                                            14
Refinando el algoritmo GE (2)
• Última versión
   for i = 1 to n-1
      for j = i+1 to n
          m = A(j,i)/A(i,i)
          for k = i to n
              A(j,k) = A(j,k) - m * A(i,k)

• No computa lo que ya se conoce: ceros bajo la
  diagonal en la columna i

    for i = 1 to n-1
       for j = i+1 to n
           m = A(j,i)/A(i,i)
           for k = i+1 to n                   m
               A(j,k) = A(j,k) - m * A(i,k)


                                                  No calcula los ceros
                                                                         15
Refinando el algoritmo GE (3)
• Última versión
    for i = 1 to n-1
       for j = i+1 to n
           m = A(j,i)/A(i,i)
           for k = i+1 to n
               A(j,k) = A(j,k) - m * A(i,k)

• Guarda los factores m bajo la diagonal en el espacio
  donde irían los ceros para uso posterior

     for i = 1 to n-1
        for j = i+1 to n
            A(j,i) = A(j,i)/A(i,i)
            for k = i+1 to n                        m
                A(j,k) = A(j,k) - A(j,i) * A(i,k)


                                                        Guarda m aquí
                                                                        16
Refinando el algoritmo GE (4)
• Última versión
   for i = 1 to n-1
      for j = i+1 to n
          A(j,i) = A(j,i)/A(i,i)
          for k = i+1 to n
              A(j,k) = A(j,k) - A(j,i) * A(i,k)




 • Partir el loop

   for i = 1 to n-1
      for j = i+1 to n
          A(j,i) = A(j,i)/A(i,i)
      for j = i+1 to n
          for k = i+1 to n
              A(j,k) = A(j,k) - A(j,i) * A(i,k)

                                                  Guardar todos los m aquí antes
                                                  de modificar el resto de la matriz   17
Refinando el algoritmo GE (5)
                             for i = 1 to n-1
• Última versión                for j = i+1 to n
                                    A(j,i) = A(j,i)/A(i,i)
                                for j = i+1 to n
                                    for k = i+1 to n
                                        A(j,k) = A(j,k) - A(j,i) * A(i,k)

• Rápido usando operaciones de matrices (BLAS)



                             for i = 1 to n-1
                                A(i+1:n,i) = A(i+1:n,i) * ( 1 / A(i,i) )
                                A(i+1:n,i+1:n) = A(i+1:n , i+1:n )
                                       - A(i+1:n , i) * A(i , i+1:n)




                                                                     18
Qué computa en realidad la GE?
       for i = 1 to n-1
          A(i+1:n,i) = A(i+1:n,i) / A(i,i)
          A(i+1:n,i+1:n) = A(i+1:n , i+1:n ) - A(i+1:n , i) * A(i , i+1:n)

• Llamemos a la matriz triangular inferior de
  multiplicadores m como M, y hagamos L = I+M
• Llamemos al triangulo superior de la matriz final como U
• Lema (Factorización LU): Si el algoritmo anterior termina
  (no hay división por cero) entonces A = L*U
• Solución de A*x=b usando GE
   • Factorizar A = L*U usando GE         (costo = 2/3 n3 flops)
   • Resolver L*y = b para y, usando substitución (costo = n2 flops)
   • Resolver U*x = y para x, usando substitución (costo = n2 flops)
• Por lo tanto A*x = (L*U)*x = L*(U*x) = L*y = b como se
  desea

                                                                             19
Problemas con el alg. GE básico
• Qué pasa si algún A(i,i) es cero? O es muy pequeño?
    • Resultado inválido (div.por cero), o “inestable”,     se necesita pivotear
• Se computan operaciones BLAS 1 o BLAS 2, pero sabemos que las
  BLAS 3 (mult. de matrices) es más rápida (clase anterior…)
       for i = 1 to n-1
          A(i+1:n,i) = A(i+1:n,i) / A(i,i)     … BLAS 1 (escala un vector)
          A(i+1:n,i+1:n) = A(i+1:n , i+1:n ) … BLAS 2 (update en rango 1)
                 - A(i+1:n , i) * A(i , i+1:n)


                                                          Pico
                                                          BLAS 3




                                                          BLAS 2
                                                          BLAS 1




                                                                             20
Pivotear en GE
• A = [ 0 1 ] falla por que no se puede dividir entre A(1,1)=0
      [1 0]

• Pero resolver Ax=b es facilísimo!


• Cuando elemento diagonal A(i,i) es diminuto (no sólo cero),
  el algoritmo puede terminar pero dar una respuesta
  completamente errada
     • Inestabilidad numérica
     • La causa es el error de redondeo a punto flotante

• Cura: usar Pivot (intercambiar filas de A) tal que A(i,i) sea
  grande




                                                                  21
GE con Pivot Parcial (GEPP)
  • Pivoteo Parcial: intercambiar filas tal que A(i,i) es la mayor en su columna

      for i = 1 to n-1
         Hallar y guardar k donde |A(k,i)| = max{i <= j <= n} |A(j,i)|
               … o sea, el mayor element en el resto de la columna i
         if |A(k,i)| = 0
             exit con advertencia que A es singular, o casi singular
         elseif k != i
             intercambiar filas i , k de A
         end if
         A(i+1:n,i) = A(i+1:n,i) / A(i,i)   … cada cociente cae en [-1,1]
         A(i+1:n,i+1:n) = A(i+1:n , i+1:n ) - A(i+1:n , i) * A(i , i+1:n)


  • Lema: este algoritmo computa A = P*L*U, donde P es una matriz
    de permutación.
  • Es numéricamente estable en la práctica
  • Para más detalles ver código LAPACK en
              http://www.netlib.org/lapack/single/sgetf2.f

                                                                        22
Problemas con el alg. GE básico
• Qué pasa si A(i,i) es cero? O es muy pequeño?
    • Resultado inválido, o “inestable”, así que se debe pivotear
• Se computan operaciones BLAS 1 o BLAS 2, pero sabemos que las
  BLAS 3 (mult. de matrices) es más rápida (clase anterior…)
       for i = 1 to n-1
          A(i+1:n,i) = A(i+1:n,i) / A(i,i)     … BLAS 1 (escala un vector)
          A(i+1:n,i+1:n) = A(i+1:n , i+1:n ) … BLAS 2 (update en rango 1)
                 - A(i+1:n , i) * A(i , i+1:n)


                                                        Pico
                                                        BLAS 3




                                                        BLAS 2
                                                        BLAS 1




                                                                             23
Convirtiendo BLAS2 a BLAS3 en GEPP
• Bloques
   • Usado para optimizar mult.matrices
   • Más difícil en GE por las dependencias de data en GEPP
• GRAN IDEA: Updates retrasados
   • Salvar varios updates consecutivos BLAS2 a una “matriz
     relegada”
   • Aplicar muchos updates simultáneamente en una operación
     BLAS2
• La misma idea funciona en otras partes del alg. lineal
   • Quedan preguntas por resolver….
• Primer enfoque: necesito escoger un tamaño de bloque b
   • Algoritmo guarda y aplica b updates
   • b debe ser suficientemente pequeño de tal forma que la sub
     matriz activa consistente en b columnas de A quepa en el cache
   • b debe ser suficientemente grande para que BLAS3 sea rápido
                                                               24
GEPP en bloques (www.netlib.org/lapack/single/sgetrf.f)
for ib = 1 to n-1 step b … Procesa b columnas
   end = ib + b-1          … Apunta al final del bloque de b columns
   aplica versión BLAS2 de GEPP para obtener A(ib:n , ib:end) = P’ * L’ * U’
   … LL denota la parte triangular inferior de A(ib:end , ib:end) + I
   A(ib:end , end+1:n) = LL-1 * A(ib:end , end+1:n)    … update siguientes b filas de U
   A(end+1:n , end+1:n ) = A(end+1:n , end+1:n )
           - A(end+1:n , ib:end) * A(ib:end , end+1:n)
                        … aplica updates retrasados con una mult.matrices
                        … de dimensiones w x b , b x w




 (For a correctness proof,
 see on-line notes from
 CS267 / 1996.)




                                                                               25
Eficiencia del GEPP en bloques

                                     Speed (LAPACK/LU) / Speed(best effort)
             1.2                     Speed(Matmul) / HW Peak
                                     Speed(LAPACK LU) / Speed(MatMul)

              1

             0.8
Efficiency




             0.6

             0.4

             0.2

              0
                   Cnvx C4 Cnvx C4 Cray C90 Cray C90      Alpha    RS6000     SGI PC
                    (1 p)   (4 p)    (1 p)   (16 p)

                                                                                 26
Vista general de LAPACK y ScaLAPACK
• Librería estándar para algebra lineal densa y en bandas
   •   Sistemas lineales: A*x=b
   •   Problemas de mínimos cuadrados: minx || A*x-b ||2
   •   Problemas de Eigenvalues: Ax = λx, Ax = λBx
   •   Descomposición en valores singulares (SVD): A = UΣVT
• Alg. reorganizados para usar lo más posible BLAS3
• Base de librerías matemáticas en muchos sistemas,
  Matlab, etc …
• Aún faltan más mejoras por implementar
   • Proyectos para maestrías, doctorados?




                                                              27
Performance de LAPACK (n=1000)

                                 Performance
                                 de Eigen-
                                 values, SVD,
                                 etc.




                                     28
Performance de LAPACK (n=100)

                                Eficiencia es
                                mucho
                                menor para
                                matrices
                                más chicas




                                     29
Paralelizando la GE
• Pasos de la paralelización
    • Descomposición: identificar suficiente trabajo paralelo, pero no
      demasiado
    • Asignación: balance de carga entre procesos
    • Coordinación: comunicación y sincronización
    • Mapeo: qué procesadores ejecutan qué tareas?
• Descomposición
    • En la parte BLAS 2, casi cada flop en el loop interno puede hacerse en
      paralelo, así que con n2 procs., necesito 3n pasos paralelos
            for i = 1 to n-1
               A(i+1:n,i) = A(i+1:n,i) / A(i,i)     … BLAS 1 (escala un vector)
               A(i+1:n,i+1:n) = A(i+1:n , i+1:n ) … BLAS 2 (update rango 1)
                      - A(i+1:n , i) * A(i , i+1:n)

    • Esto es grano muy fino, mejor es llamar a mult.matrices locales
    • Necesario usar mult.matrices paralelo
• Asignación
    • Que procesadores son responsables de qué submatrices?
                                                                              30
Diferentes particiones de data para GE paralelo
 Mal balance de carga:                                                    Mejor balance, pero
 P0 ocioso luego de                          0123012301230123
                          0 1 2 3                                         difícil usar BLAS2 o
 n/4 pasos                                                                BLAS3


      1) Bloque de columnas 1D           2) Columnas 1D cíclicas
 Se puede negociar
 balance de carga y                                  0 1 2 3
                                                                           Difícil de
 performance BLAS2/3                                 3 0 1 2               direccionar
 cambiando b, pero la 0 1 2 3 0 1 2 3
 factorización del                                   2 3 0 1
 bloque de columnas es                               1 2 3 0
 el cuello de botella     b
    3) Bloques cíclicos de columnas 1D   4) Bloques de diagonales

                                         0   1   0   1   0   1   0   1
  Mal balance de carga:    0     1       2
                                         0
                                             3
                                             1
                                                 2
                                                 0
                                                     3
                                                     1
                                                         2
                                                         0
                                                             3
                                                             1
                                                                 2
                                                                 0
                                                                     3
                                                                     1
  P0 ocioso luego de                     2   3   2   3   2   3   2   3    El mejor!
                                         0   1   0   1   0   1   0   1
  n/2 pasos                2     3       2   3   2   3   2   3   2   3
                                         0   1   0   1   0   1   0   1
                                         2   3   2   3   2   3   2   3   6) Bloques cíclicos de filas
5) Bloques de filas y columnas 2D                                        y columnas 2D
                                                                                                 31
Revisión: GEPP con BLAS 3 (con bloques)
       for ib = 1 to n-1 step b … Procesa matriz de b columnas
          end = ib + b-1          … Apunta alfinal del bloque de b columnas
          aplica ver.BLAS2 de GEPP para onbtener A(ib:n , ib:end) = P’ * L’ * U’
          … LL denota parte triangular inferior de A(ib:end , ib:end) + I
          A(ib:end , end+1:n) = LL-1 * A(ib:end , end+1:n)      … update sgtes.b filas de U
BLAS 3    A(end+1:n , end+1:n ) = A(end+1:n , end+1:n )
                  - A(end+1:n , ib:end) * A(ib:end , end+1:n)
                               … aplicar updates retrasados con una mult.matrices
                               … de dimensiones w x b, x w




                                                                                    32
Bloque cíclico de Filas y Columnas

                                          • Procesadores y bloques de matrices
       bcol
                                            están distribuidos en un array 2d
brow    0

        2
              1

              3
                  0

                  2
                      1

                      3
                          0

                          2
                              1

                              3
                                  0

                                  2
                                      1

                                      3
                                              •Array de procesadores prow x pcol
        0     1   0   1   0   1   0   1       •Bloques de matrices brow x bcol
        2     3   2   3   2   3   2   3


                                          • Paralelismo “pcol” veces en cualquier
        0     1   0   1   0   1   0   1

        2     3   2   3   2   3   2   3

        0     1   0   1   0   1   0   1     columna, y llamadas a BLAS2 y
        2     3   2   3   2   3   2   3
                                            BLAS3 en matrices de tamaño brow x
                                            bcol

                                          • Cuello de botella serial es menos
                                            problemático

                                          • prow ≠ pcol y brow ≠ bcol posible, es
                                            más deseable                    33
GE distribuido con Bloques cíclicos 2D

• Tamaño de bloque b en el algoritmo y los tamaños
  de bloque brow y bcol en la partición satisfacen
  b=bcol.

• Regiones sombreadas indican procesadores
  ocupados con computación o comunicación.

• No es necesario tener barrera entre pasos sucesivos
  del algoritmo, ej: pasos 9, 10, y 11 se pueden hacer
  en “paralelo”




                                                    34
Distributed GE with a 2D Block Cyclic Layout
                             Contador de columnas



                               Contador de filas




                                                   35
–1




     Mult. matrices de
36




     verde = verde -azul * rosa
Revisión de MatMul paralela

• Se quiere problemas grandes
  por procesador
 PDGEMM = PBLAS mat.mul.

 Observaciones:
 • Para N fijo, si P crece, Mflops
   crece pero menos que 100% de
   eficiencia
 • Si P es fijo, si N crece, Mflops
   (eficiencia) crece

DGEMM = rutina BLAS
   para mat.mul.
Máxima velocidad para PDGEMM
  = # Procs * velocidad DGEMM

Observaciones:
• Eficiencia siempre es por lo
 menos 48%
• Para N fijo, si P crece, eficiencia
 disminuye
• Para P fijo, si N crece, eficiencia
 crece                                  37
PDGESV = LU paralelo de ScaLAPACK

 Como no puede correr más rápido que el
  loop interno (PDGEMM), hacemos:
 Eficiencia =
    Veloc(PDGESV)/Veloc(PDGEMM)

 Observaciones:
 • Eficiencia muy por encima de 50% para
   problemas suficientemente grandes
 • Para N fijo, si P crece, eficiencia
   disminuye (igual que en PDGEMM)
 • Para P fijo, si N crece, eficiencia crece
   (igual que en PDGEMM)
 • Según la tabla inferior, el coso de
   resolver
     • Ax=b es aprox. la mitad del mat.mul.
       para matrices suficientemente
       grandes.
     • Del contador de flops se deduce que
       debería ser (2*n3)/(2/3*n3) = 3 veces
       más rápida, pero la comunicación lo
       hace algo más lento.

                                               38
Modelos de performance ScaLAPACK (1)
Contador de operaciones de ScaLAPACK   tf = 1
                                       tm = α
                                       tv = β
                                       ΝΒ = brow=bcol
                                       √P = prow = pcol




                                              39
Modelos de performance ScaLAPACK (2)

 Comparar Predicciones y Mediciones




    (LU)

  (Cholesky)




                                      40
Escalabilidad de LAPACK y ScaLAPACK
• Problemas “unilaterales” son escalables
   • En GE, A factorizada como el producto de 2 matrices A = LU por medio
     de pre-multiplicar A por una secuencia de matrices más simples
   • Asintóticamente es 100% BLAS3
   • LU (“Linpack Benchmark”)
   • Cholesky, QR
• Problemas “Bilaterales” som menos escalables
   • A factorizada como producto de 3 matrices por medio de pre y post
     multiplicación
   • 50% BLAS2, no llega a 100% BLAS3
   • Eigenproblemas, SVD descomposición de valor singular
       • Eigenproblemas asimétricos son peores
• Problemas de banda estrecha son los peores (para llevarlo a BLAS3
  o paralelizar)
   • Ecuaciones lineales y eigenproblemas
• www.netlib.org/{lapack,scalapack}
                                                                         41
Algoritmos Recursivos
• También usa updates retrasados, pero organizados en
  forma diferente
• Puede explotar particiones de data recursiva
   • 3x speedups en mínimos cuadrados para matrices altas y delgadas




• En teoría, la performance de la jerarquía de memoria es
  óptima
• Referencias
   • “Recursive Block Algorithms and Hybrid Data Structures,” Elmroth,
     Gustavson, Jonsson, Kagstrom, SIAM Review, 2004
   • http://www.cs.umu.se/research/parallel/recursion/          42
GE usando un Algoritmo Recursivo
F. Gustavson y S. Toledo
 Algoritmo LU :
   1: Partir la matriz en 2 rectangulos (m x n/2)
        si solo queda 1 columna, escale por el reciproco del pivot y “return”

   2: Aplicar el algoritmo LU a la parte izquierda

   3: Aplique transformaciones a la parte derecha
       (solución triangular A12 = L-1A12 y
        mult. matrices A22=A22 -A21*A12 )

   4: Aplicar algoritmo LU a la parte derecha

                                           L      A12

                                           A21    A22

                                La mayor parte del computo es multiplicar
                                matrices de tamaño n/2, n/4, n/8, …
                                                                                43
                                                        Source: Jack Dongarra
Factorizaciones recursivas
• Tan precisas como los métodos convencionales
• Mismo número de operaciones
• Se forman bloques de tamaño variable en forma automática
   • Sólo operaciones BLAS nivel 1 y 3!
• Simplicidad de expresión
• Potencialmente eficientes pero a la vez “indiferente” al caché
    • Pero no se debería llevar la recursión hasta el extremo de 1 columna!
• La formulación recursiva es sólo un reajuste de algoritmos más
  viejos del LINPACK




                                                                        44
DGEMM ATLAS MHz Dual Processor
                            Pentium III 550 & DGETRF Recursive
                                    LU Factorization
                            AMD Athlon 1GHz (~$1100 system)

                800                                      Recursive LU

          400            Dual-processor
           600                                                 LAPACK
M FM flo/s /s




          300
   lo p p




           400                                                 Recursive LU
          200
           200                                                              LAPACK
          100            Uniprocessor

                00
                      500 1000 1000
                        500     1500   2000 1500
                                               2500   3000 3500
                                                        2000         4000
                                                                     2500     4500 3000
                                                                                     5000
                                                 Order
                                                 Order
                                                                                      45
                                                              Source: Jack Dongarra
Limites de los algortimos recursivos
• Dos clases de descomposiciones de matrices densas
• “Unilaterales”
    • Secuencia de operaciones sencillas aplicadas en la izquierda
      de la matriz
    • GE: A = L*U     o        A = P*L*U
       •   GE simétrica: A = L*D*LT
       •   Cholesky, sólo matrices simétricas: A = L*LT
    • Descomposición QR para mínimos cuadrados: A = Q*R
    • Puede acercarse a 100% BLAS 3
    • Susceptible de recursión
• “Bilaterales”
    • Secuencia de operaciones sencillas aplicadas en ambos lados,
      alternadamente
    • Algoritmos de Eigenvalores, SVD
    • Por lo menos ~25% BLAS 2
    • Enfoque recursivo imposible, difícil?
    • Algunos progresos la última decada: SVD (25% vs 50%
      BLAS2)


                                                                 46
Algoritmos “Out of Core”



 Out-of-core significa
  que la matriz reside en disco;
  muy grande para entrar
  completa en la RAM

 Mucho más difícil evitar
  efecto de latencia del disco

 QR más fácil que LU
  por que no hace falta
  pivotear para QR




                                                           47
                                   Source: Jack Dongarra
Slides
extra



         48
QR (Mínimos cuadrados)



 Escala bien,
  casi velocidad total
  de la computadora




                         49
Algoritmo actual:
Más rápido que el inicial
A veces hay inestabilidad
numérica
Algoritmos más rápidos y
estables se siguen investigando




 Algoritmo inicial:
 Numericamente estable
 Fácil de paralelizar
 Pero es lento, esta en
 obsolescencia
                                  50
Eigensolver simétrico escalable y SVD

El “Santo Grial” (Parlett, Dhillon, Marques)
Complejidad perfecta (O(n * #vectores)), Trivialmente paralelo, Preciso




              A ser incluido en LAPACK y ScaLAPACK
                                                                      51
Eigensolver asimétrico escalable

• Axi = λi xi , Forma de Schur A = QTQT
• HQR paralelo
   •   Henry, Watkins, Dongarra, Van de Geijn
   •   Ahora en ScaLAPACK
   •   No tan escalable como LU: N veces más mensajes
   •   Partición de datos Block-Hankel es mejor en teoría, pero no en
       ScaLAPACK
• Función de Signo
   • Beavers, Denman, Lin, Zmijewski, Bai, Demmel, Gu, Godunov, Bulgakov,
     Malyshev
   • Ai+1 = (Ai + Ai-1)/2 → proyección desplazada en Re λ > 0
   • Repetir en A transformada para el espectro del “divide y venceras”
   • Sólo usa inversión, por ello es escalable
   • Existe versión que no usa inversión (usa QRD)
   • Alto contador de flops comparado al HQR, menos estable

                                                                        52
Asignación de trabajo paralelo en GE
• Piense en asignar submatrices a hilos o procesos,
  donde cada hilo es responsible de updatear la submatriz
  que le fue asignada
   • “Que el dueño compute” es la regla natural de localidad
• Cómo deberían ser esas submatrices para lograr
  balance de carga?




                                                               53
Electromagnetismo computacional (MOM)


METODO DE MOMENTOS (una especia de método de
 elementos de frontera)
Los principales pasos en el proceso de solución son:
• Fill:     calcular los elementos de la matriz A
• Factor:   factorizar la matriz densa A
• Solve:     solucionar para uno o más vectores de
 excitación b
• Field Calc: computar los campos difundidos
 (reflejados, scattered) desde el objeto


                                                    54
Análisis del MOM en paralelo



Tarea         Trabajo     Paralelismo   Veloc.paralela


Fill          O(n**2)    trivial               baja
Factor        O(n**3)   + ó - difícil     muy alta
Solve         O(n**2)   + ó - difícil          alta
Field Calc.   O(n)       trivial               alta




                                                         55
Versión BLAS2 de GE con pivoteo parcial (GEPP)

      for i = 1 to n-1
         Hallar y guardar k donde |A(k,i)| = max{i <= j <= n} |A(j,i)|
               … o sea el mayor elemento del resto de la columna i
         if |A(k,i)| = 0
             Abortar con un aviso que A es singular, o casi singular
         elseif k != i
             Intercambiar filas i , k de A
         end if
         A(i+1:n,i) = A(i+1:n,i) / A(i,i)
                     … cada cociente esta en el intervalo [-1,1]
                     … BLAS 1
         A(i+1:n,i+1:n) = A(i+1:n , i+1:n ) - A(i+1:n , i) * A(i , i+1:n)
                     … BLAS 2, mayor parte del trabajo es aquí




                                                                            56
Electromagnetismo computacional – Solucionar Ax=b

•Desarrollado en los 80s, para aplicaciones militares
•Determinar el RCS (radar cross section) de aviones
•Reducir la imagen o eco de radar del avión (tecnología stealth
o furtiva, F-117, B-2, etc.)
•Otras aplicaciones: diseño de antenas, de equipo médico.
•Dos enfoques numéricos más fundamentales:
   •MOM , ó método de momentos, ó “methods of moments”,
   relacionado a BEM (dominio de la frecuencia)
       •Matrices densas grandes

   •Diferencias finitas (dominio del tiempo)
       •Matrices dispersas enormes



                                                              57
Electromagnetismo computacional
 - Discretizar la superficie del objeto en caras
 triangulares usando herramientas de modelado.
 - Amplitud de la corriente en cada careta son las
 incognitas




 - Ecuación integral se discretiza en un conjunto de
 ecuaciones lineales

                                                     58
Electromagnetismo computacional (MOM)


Después de la discretización, la ecuación integral
tiene la forma

                     A x = b
   donde
A es la matriz de impedancia (densa),
x es el vector desconocido de amplitudes, y
b es el vector de excitación.

(see Cwik, Patterson, and Scott, Electromagnetic Scattering on the Intel Touchstone Delta,
IEEE Supercomputing ‘92, pp 538 - 542)                                                   59
Resultados paralelos en la Intel Delta
    Tarea                                        Tiempo (horas)

    Fill (computar n2 elementos de la matriz)       9.20
            (trivialmente paralelo pero lento)

    Factor (GE, O(n3) )                            8.25
            (buen paralelismo con el algoritmo adecuado)

    Solve (O(n2))                                   2 .17
            (decente paralelismo con el algortimo adecuado)

    Field Calc. (O(n))                              0.12
             (trivialmente paralelo y rápido)

  El problema era de una matriz de tamaño 48,672.
  2.6 Gflops para Factor - Record mundial el 1991.60

Más contenido relacionado

La actualidad más candente

Señales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLABSeñales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLABJose Agustin Estrada
 
Tema 2 eficiencia_y_complejidad_grupo_21
Tema 2 eficiencia_y_complejidad_grupo_21Tema 2 eficiencia_y_complejidad_grupo_21
Tema 2 eficiencia_y_complejidad_grupo_21Carlos A. Iglesias
 
Lab 01 - Análisis de señales - UNTECS
Lab 01 - Análisis de señales - UNTECSLab 01 - Análisis de señales - UNTECS
Lab 01 - Análisis de señales - UNTECSIng. Electrónica xD
 
Lab 02 - Análisis de señales - UNTECS
Lab 02 - Análisis de señales - UNTECSLab 02 - Análisis de señales - UNTECS
Lab 02 - Análisis de señales - UNTECSIng. Electrónica xD
 
Zoom de una imagen
Zoom de una imagenZoom de una imagen
Zoom de una imagenlmarchenac01
 
Lab 07 - Analisis de señales - UNTECS
Lab 07 - Analisis de señales - UNTECSLab 07 - Analisis de señales - UNTECS
Lab 07 - Analisis de señales - UNTECSIng. Electrónica xD
 
Lab 03 - Análisis de Señales - UNTECS
Lab 03 - Análisis de Señales - UNTECSLab 03 - Análisis de Señales - UNTECS
Lab 03 - Análisis de Señales - UNTECSIng. Electrónica xD
 
Lab 04 - Analisis de Señales - UNTECS
Lab 04 - Analisis de Señales - UNTECSLab 04 - Analisis de Señales - UNTECS
Lab 04 - Analisis de Señales - UNTECSIng. Electrónica xD
 
RESOLUCION Capitulo4 soria porras
RESOLUCION Capitulo4 soria porrasRESOLUCION Capitulo4 soria porras
RESOLUCION Capitulo4 soria porrasALEX PORRAS
 
Lab 06 - Analisis de señales - UNTECS
Lab 06 - Analisis de señales - UNTECSLab 06 - Analisis de señales - UNTECS
Lab 06 - Analisis de señales - UNTECSIng. Electrónica xD
 
Convolucion Tiempo Discreto
Convolucion Tiempo DiscretoConvolucion Tiempo Discreto
Convolucion Tiempo Discretoguest1e528d
 
Practica 5 simulink-5156
Practica 5 simulink-5156Practica 5 simulink-5156
Practica 5 simulink-5156RossiHeredia1
 

La actualidad más candente (20)

Señales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLABSeñales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLAB
 
Tema 2 eficiencia_y_complejidad_grupo_21
Tema 2 eficiencia_y_complejidad_grupo_21Tema 2 eficiencia_y_complejidad_grupo_21
Tema 2 eficiencia_y_complejidad_grupo_21
 
Lab 01 - Análisis de señales - UNTECS
Lab 01 - Análisis de señales - UNTECSLab 01 - Análisis de señales - UNTECS
Lab 01 - Análisis de señales - UNTECS
 
Parte2
Parte2Parte2
Parte2
 
Lab 02 - Análisis de señales - UNTECS
Lab 02 - Análisis de señales - UNTECSLab 02 - Análisis de señales - UNTECS
Lab 02 - Análisis de señales - UNTECS
 
Solucion taller 1 de control 2
Solucion taller 1 de control 2Solucion taller 1 de control 2
Solucion taller 1 de control 2
 
211 matlab senales
211 matlab senales211 matlab senales
211 matlab senales
 
Zoom de una imagen
Zoom de una imagenZoom de una imagen
Zoom de una imagen
 
Lab 07 - Analisis de señales - UNTECS
Lab 07 - Analisis de señales - UNTECSLab 07 - Analisis de señales - UNTECS
Lab 07 - Analisis de señales - UNTECS
 
Lab 03 - Análisis de Señales - UNTECS
Lab 03 - Análisis de Señales - UNTECSLab 03 - Análisis de Señales - UNTECS
Lab 03 - Análisis de Señales - UNTECS
 
Lab 04 - Analisis de Señales - UNTECS
Lab 04 - Analisis de Señales - UNTECSLab 04 - Analisis de Señales - UNTECS
Lab 04 - Analisis de Señales - UNTECS
 
RESOLUCION Capitulo4 soria porras
RESOLUCION Capitulo4 soria porrasRESOLUCION Capitulo4 soria porras
RESOLUCION Capitulo4 soria porras
 
Transformada de laplace
Transformada de laplaceTransformada de laplace
Transformada de laplace
 
Lab 06 - Analisis de señales - UNTECS
Lab 06 - Analisis de señales - UNTECSLab 06 - Analisis de señales - UNTECS
Lab 06 - Analisis de señales - UNTECS
 
Series de fourier
Series de fourierSeries de fourier
Series de fourier
 
Convolucion Tiempo Discreto
Convolucion Tiempo DiscretoConvolucion Tiempo Discreto
Convolucion Tiempo Discreto
 
Utp 2015-2_ia_lab3
 Utp 2015-2_ia_lab3 Utp 2015-2_ia_lab3
Utp 2015-2_ia_lab3
 
Practica 5 simulink-5156
Practica 5 simulink-5156Practica 5 simulink-5156
Practica 5 simulink-5156
 
Matlabclase1
Matlabclase1Matlabclase1
Matlabclase1
 
Guia 2 matlab
Guia 2 matlabGuia 2 matlab
Guia 2 matlab
 

Similar a Paralela6

Mas_de_400_ejercicios_de_programacion_en (2).pdf
Mas_de_400_ejercicios_de_programacion_en (2).pdfMas_de_400_ejercicios_de_programacion_en (2).pdf
Mas_de_400_ejercicios_de_programacion_en (2).pdfmargothingrithllanca
 
Mas_de_400_ejercicios_de_programacion_en (1).pdf
Mas_de_400_ejercicios_de_programacion_en (1).pdfMas_de_400_ejercicios_de_programacion_en (1).pdf
Mas_de_400_ejercicios_de_programacion_en (1).pdfmargothingrithllanca
 
Taller Grafos - 2 corte - grupo 8DN -Matemáticas Discretas
Taller Grafos - 2 corte - grupo 8DN -Matemáticas DiscretasTaller Grafos - 2 corte - grupo 8DN -Matemáticas Discretas
Taller Grafos - 2 corte - grupo 8DN -Matemáticas DiscretasDirolo
 
Electrónica digital: Ruta de datos multiplexores y demultiplexores
Electrónica digital: Ruta de datos multiplexores y demultiplexores Electrónica digital: Ruta de datos multiplexores y demultiplexores
Electrónica digital: Ruta de datos multiplexores y demultiplexores SANTIAGO PABLO ALBERTO
 
02 Procesamiento de Datos.pptx
02 Procesamiento de Datos.pptx02 Procesamiento de Datos.pptx
02 Procesamiento de Datos.pptxOmarDS1
 
Tarea 12 funcion gràfica uni minuto
Tarea 12 funcion gràfica uni minutoTarea 12 funcion gràfica uni minuto
Tarea 12 funcion gràfica uni minutogrupoinformatica2014
 
Hoja De Trabajo Mate Iv Unidad 2
Hoja De Trabajo  Mate Iv  Unidad  2Hoja De Trabajo  Mate Iv  Unidad  2
Hoja De Trabajo Mate Iv Unidad 2dianuchi
 
Hoja De Trabajo Mate Iv Unidad 3
Hoja De Trabajo  Mate Iv  Unidad  3Hoja De Trabajo  Mate Iv  Unidad  3
Hoja De Trabajo Mate Iv Unidad 3dianuchi
 
Calculo2funciones 210809034720
Calculo2funciones 210809034720Calculo2funciones 210809034720
Calculo2funciones 210809034720ArmandoPaniagua7
 

Similar a Paralela6 (20)

Sistemas Difusos
Sistemas DifusosSistemas Difusos
Sistemas Difusos
 
Floyd
FloydFloyd
Floyd
 
Ca 3
Ca 3Ca 3
Ca 3
 
Mas_de_400_ejercicios_de_programacion_en (2).pdf
Mas_de_400_ejercicios_de_programacion_en (2).pdfMas_de_400_ejercicios_de_programacion_en (2).pdf
Mas_de_400_ejercicios_de_programacion_en (2).pdf
 
Mas_de_400_ejercicios_de_programacion_en (1).pdf
Mas_de_400_ejercicios_de_programacion_en (1).pdfMas_de_400_ejercicios_de_programacion_en (1).pdf
Mas_de_400_ejercicios_de_programacion_en (1).pdf
 
clase de matlab
clase  de   matlabclase  de   matlab
clase de matlab
 
Variables2
Variables2Variables2
Variables2
 
Taller Grafos - 2 corte - grupo 8DN -Matemáticas Discretas
Taller Grafos - 2 corte - grupo 8DN -Matemáticas DiscretasTaller Grafos - 2 corte - grupo 8DN -Matemáticas Discretas
Taller Grafos - 2 corte - grupo 8DN -Matemáticas Discretas
 
Recursividad
RecursividadRecursividad
Recursividad
 
Informe
InformeInforme
Informe
 
Polinomios
PolinomiosPolinomios
Polinomios
 
Electrónica digital: Ruta de datos multiplexores y demultiplexores
Electrónica digital: Ruta de datos multiplexores y demultiplexores Electrónica digital: Ruta de datos multiplexores y demultiplexores
Electrónica digital: Ruta de datos multiplexores y demultiplexores
 
02 Procesamiento de Datos.pptx
02 Procesamiento de Datos.pptx02 Procesamiento de Datos.pptx
02 Procesamiento de Datos.pptx
 
Tarea 12 funcion gràfica uni minuto
Tarea 12 funcion gràfica uni minutoTarea 12 funcion gràfica uni minuto
Tarea 12 funcion gràfica uni minuto
 
Hoja De Trabajo Mate Iv Unidad 2
Hoja De Trabajo  Mate Iv  Unidad  2Hoja De Trabajo  Mate Iv  Unidad  2
Hoja De Trabajo Mate Iv Unidad 2
 
Hoja De Trabajo Mate Iv Unidad 3
Hoja De Trabajo  Mate Iv  Unidad  3Hoja De Trabajo  Mate Iv  Unidad  3
Hoja De Trabajo Mate Iv Unidad 3
 
Calculo 2 funciones
Calculo 2 funcionesCalculo 2 funciones
Calculo 2 funciones
 
Calculo2funciones 210809034720
Calculo2funciones 210809034720Calculo2funciones 210809034720
Calculo2funciones 210809034720
 
Guia Especial
Guia EspecialGuia Especial
Guia Especial
 
Guia Especial
Guia EspecialGuia Especial
Guia Especial
 

Más de Abraham Zamudio

Más de Abraham Zamudio (7)

Clase4_Python-CTIC
Clase4_Python-CTICClase4_Python-CTIC
Clase4_Python-CTIC
 
Clase5_Python-CTIC
Clase5_Python-CTICClase5_Python-CTIC
Clase5_Python-CTIC
 
Clase3_Python-CTIC
Clase3_Python-CTICClase3_Python-CTIC
Clase3_Python-CTIC
 
Clase2_Python-CTIC
Clase2_Python-CTICClase2_Python-CTIC
Clase2_Python-CTIC
 
Clase1_Python-CTIC
Clase1_Python-CTICClase1_Python-CTIC
Clase1_Python-CTIC
 
Paralela10
Paralela10Paralela10
Paralela10
 
Paralela9
Paralela9Paralela9
Paralela9
 

Último

ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfPaolaRopero2
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesYanirisBarcelDelaHoz
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.docRodneyFrankCUADROSMI
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONALMiNeyi1
 
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdfMiguelHuaman31
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdfMiNeyi1
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfUPTAIDELTACHIRA
 

Último (20)

Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
 
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 

Paralela6

  • 1. Programación y Computación paralela (6) Sistemas de Ec. lineales Glen D. Rodríguez R. Basado en material de J. Demmel 1
  • 2. Tipos de datos de usuario en MPI • En el programa de metropolis por ejemplo, queríamos pasar 4 numeros (xmax, xmin, ymax, ymin) y tuvimos que hacer 4 broadcast. Mejor mandarlo todos como 1 solo broadcast, pero esos números no son array. • Creo un tipo de datos propio: • int long_bloque[4]; /*en este caso, todos los elementos =1*/ • MPI_Aint desplaz[4]; /*elements: 0, direc.xmin-direc.xmax, • Diecc.ymax-direc.xmax,direc.ymin-direc.xmax*/ • MPI_Datatype tipos[4]; /*todos son MPI_DOUBLE*/ • MPI_Datatype nuevotipo; • MPI_Type_struct(4, long_bloque, desplaz, tipos, &nuevotipo); • MPI_Type_commit(&nuevotipo); • MPI_Bcast(variable,1,nuevotipo,…….) 2
  • 3. Comunicadores en MPI • Comunicador: colección de procesos que se pueden mandar mensajes entre sí (“universo de comunicación”). • Topologías: estructura que direcciona las comunicaciones en un comunicador. • Se usaron en el ejemplo del alg. de Fox • En vez de Bcast(…,MPI_COMM_WORLD), hacer un Bcast(…,Fila3). En el comunicador Fila3 hay q procesos con rank del 0 al q-1. MPI_COMM_WORLD es un grupo con comunicador de todos los procesos p>=q, con rangos de 0 al p-1. Para un procesador generalemente p!=q • Cada comunicador tiene un identificador diferente. • MPI_Group mundo; • MPI_Group Fila1; • MPI_Comm Comun_Fila1; 3
  • 4. Sigue… • q=sqrt(p) • int rango[q]; • rango[0]=0; rango[1]=1; ….; rango[q-1]=q-1; • MPI_Comm_group(MPI_COMM_WORLD, &mundo); • MPI_Group_incl(mundo, q, rango, &Fila1); • MPI_Comm_Create(MPI_COMM_WORLD, Fila1, &Comun_Fila1); • ….. • MPI_Bcast(….., Comun_Fila1); • Se pueden crear varios comunicadores a la vez: • MPI_Comm comun_mi_fila; • int mi_fila; • MPI_Comm_rank(MPI_COMM_WORLD, &mi_rango) • mi_fila= mi_rango/q; /*division entera, no decimales*/ • MPI_Comm_split(MPI_COMM_WORLD, mi_fila, mi_rango, &comun_mi_fila); 4
  • 5. Sigue… • Topologías: permiten enumerar los procesos de un comunicador en formas nuevas, por ejemplo con do índices en vez de uno. • MPI_Comm comun_malla; • int tamano_dim[2], wraping[2], reorden=1; • tamano_dim[0]= tamano_dim[1]= q; • wraping[0]= wraping[1]= 1; • MPI_Cart_create(MPI_COMM_WORLD, 2, tamano_dim, wraping, reorden, &comun_malla) • El comunicador comun_malla tiene a todos los procesos originales de MPI_COMM_WORLD pero reordenados, y una numeración 2D cartesiana asociada. • Para que un proceso sepa sus coordenadas: • int coord[2]; int mi_rango_en_malla; • MPI_Comm_rank(comun_malla, &mi_rango_en_malla); 5 • MPI_Cart_coords(comun_malla, mi_rango_en_malla, 2, coord);
  • 6. Sigue… • Para pasar de coordenadas a rango, usar MPI_Cart_rank • Para dividir esta malla en mallas más pequeñas, se usa MPI_Cart_sub • Ver ejemplo de Fox y como se usan estas funciones 6
  • 7. Eliminación Gaussiana y matrices densas • Algebra lineal densa • “Gaussian Elimination” (GE) para resolver Ax=b • Optimizar GE para máquinas secuenciales con caché • Usando multiplicación matriz x matriz (BLAS) • LAPACK • Partición de la Data en comp.paralelas • GE paralelo • ScaLAPACK • Problemas de Eigenvalue 7
  • 9. Exitos usando Sca/LAPACK • Muy usado: • Adoptado por Mathworks, Cray, Fujitsu, HP, IBM, IMSL, NAG, NEC, SGI, … • >56M visitas en la web de Netlib (incl. CLAPACK, LAPACK95) • Descubrimientos hechos a través de la solución de sistemas de ec. densos • Artículo en Nature sobre el universo plano usó Cosmic Microwave Background ScaLAPACK Analysis, BOOMERanG collaboration, MADCAP code (Apr. 27, 2000). • Otros en Physics Review B también lo usaron ScaLAPACK • 1998 Premio Gordon Bell • www.nersc.gov/news/reports/ne wNERSCresults050703.pdf 9
  • 10. Motivación (1) 3 problemas básicos de Alg. Lineal 1. Ecuaciones Lineales: Resolver x en Ax=b 2. Mínimos cuadrados: Hallar x que minimiza ||r||2 ≡ √Σ ri2 donde r=Ax-b • Estadística: Ajustar datos a funciones simples 3a. Eigenvalues: Hallar λ , x tal que Ax = λ x • Análisis de vibraciones (terremotos, circuitos) 3b. Singular Value Decomposition: ATAx=σ2x • Ajuste de data, Obtención de información Muchas variaciones para diferentes estructuras de A • Simétrica, definida positiva, en bandas, … 10
  • 11. Motivación (2) • Por qué A densa, en vez de A dispersa? • Muchas matrices grandes son dispersas, pero … • Alg. Densos son más fáciles de entender • Algunas aplicaciones producen matrices densas grandes • LINPACK Benchmark (www.top500.org) • “Qué tan rápida es tu computadora?” = “Qué tan rápido resuelves Ax=b denso?” • Alg. de matriz dispersa grande con frecuencia producen menores (pero aún grandes) problemas densos. 11
  • 12. Records en la solución de Sist. Densos (2006) www.netlib.org, click en Performance Database Server Gigaflops Máquina n=100 n=1000 Any n Pico IBM BlueGene/L 281K 367K (131K procs) (281 Teraflops) (n=1.8M) NEC SX 8 (8 proc, 2 GHz) 75.1 128 (1 proc, 2 GHz) 2.2 15.0 16 … Palm Pilot III .00000169 (1.69 Kiloflops) 12
  • 13. Eliminación Gaussiana (GE) en Ax=b • Añadir múltiplos de cada fila a las demás para volver A en triangular sup. • Resolver el sist.triang. resultante Ux = c por sustitución … para cada columna i … “cerear” debajo de la diagonal añadiendo múltiplos de la fila i a las de abajo for i = 1 to n-1 … para cada fila j debajo de la fila i for j = i+1 to n … añadir un multiplo de la fila i a la fila j tmp = A(j,i); for k = i to n A(j,k) = A(j,k) - (tmp/A(i,i)) * A(i,k) 0 . 0 . 0 0 . 0 … 0 . 0 . . . . . . . . . . . . . 0 . . . . 0 . . 0 0 0 0 0 0 0 0 0 0 0 0 After i=1 After i=2 After i=3 After i=n-1 13
  • 14. Refinando el algoritmo GE (1) • Versión inicial … para cada columna i … “cerear” debajo de la diagonal añadiendo múltiplos de fila i a las de abajo for i = 1 to n-1 … para cada fila j debajo de fila i for j = i+1 to n … añadir un múltiplo de la fila i a la fila j tmp = A(j,i); for k = i to n A(j,k) = A(j,k) - (tmp/A(i,i)) * A(i,k) • Elimina computación de constante tmp/A(i,i) de loop interno for i = 1 to n-1 for j = i+1 to n m = A(j,i)/A(i,i) for k = i to n m A(j,k) = A(j,k) - m * A(i,k) 14
  • 15. Refinando el algoritmo GE (2) • Última versión for i = 1 to n-1 for j = i+1 to n m = A(j,i)/A(i,i) for k = i to n A(j,k) = A(j,k) - m * A(i,k) • No computa lo que ya se conoce: ceros bajo la diagonal en la columna i for i = 1 to n-1 for j = i+1 to n m = A(j,i)/A(i,i) for k = i+1 to n m A(j,k) = A(j,k) - m * A(i,k) No calcula los ceros 15
  • 16. Refinando el algoritmo GE (3) • Última versión for i = 1 to n-1 for j = i+1 to n m = A(j,i)/A(i,i) for k = i+1 to n A(j,k) = A(j,k) - m * A(i,k) • Guarda los factores m bajo la diagonal en el espacio donde irían los ceros para uso posterior for i = 1 to n-1 for j = i+1 to n A(j,i) = A(j,i)/A(i,i) for k = i+1 to n m A(j,k) = A(j,k) - A(j,i) * A(i,k) Guarda m aquí 16
  • 17. Refinando el algoritmo GE (4) • Última versión for i = 1 to n-1 for j = i+1 to n A(j,i) = A(j,i)/A(i,i) for k = i+1 to n A(j,k) = A(j,k) - A(j,i) * A(i,k) • Partir el loop for i = 1 to n-1 for j = i+1 to n A(j,i) = A(j,i)/A(i,i) for j = i+1 to n for k = i+1 to n A(j,k) = A(j,k) - A(j,i) * A(i,k) Guardar todos los m aquí antes de modificar el resto de la matriz 17
  • 18. Refinando el algoritmo GE (5) for i = 1 to n-1 • Última versión for j = i+1 to n A(j,i) = A(j,i)/A(i,i) for j = i+1 to n for k = i+1 to n A(j,k) = A(j,k) - A(j,i) * A(i,k) • Rápido usando operaciones de matrices (BLAS) for i = 1 to n-1 A(i+1:n,i) = A(i+1:n,i) * ( 1 / A(i,i) ) A(i+1:n,i+1:n) = A(i+1:n , i+1:n ) - A(i+1:n , i) * A(i , i+1:n) 18
  • 19. Qué computa en realidad la GE? for i = 1 to n-1 A(i+1:n,i) = A(i+1:n,i) / A(i,i) A(i+1:n,i+1:n) = A(i+1:n , i+1:n ) - A(i+1:n , i) * A(i , i+1:n) • Llamemos a la matriz triangular inferior de multiplicadores m como M, y hagamos L = I+M • Llamemos al triangulo superior de la matriz final como U • Lema (Factorización LU): Si el algoritmo anterior termina (no hay división por cero) entonces A = L*U • Solución de A*x=b usando GE • Factorizar A = L*U usando GE (costo = 2/3 n3 flops) • Resolver L*y = b para y, usando substitución (costo = n2 flops) • Resolver U*x = y para x, usando substitución (costo = n2 flops) • Por lo tanto A*x = (L*U)*x = L*(U*x) = L*y = b como se desea 19
  • 20. Problemas con el alg. GE básico • Qué pasa si algún A(i,i) es cero? O es muy pequeño? • Resultado inválido (div.por cero), o “inestable”, se necesita pivotear • Se computan operaciones BLAS 1 o BLAS 2, pero sabemos que las BLAS 3 (mult. de matrices) es más rápida (clase anterior…) for i = 1 to n-1 A(i+1:n,i) = A(i+1:n,i) / A(i,i) … BLAS 1 (escala un vector) A(i+1:n,i+1:n) = A(i+1:n , i+1:n ) … BLAS 2 (update en rango 1) - A(i+1:n , i) * A(i , i+1:n) Pico BLAS 3 BLAS 2 BLAS 1 20
  • 21. Pivotear en GE • A = [ 0 1 ] falla por que no se puede dividir entre A(1,1)=0 [1 0] • Pero resolver Ax=b es facilísimo! • Cuando elemento diagonal A(i,i) es diminuto (no sólo cero), el algoritmo puede terminar pero dar una respuesta completamente errada • Inestabilidad numérica • La causa es el error de redondeo a punto flotante • Cura: usar Pivot (intercambiar filas de A) tal que A(i,i) sea grande 21
  • 22. GE con Pivot Parcial (GEPP) • Pivoteo Parcial: intercambiar filas tal que A(i,i) es la mayor en su columna for i = 1 to n-1 Hallar y guardar k donde |A(k,i)| = max{i <= j <= n} |A(j,i)| … o sea, el mayor element en el resto de la columna i if |A(k,i)| = 0 exit con advertencia que A es singular, o casi singular elseif k != i intercambiar filas i , k de A end if A(i+1:n,i) = A(i+1:n,i) / A(i,i) … cada cociente cae en [-1,1] A(i+1:n,i+1:n) = A(i+1:n , i+1:n ) - A(i+1:n , i) * A(i , i+1:n) • Lema: este algoritmo computa A = P*L*U, donde P es una matriz de permutación. • Es numéricamente estable en la práctica • Para más detalles ver código LAPACK en http://www.netlib.org/lapack/single/sgetf2.f 22
  • 23. Problemas con el alg. GE básico • Qué pasa si A(i,i) es cero? O es muy pequeño? • Resultado inválido, o “inestable”, así que se debe pivotear • Se computan operaciones BLAS 1 o BLAS 2, pero sabemos que las BLAS 3 (mult. de matrices) es más rápida (clase anterior…) for i = 1 to n-1 A(i+1:n,i) = A(i+1:n,i) / A(i,i) … BLAS 1 (escala un vector) A(i+1:n,i+1:n) = A(i+1:n , i+1:n ) … BLAS 2 (update en rango 1) - A(i+1:n , i) * A(i , i+1:n) Pico BLAS 3 BLAS 2 BLAS 1 23
  • 24. Convirtiendo BLAS2 a BLAS3 en GEPP • Bloques • Usado para optimizar mult.matrices • Más difícil en GE por las dependencias de data en GEPP • GRAN IDEA: Updates retrasados • Salvar varios updates consecutivos BLAS2 a una “matriz relegada” • Aplicar muchos updates simultáneamente en una operación BLAS2 • La misma idea funciona en otras partes del alg. lineal • Quedan preguntas por resolver…. • Primer enfoque: necesito escoger un tamaño de bloque b • Algoritmo guarda y aplica b updates • b debe ser suficientemente pequeño de tal forma que la sub matriz activa consistente en b columnas de A quepa en el cache • b debe ser suficientemente grande para que BLAS3 sea rápido 24
  • 25. GEPP en bloques (www.netlib.org/lapack/single/sgetrf.f) for ib = 1 to n-1 step b … Procesa b columnas end = ib + b-1 … Apunta al final del bloque de b columns aplica versión BLAS2 de GEPP para obtener A(ib:n , ib:end) = P’ * L’ * U’ … LL denota la parte triangular inferior de A(ib:end , ib:end) + I A(ib:end , end+1:n) = LL-1 * A(ib:end , end+1:n) … update siguientes b filas de U A(end+1:n , end+1:n ) = A(end+1:n , end+1:n ) - A(end+1:n , ib:end) * A(ib:end , end+1:n) … aplica updates retrasados con una mult.matrices … de dimensiones w x b , b x w (For a correctness proof, see on-line notes from CS267 / 1996.) 25
  • 26. Eficiencia del GEPP en bloques Speed (LAPACK/LU) / Speed(best effort) 1.2 Speed(Matmul) / HW Peak Speed(LAPACK LU) / Speed(MatMul) 1 0.8 Efficiency 0.6 0.4 0.2 0 Cnvx C4 Cnvx C4 Cray C90 Cray C90 Alpha RS6000 SGI PC (1 p) (4 p) (1 p) (16 p) 26
  • 27. Vista general de LAPACK y ScaLAPACK • Librería estándar para algebra lineal densa y en bandas • Sistemas lineales: A*x=b • Problemas de mínimos cuadrados: minx || A*x-b ||2 • Problemas de Eigenvalues: Ax = λx, Ax = λBx • Descomposición en valores singulares (SVD): A = UΣVT • Alg. reorganizados para usar lo más posible BLAS3 • Base de librerías matemáticas en muchos sistemas, Matlab, etc … • Aún faltan más mejoras por implementar • Proyectos para maestrías, doctorados? 27
  • 28. Performance de LAPACK (n=1000) Performance de Eigen- values, SVD, etc. 28
  • 29. Performance de LAPACK (n=100) Eficiencia es mucho menor para matrices más chicas 29
  • 30. Paralelizando la GE • Pasos de la paralelización • Descomposición: identificar suficiente trabajo paralelo, pero no demasiado • Asignación: balance de carga entre procesos • Coordinación: comunicación y sincronización • Mapeo: qué procesadores ejecutan qué tareas? • Descomposición • En la parte BLAS 2, casi cada flop en el loop interno puede hacerse en paralelo, así que con n2 procs., necesito 3n pasos paralelos for i = 1 to n-1 A(i+1:n,i) = A(i+1:n,i) / A(i,i) … BLAS 1 (escala un vector) A(i+1:n,i+1:n) = A(i+1:n , i+1:n ) … BLAS 2 (update rango 1) - A(i+1:n , i) * A(i , i+1:n) • Esto es grano muy fino, mejor es llamar a mult.matrices locales • Necesario usar mult.matrices paralelo • Asignación • Que procesadores son responsables de qué submatrices? 30
  • 31. Diferentes particiones de data para GE paralelo Mal balance de carga: Mejor balance, pero P0 ocioso luego de 0123012301230123 0 1 2 3 difícil usar BLAS2 o n/4 pasos BLAS3 1) Bloque de columnas 1D 2) Columnas 1D cíclicas Se puede negociar balance de carga y 0 1 2 3 Difícil de performance BLAS2/3 3 0 1 2 direccionar cambiando b, pero la 0 1 2 3 0 1 2 3 factorización del 2 3 0 1 bloque de columnas es 1 2 3 0 el cuello de botella b 3) Bloques cíclicos de columnas 1D 4) Bloques de diagonales 0 1 0 1 0 1 0 1 Mal balance de carga: 0 1 2 0 3 1 2 0 3 1 2 0 3 1 2 0 3 1 P0 ocioso luego de 2 3 2 3 2 3 2 3 El mejor! 0 1 0 1 0 1 0 1 n/2 pasos 2 3 2 3 2 3 2 3 2 3 0 1 0 1 0 1 0 1 2 3 2 3 2 3 2 3 6) Bloques cíclicos de filas 5) Bloques de filas y columnas 2D y columnas 2D 31
  • 32. Revisión: GEPP con BLAS 3 (con bloques) for ib = 1 to n-1 step b … Procesa matriz de b columnas end = ib + b-1 … Apunta alfinal del bloque de b columnas aplica ver.BLAS2 de GEPP para onbtener A(ib:n , ib:end) = P’ * L’ * U’ … LL denota parte triangular inferior de A(ib:end , ib:end) + I A(ib:end , end+1:n) = LL-1 * A(ib:end , end+1:n) … update sgtes.b filas de U BLAS 3 A(end+1:n , end+1:n ) = A(end+1:n , end+1:n ) - A(end+1:n , ib:end) * A(ib:end , end+1:n) … aplicar updates retrasados con una mult.matrices … de dimensiones w x b, x w 32
  • 33. Bloque cíclico de Filas y Columnas • Procesadores y bloques de matrices bcol están distribuidos en un array 2d brow 0 2 1 3 0 2 1 3 0 2 1 3 0 2 1 3 •Array de procesadores prow x pcol 0 1 0 1 0 1 0 1 •Bloques de matrices brow x bcol 2 3 2 3 2 3 2 3 • Paralelismo “pcol” veces en cualquier 0 1 0 1 0 1 0 1 2 3 2 3 2 3 2 3 0 1 0 1 0 1 0 1 columna, y llamadas a BLAS2 y 2 3 2 3 2 3 2 3 BLAS3 en matrices de tamaño brow x bcol • Cuello de botella serial es menos problemático • prow ≠ pcol y brow ≠ bcol posible, es más deseable 33
  • 34. GE distribuido con Bloques cíclicos 2D • Tamaño de bloque b en el algoritmo y los tamaños de bloque brow y bcol en la partición satisfacen b=bcol. • Regiones sombreadas indican procesadores ocupados con computación o comunicación. • No es necesario tener barrera entre pasos sucesivos del algoritmo, ej: pasos 9, 10, y 11 se pueden hacer en “paralelo” 34
  • 35. Distributed GE with a 2D Block Cyclic Layout Contador de columnas Contador de filas 35
  • 36. –1 Mult. matrices de 36 verde = verde -azul * rosa
  • 37. Revisión de MatMul paralela • Se quiere problemas grandes por procesador PDGEMM = PBLAS mat.mul. Observaciones: • Para N fijo, si P crece, Mflops crece pero menos que 100% de eficiencia • Si P es fijo, si N crece, Mflops (eficiencia) crece DGEMM = rutina BLAS para mat.mul. Máxima velocidad para PDGEMM = # Procs * velocidad DGEMM Observaciones: • Eficiencia siempre es por lo menos 48% • Para N fijo, si P crece, eficiencia disminuye • Para P fijo, si N crece, eficiencia crece 37
  • 38. PDGESV = LU paralelo de ScaLAPACK Como no puede correr más rápido que el loop interno (PDGEMM), hacemos: Eficiencia = Veloc(PDGESV)/Veloc(PDGEMM) Observaciones: • Eficiencia muy por encima de 50% para problemas suficientemente grandes • Para N fijo, si P crece, eficiencia disminuye (igual que en PDGEMM) • Para P fijo, si N crece, eficiencia crece (igual que en PDGEMM) • Según la tabla inferior, el coso de resolver • Ax=b es aprox. la mitad del mat.mul. para matrices suficientemente grandes. • Del contador de flops se deduce que debería ser (2*n3)/(2/3*n3) = 3 veces más rápida, pero la comunicación lo hace algo más lento. 38
  • 39. Modelos de performance ScaLAPACK (1) Contador de operaciones de ScaLAPACK tf = 1 tm = α tv = β ΝΒ = brow=bcol √P = prow = pcol 39
  • 40. Modelos de performance ScaLAPACK (2) Comparar Predicciones y Mediciones (LU) (Cholesky) 40
  • 41. Escalabilidad de LAPACK y ScaLAPACK • Problemas “unilaterales” son escalables • En GE, A factorizada como el producto de 2 matrices A = LU por medio de pre-multiplicar A por una secuencia de matrices más simples • Asintóticamente es 100% BLAS3 • LU (“Linpack Benchmark”) • Cholesky, QR • Problemas “Bilaterales” som menos escalables • A factorizada como producto de 3 matrices por medio de pre y post multiplicación • 50% BLAS2, no llega a 100% BLAS3 • Eigenproblemas, SVD descomposición de valor singular • Eigenproblemas asimétricos son peores • Problemas de banda estrecha son los peores (para llevarlo a BLAS3 o paralelizar) • Ecuaciones lineales y eigenproblemas • www.netlib.org/{lapack,scalapack} 41
  • 42. Algoritmos Recursivos • También usa updates retrasados, pero organizados en forma diferente • Puede explotar particiones de data recursiva • 3x speedups en mínimos cuadrados para matrices altas y delgadas • En teoría, la performance de la jerarquía de memoria es óptima • Referencias • “Recursive Block Algorithms and Hybrid Data Structures,” Elmroth, Gustavson, Jonsson, Kagstrom, SIAM Review, 2004 • http://www.cs.umu.se/research/parallel/recursion/ 42
  • 43. GE usando un Algoritmo Recursivo F. Gustavson y S. Toledo Algoritmo LU : 1: Partir la matriz en 2 rectangulos (m x n/2) si solo queda 1 columna, escale por el reciproco del pivot y “return” 2: Aplicar el algoritmo LU a la parte izquierda 3: Aplique transformaciones a la parte derecha (solución triangular A12 = L-1A12 y mult. matrices A22=A22 -A21*A12 ) 4: Aplicar algoritmo LU a la parte derecha L A12 A21 A22 La mayor parte del computo es multiplicar matrices de tamaño n/2, n/4, n/8, … 43 Source: Jack Dongarra
  • 44. Factorizaciones recursivas • Tan precisas como los métodos convencionales • Mismo número de operaciones • Se forman bloques de tamaño variable en forma automática • Sólo operaciones BLAS nivel 1 y 3! • Simplicidad de expresión • Potencialmente eficientes pero a la vez “indiferente” al caché • Pero no se debería llevar la recursión hasta el extremo de 1 columna! • La formulación recursiva es sólo un reajuste de algoritmos más viejos del LINPACK 44
  • 45. DGEMM ATLAS MHz Dual Processor Pentium III 550 & DGETRF Recursive LU Factorization AMD Athlon 1GHz (~$1100 system) 800 Recursive LU 400 Dual-processor 600 LAPACK M FM flo/s /s 300 lo p p 400 Recursive LU 200 200 LAPACK 100 Uniprocessor 00 500 1000 1000 500 1500 2000 1500 2500 3000 3500 2000 4000 2500 4500 3000 5000 Order Order 45 Source: Jack Dongarra
  • 46. Limites de los algortimos recursivos • Dos clases de descomposiciones de matrices densas • “Unilaterales” • Secuencia de operaciones sencillas aplicadas en la izquierda de la matriz • GE: A = L*U o A = P*L*U • GE simétrica: A = L*D*LT • Cholesky, sólo matrices simétricas: A = L*LT • Descomposición QR para mínimos cuadrados: A = Q*R • Puede acercarse a 100% BLAS 3 • Susceptible de recursión • “Bilaterales” • Secuencia de operaciones sencillas aplicadas en ambos lados, alternadamente • Algoritmos de Eigenvalores, SVD • Por lo menos ~25% BLAS 2 • Enfoque recursivo imposible, difícil? • Algunos progresos la última decada: SVD (25% vs 50% BLAS2) 46
  • 47. Algoritmos “Out of Core” Out-of-core significa que la matriz reside en disco; muy grande para entrar completa en la RAM Mucho más difícil evitar efecto de latencia del disco QR más fácil que LU por que no hace falta pivotear para QR 47 Source: Jack Dongarra
  • 49. QR (Mínimos cuadrados) Escala bien, casi velocidad total de la computadora 49
  • 50. Algoritmo actual: Más rápido que el inicial A veces hay inestabilidad numérica Algoritmos más rápidos y estables se siguen investigando Algoritmo inicial: Numericamente estable Fácil de paralelizar Pero es lento, esta en obsolescencia 50
  • 51. Eigensolver simétrico escalable y SVD El “Santo Grial” (Parlett, Dhillon, Marques) Complejidad perfecta (O(n * #vectores)), Trivialmente paralelo, Preciso A ser incluido en LAPACK y ScaLAPACK 51
  • 52. Eigensolver asimétrico escalable • Axi = λi xi , Forma de Schur A = QTQT • HQR paralelo • Henry, Watkins, Dongarra, Van de Geijn • Ahora en ScaLAPACK • No tan escalable como LU: N veces más mensajes • Partición de datos Block-Hankel es mejor en teoría, pero no en ScaLAPACK • Función de Signo • Beavers, Denman, Lin, Zmijewski, Bai, Demmel, Gu, Godunov, Bulgakov, Malyshev • Ai+1 = (Ai + Ai-1)/2 → proyección desplazada en Re λ > 0 • Repetir en A transformada para el espectro del “divide y venceras” • Sólo usa inversión, por ello es escalable • Existe versión que no usa inversión (usa QRD) • Alto contador de flops comparado al HQR, menos estable 52
  • 53. Asignación de trabajo paralelo en GE • Piense en asignar submatrices a hilos o procesos, donde cada hilo es responsible de updatear la submatriz que le fue asignada • “Que el dueño compute” es la regla natural de localidad • Cómo deberían ser esas submatrices para lograr balance de carga? 53
  • 54. Electromagnetismo computacional (MOM) METODO DE MOMENTOS (una especia de método de elementos de frontera) Los principales pasos en el proceso de solución son: • Fill: calcular los elementos de la matriz A • Factor: factorizar la matriz densa A • Solve: solucionar para uno o más vectores de excitación b • Field Calc: computar los campos difundidos (reflejados, scattered) desde el objeto 54
  • 55. Análisis del MOM en paralelo Tarea Trabajo Paralelismo Veloc.paralela Fill O(n**2) trivial baja Factor O(n**3) + ó - difícil muy alta Solve O(n**2) + ó - difícil alta Field Calc. O(n) trivial alta 55
  • 56. Versión BLAS2 de GE con pivoteo parcial (GEPP) for i = 1 to n-1 Hallar y guardar k donde |A(k,i)| = max{i <= j <= n} |A(j,i)| … o sea el mayor elemento del resto de la columna i if |A(k,i)| = 0 Abortar con un aviso que A es singular, o casi singular elseif k != i Intercambiar filas i , k de A end if A(i+1:n,i) = A(i+1:n,i) / A(i,i) … cada cociente esta en el intervalo [-1,1] … BLAS 1 A(i+1:n,i+1:n) = A(i+1:n , i+1:n ) - A(i+1:n , i) * A(i , i+1:n) … BLAS 2, mayor parte del trabajo es aquí 56
  • 57. Electromagnetismo computacional – Solucionar Ax=b •Desarrollado en los 80s, para aplicaciones militares •Determinar el RCS (radar cross section) de aviones •Reducir la imagen o eco de radar del avión (tecnología stealth o furtiva, F-117, B-2, etc.) •Otras aplicaciones: diseño de antenas, de equipo médico. •Dos enfoques numéricos más fundamentales: •MOM , ó método de momentos, ó “methods of moments”, relacionado a BEM (dominio de la frecuencia) •Matrices densas grandes •Diferencias finitas (dominio del tiempo) •Matrices dispersas enormes 57
  • 58. Electromagnetismo computacional - Discretizar la superficie del objeto en caras triangulares usando herramientas de modelado. - Amplitud de la corriente en cada careta son las incognitas - Ecuación integral se discretiza en un conjunto de ecuaciones lineales 58
  • 59. Electromagnetismo computacional (MOM) Después de la discretización, la ecuación integral tiene la forma A x = b donde A es la matriz de impedancia (densa), x es el vector desconocido de amplitudes, y b es el vector de excitación. (see Cwik, Patterson, and Scott, Electromagnetic Scattering on the Intel Touchstone Delta, IEEE Supercomputing ‘92, pp 538 - 542) 59
  • 60. Resultados paralelos en la Intel Delta Tarea Tiempo (horas) Fill (computar n2 elementos de la matriz) 9.20 (trivialmente paralelo pero lento) Factor (GE, O(n3) ) 8.25 (buen paralelismo con el algoritmo adecuado) Solve (O(n2)) 2 .17 (decente paralelismo con el algortimo adecuado) Field Calc. (O(n)) 0.12 (trivialmente paralelo y rápido) El problema era de una matriz de tamaño 48,672. 2.6 Gflops para Factor - Record mundial el 1991.60