Sistemas de Ecuaciones Lineales

Click here to load reader

  • date post

    13-Jan-2016
  • Category

    Documents

  • view

    23
  • download

    0

Embed Size (px)

description

Sistemas de Ecuaciones Lineales. Glen D. Rodríguez R. Algoritmos Paralelos Basado en material de J. Demmel. Eliminación Gaussiana y matrices densas. Algebra lineal densa “Gaussian Elimination” (GE) para resolver Ax=b Optimizar GE para máquinas secuenciales con caché - PowerPoint PPT Presentation

Transcript of Sistemas de Ecuaciones Lineales

  • Sistemas de Ecuaciones LinealesGlen D. Rodrguez R.Algoritmos ParalelosBasado en material de J. Demmel

  • Eliminacin Gaussiana y matrices densasAlgebra lineal densaGaussian Elimination (GE) para resolver Ax=bOptimizar GE para mquinas secuenciales con cachUsando multiplicacin matriz x matriz (BLAS)LAPACKParticin de la Data en comp.paralelasGE paraleloScaLAPACKProblemas de Eigenvalue

  • Sca/LAPACK Overview

  • Exitos usando Sca/LAPACKMuy 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 travs de la solucin de sistemas de ec. densosArtculo en Nature sobre el universo plano us ScaLAPACKOtros en Physics Review B tambin lo usaron1998 Premio Gordon Bellwww.nersc.gov/news/reports/newNERSCresults050703.pdfCosmic Microwave Background Analysis, BOOMERanG collaboration, MADCAP code (Apr. 27, 2000).ScaLAPACK

  • Usos de Solucin de sistemas de ecuaciones linealesResistencia de estructuras (ing. civil)Stress, tensiones en piezas mecnicasElectromagnetismo, electrodinmicaCircuitos elctricosIng. de trfico.DSP, ptica (de-convolucin)Economa y finanzas.

  • Motivacin (1)3 problemas bsicos de Alg. LinealEcuaciones Lineales: Resolver x en Ax=bMnimos cuadrados: Hallar x que minimiza ||r||2 S ri2 donde r=Ax-bEstadstica: Ajustar datos a funciones simples3a. Eigenvalues: Hallar l , x tal que Ax = l xAnlisis de vibraciones (terremotos, circuitos)3b. Singular Value Decomposition: ATAx=2xAjuste de data, Obtencin de informacinMuchas variaciones para diferentes estructuras de ASimtrica, definida positiva, en bandas,

  • Motivacin (2) Por qu A densa, en vez de A dispersa?Muchas matrices grandes son dispersas, pero Alg. Densos son ms fciles de entender Algunas aplicaciones producen matrices densas grandesLINPACK Benchmark (www.top500.org)Qu tan rpida es tu computadora? = Qu tan rpido resuelves Ax=b denso?Alg. de matriz dispersa grande con frecuencia producen menores (pero an grandes) problemas densos.

  • Records en la solucin de Sist. Densos (2006) GigaflopsMquina 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

    www.netlib.orgPalm Pilot III .00000169 (1.69 Kiloflops)

  • Records en la solucin de Sist. Densos (2011/2)www.netlib.org4 AMD Athlon K7 500 Mhz (256 Mb) (2x) 100 Mbs Switched 2 NICs per node (channel bonding)

    8 Duals Intel PIII 550 Mhz (512 Mb) - Myrinet

    Compaq 64 nodes (4 ev67 667 Mhz processors / node) AlphaServer SC

    Performance (Gflops) , Problem size on 4 nodes. Performance (Gflops), Problem size on 8- and 16-processors grids.

    GRID200050008000100001 x 41.281.731.891.952 x 21.171.681.881.934 x 10.811.431.701.80

    GRID2000500080001000015000200002 x 41.762.322.512.582.722.734 x 42.273.944.464.685.005.16

    GRID N 1/2 Nmax Rmax (Gflops) Efficiency 1 x 1 150 6625 1.136 1.000 2 x 2 800 13250 4.360 0.960 4 x 4 2300 26500 17.00 0.935 8 x 8 5700 53000 67.50 0.928 16 x 16 14000 106000 263.6 0.906

  • Eliminacin Gaussiana (GE) en Ax=bAadir mltiplos de cada fila a las dems para volver A en triangular sup.Resolver el sist.triang. resultante Ux = c por sustitucin para cada columna i cerear debajo de la diagonal aadiendo mltiplos de la fila i a las de abajofor i = 1 to n-1 para cada fila j debajo de la fila i for j = i+1 to n aadir 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...00...00.00000...00...00.00...00...00...0After i=1After i=2After i=3After i=n-1

  • Refinando el algoritmo GE (1)Versin inicial

    Elimina computacin de constante tmp/A(i,i) de loop interno para cada columna i cerear debajo de la diagonal aadiendo mltiplos de fila i a las de abajofor i = 1 to n-1 para cada fila j debajo de fila i for j = i+1 to n aadir un mltiplo 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)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)m

  • Refinando el algoritmo GE (2)ltima versin

    No computa lo que ya se conoce: ceros bajo la diagonal en la columna ifor 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)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 calcula los cerosm

  • Refinando el algoritmo GE (3)ltima versin

    Guarda los factores m bajo la diagonal en el espacio donde iran los ceros para uso posteriorfor 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)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)Guarda m aqum

  • Refinando el algoritmo GE (4)ltima versin

    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 loopfor 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

  • Refinando el algoritmo GE (5)ltima versin

    Rpido 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)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)

  • Qu computa en realidad la GE?

    Llamemos a la matriz triangular inferior de multiplicadores m como M, y hagamos L = I+MLlamemos al triangulo superior de la matriz final como ULema (Factorizacin LU): Si el algoritmo anterior termina (no hay divisin por cero) entonces A = L*USolucin de A*x=b usando GEFactorizar A = L*U usando GE (costo = 2/3 n3 flops)Resolver L*y = b para y, usando substitucin (costo = n2 flops)Resolver U*x = y para x, usando substitucin (costo = n2 flops)Por lo tanto A*x = (L*U)*x = L*(U*x) = L*y = b como se deseafor 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)

  • Problemas con el alg. GE bsicoQu pasa si algn A(i,i) es cero? O es muy pequeo?Resultado invlido (div.por cero), o inestable, se necesita pivotearSe computan operaciones BLAS 1 o BLAS 2, pero sabemos que las BLAS 3 (mult. de matrices) es ms rpida (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)PicoBLAS 3BLAS 2BLAS 1

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

    Pero resolver Ax=b es facilsimo! Cuando elemento diagonal A(i,i) es diminuto (no slo cero), el algoritmo puede terminar pero dar una respuesta completamente errada Inestabilidad numricaLa causa es el error de redondeo a punto flotante

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

  • GE con Pivot Parcial (GEPP) Pivoteo Parcial: intercambiar filas tal que A(i,i) es la mayor en su columnafor i = 1 to n-1 Hallar y guardar k donde |A(k,i)| = max{i
  • Problemas con el alg. GE bsicoQu pasa si A(i,i) es cero? O es muy pequeo?Resultado invlido, o inestable, as que se debe pivotearSe computan operaciones BLAS 1 o BLAS 2, pero sabemos que las BLAS 3 (mult. de matrices) es ms rpida (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)PicoBLAS 3BLAS 2BLAS 1

  • Convirtiendo BLAS2 a BLAS3 en GEPPBloquesUsado para optimizar mult.matrices Ms difcil en GE por las dependencias de data en GEPP GRAN IDEA: Updates retrasadosSalvar varios updates consecutivos BLAS2 a una matriz relegadaAplicar muchos updates simultneamente en una operacin BLAS2La misma idea funciona en otras partes del alg. linealQuedan preguntas por resolver.Primer enfoque: necesito escoger un tamao de bloque bAlgoritmo guarda y aplica b updatesb debe ser suficientemente pequeo de tal forma que la sub matriz activa consistente en b columnas de A quepa en el cacheb debe ser suficientemente grande para que BLAS3 sea rpido

  • 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 versin 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