Eliminacion Gaussiana.

5
UNI-CTIC 1 Eliminacion Gaussiana Mendoza Olivares, Jesus Ticse Torres, Royer Lima, 25 de Agosto del 2009 Resumen—En el siguiente trabajo, se examina uno de los algoritmos m´ as conocidos para resolver un sistema lineal de ecuaciones el algoritmo de eliminaci´ on gaussiana en su versi´ on paralela. I. I NTRODUCCI ´ ON Este m´ etodo trabaja directamente sobre la matriz aumentada para resolver un sistema de ecuaciones lineales, llevandola a la matriz de un sistema triangular que es eqivalente al sistema inicial. La equivalencia del sistema triangular final con el inicial se argumenta debido a que el algoritmo s´ olo utilizamos operaciones elementloes entre las filas y cuya aplicaci´ on individual siempre preserva la equivalencia. Implementamos el algoritmo de eliminaci´ on Gaussiana en forma paralela y se realizar´ a una revisi´ on sobre el trabajo computacional realizado por este m´ etodo. II. OBJETIVOS Entender el algoritmo de Eliminaci´ on Gassuina para solucionar un sistema de ecuaciones. Implementar la versi´ on paralela del algoritmo Elimi- naci´ on Gaussiana. III. PLANTEAMIENTO DEL PROBLEMA La principal caracteristica de la Eliminaci´ on Gaussiana es transformar el sistema original AX = B en un sistema lineal equivalente UX = Y donde U es una matriz triangular superior. La raz´ on de lograr ´ esta transformaci´ on del sistema es que el nuevo sistema es as simple y resolverlo s´ olo requiere un proceso hacia atr´ as. Por ejemplo, tomemos A una matriz de dimenci´ on n =4. a 11 a 12 a 13 a 14 a 21 a 22 a 23 a 24 a 31 a 32 a 33 a 34 a 41 a 42 a 43 a 44 Las opreraciones disponibles son multiplicar un vector fila por un escalar y a˜ nadirlo a otra fila. 1. Nos intereza que las posiciones 21, 31, 41 de la matriz sean ceros, esto lo podemos lograr sustrayendo un multiplo adecuado de la primera fila de A. fila2 fila2 - m 21 * fila1 donde:m 21 = a 21 /a 11 . fila3 fila3 - m 31 * fila1 donde:m 31 = a 31 /a 11 . fila4 fila4 - m 41 * fila1 donde:m 41 = a 41 /a 11 . y entonces nuestra matriz A la hemos transformado en: a 11 a 12 a 13 a 14 0 u 22 u 23 u 24 0 u 32 u 33 u 34 0 u 42 u 43 u 44 2. Ahora, enfoquemos nuestra atenci´ on al subproblema de una matriz de 3x3 u 22 u 23 u 24 u 32 u 33 u 34 u 42 u 43 u 44 En forma similar, hacemos ceros los elementos por debajo de u 22 , para lograrlo operemos fila3 fila3 - m 32 * fila2 donde:m 32 = u 32 /u 22 . fila4 fila4 - m 42 * fila2 donde:m 42 = u 42 /u 22 . 3. Luego, nuestra matriz se ha trasformado en: a 11 a 12 a 13 a 14 0 u 22 u 23 u 24 0 0 v 33 v 34 0 0 v 43 v 44 ahora solo nos resta operar con una fila para reducir v 43 a cero. fila4 fila4 - m 43 * fila3 donde:m 43 = v 43 /v 33 . Lo que nos da lugar a la matriz triangular superior: a 11 a 12 a 13 a 14 0 u 22 u 23 u 24 0 0 v 33 v 34 0 0 0 w 44 Contando con el sistema: a 11 a 12 a 13 a 14 0 u 22 u 23 u 24 0 0 v 33 v 34 0 0 0 w 44 x 1 x 2 x 3 x 4 = y 1 y 2 y 3 y 4 Introduzcamos la idea de matriz aumentada: [AB] y sobre ella, realicemos las operaciones indicadas en los pasos 1, 2, ..., n - 1. Al hacerlo, estaremos trabajando sobre la parte activa de A pero de igual forma sobre las filas correspondientes a B. El resultado ser´ a [U Y ] donde Y es el resultado de los cambios ocurridos a B al aplicarle las operaciones fila que hemos considerado.

description

Eliminacion gaussiana paralela.

Transcript of Eliminacion Gaussiana.

Page 1: Eliminacion Gaussiana.

UNI-CTIC 1

Eliminacion GaussianaMendoza Olivares, Jesus

Ticse Torres, RoyerLima, 25 de Agosto del 2009

Resumen—En el siguiente trabajo, se examina uno de losalgoritmos mas conocidos para resolver un sistema lineal deecuaciones el algoritmo de eliminacion gaussiana en su versionparalela.

I. I NTRODUCCION

Este metodo trabaja directamente sobre la matriz aumentadapara resolver un sistema de ecuaciones lineales, llevandola ala matriz de un sistema triangular que es eqivalente al sistemainicial. La equivalencia del sistema triangular final con elinicial se argumenta debido a que el algoritmo solo utilizamosoperaciones elementloes entre las filas y cuya aplicacionindividual siempre preserva la equivalencia. Implementamosel algoritmo de eliminacion Gaussiana en forma paralela y serealizara una revision sobre el trabajo computacional realizadopor este metodo.

II. OBJETIVOS

Entender el algoritmo de Eliminacion Gassuina parasolucionar un sistema de ecuaciones.Implementar la version paralela del algoritmo Elimi-nacion Gaussiana.

III. PLANTEAMIENTO DEL PROBLEMA

La principal caracteristica de la Eliminacion Gaussiana estransformar el sistema original

AX = B

en un sistema lineal equivalente

UX = Y

dondeU es una matriz triangular superior. La razon de lograresta transformacion del sistema es que el nuevo sistema esmas simple y resolverlo solo requiere un proceso hacia atras.Por ejemplo, tomemosA una matriz de dimencion n = 4.

a11 a12 a13 a14

a21 a22 a23 a24

a31 a32 a33 a34

a41 a42 a43 a44

Las opreraciones disponibles son multiplicar un vector fila porun escalar y anadirlo a otra fila.

1. Nos intereza que las posiciones21, 31, 41 de la matrizsean ceros, esto lo podemos lograr sustrayendo unmultiplo adecuado de la primera fila deA.fila2← fila2−m21 ∗ fila1 donde:m21 = a21/a11.fila3← fila3−m31 ∗ fila1 donde:m31 = a31/a11.

fila4← fila4−m41 ∗ fila1 donde:m41 = a41/a11.y entonces nuestra matrizA la hemos transformado en:

a11 a12 a13 a14

0 u22 u23 u24

0 u32 u33 u34

0 u42 u43 u44

2. Ahora, enfoquemos nuestra atencion al subproblema de

una matriz de3x3 u22 u23 u24

u32 u33 u34

u42 u43 u44

En forma similar, hacemos ceros los elementos pordebajo deu22, para lograrlo operemosfila3← fila3−m32 ∗ fila2 donde:m32 = u32/u22.fila4← fila4−m42 ∗ fila2 donde:m42 = u42/u22.

3. Luego, nuestra matriz se ha trasformado en:a11 a12 a13 a14

0 u22 u23 u24

0 0 v33 v34

0 0 v43 v44

ahora solo nos resta operar con una fila para reducirv43

a cero.fila4← fila4−m43 ∗ fila3 donde:m43 = v43/v33.Lo que nos da lugar a la matriz triangular superior:

a11 a12 a13 a14

0 u22 u23 u24

0 0 v33 v34

0 0 0 w44

Contando con el sistema:

a11 a12 a13 a14

0 u22 u23 u24

0 0 v33 v34

0 0 0 w44

x1

x2

x3

x4

=

y1

y2

y3

y4

Introduzcamos la idea de matriz aumentada:

[A‖B]

y sobre ella, realicemos las operaciones indicadas en los pasos1, 2, ..., n− 1. Al hacerlo, estaremos trabajando sobre la parteactiva deA pero de igual forma sobre las filas correspondientesa B. El resultado sera

[U‖Y ]

donde Y es el resultado de los cambios ocurridos aB alaplicarle las operaciones fila que hemos considerado.

Page 2: Eliminacion Gaussiana.

UNI-CTIC 2

IV. A LGORITMO

El metodo de eliminacion de gauss es un metodo estandarpara resolver el sistema de ecuacionesAx = b. Se comienzapor transformar el sistema a la forma equivalenteUx = b,dondeU es una matriz triangular superior (es decir todos loselemntos debajo de la diagonal son iguales a cero). El sistemaUx = b es ahora resuelto por sustitucion hacia atraz.Dada una matrizA = (aij), un algorıtmo para llevar a lapractica el metodo de eliminacion de gaussiana que acabamosde escribir es el siguiente.

Algorithm 1 input n, (aij)for k = 1, 2, ..., n− 1 do

for i = k + 1, k + 2, ..., n doz ← aik/akk

aik ← 0for j = k + 1, k + 2, ..., n do

aij ← aij − zakj

end forend for

end foroutput(aij)

El algoritmo que se aplico para el caso del problema estaparalelisado se muestra acontinuacion.

1. Primero reservamos memoria en base a la variabledefinidaDIMENSION , que nos indica la dimensionde la matrizA que vamos triangularizar.

2. Si llamamosp el numero de procesos que ejecutaran elprograma ymyRank la variable que representa el id decada proceso, simyRank = 0 entonces genera y llenalos valore de la matriz de forma aleatoria, cumpliendolas siguientes restricciones:

Genera valores de A que sean diferentes de cero enla diagonal.Genera valores de A que sean diferentes de cero enlas 6 sub-diagonales arriba y las 6 abajo, el restoes cero.Los valores en la diagonal deben ser mayoresen valor absoluto que los de las otras 12 sub-diagonales.

3. El modelo de programacion paralela que se aplica estabasado en la particion de data en este caso de lascolumnas de la matriz:

La columna 0 los va ejecutar el proceso conmyRank = 0.La columna 1 los va ejecutar el proceso conmyRank = 1Y asi sucesivamente, siempre que la dimension dela matriz sea divisible por el numero de procesos(esto para que todos los procesos trabajen igual).

4. Acontinuacion cada proceso trabaja sobre su correspon-diente columna:

Estos son todos los elementos en lak−esima columnadebajo de la diagonal

for i = k + 1, k + 2, ..., DIMENSION − 1 doAik = −1,0. Aik

Akk

buffer(i− k − 1) = Aik

end forDondebuffer es una variable para la transmision dedata entre procesos.

5. Difundimos todos los datos desde proceso root a todoslos procesos.

6. El proceso0 ejecuta lo siguiente :

for i = 0, 1, ..., DIMENSION doif i mod p <> 0 then

recibe la databuffer de los procesos con id(imod p).

end iffor j = 0, 1, ..., DIMENSION do

Aji = bufferend for

end forfor i = 0, 1, ..., DIMENSION do

for i = 0, 1, ..., DIMENSION doAij = 0,0

end forend for

7. Los demas procesos con Id distinto decero:

for i = 0, 1, ..., DIMENSION doif myRank = (i mod p) then

for i = 0, 1, ..., DIMENSION doEnviamosbuffer al proceso0.

end forend if

end forEste algortimo presenta los mismos bucles que se muestran

tambien en el algoritmo desarrollado en serie, con la unicadiferencia con este ultimo algoritmo cada columna es com-putada por un proceso y estos se comunican todos los pasos deactualizacion que puedan realizar en las entradas de la matriz.

Page 3: Eliminacion Gaussiana.

UNI-CTIC 3

V. PRUEBA

Utilizamos una matriz de4x4 para probar el programa.matriz aleatoria de entrada:

8 1 2 0−2 10 1 −34 −4 7 2−5 4 −2 11

Llevandolo a su forma diagonal triangular :

8 1 2 0−2 10 1 −34 −4 7 2−5 4 −2 11

8 1 2 00 41/4 3/2 −30 −9/2 6 20 37/8 −6/8 11

→→

8 1 2 00 41/4 3/2 −30 0 273/41 28/410 0 117/82 −1013/82

8 1 2 00 41/4 3/2 −30 0 273/41 28/410 0 0 25/2

8 1 2 00 10,25 1,5 −30 0 6,6585 0,68290 0 0 12,5

Obtenido por el programaeliminacion gaussiana.cobten-emos:

8 1 2 00 10,25 1,5 −30 0 6,658537 0,6829270 0 0 12,5

Para este caso nos resulta la misma matriz calculada, con errorcero.

VI. RESULTADOS

Luego, hacemos las pruebas con dos matrices aleatoriasA de tamano 120x120 y 240x240 cuyos unicos elementosdistintos de cero se encuentran en la diagonal principal y enlas subdiagonales arriba y las6 debajo de la diagonal principal.Los valores en la diagonal son mayores en valor absoluto quelos de las otras 12 sub-diagonales

Matriz aleatoria de 120x120Numero de procesadores= 1

Prueba Tiempo(seg)1 0.2944932 0.3747953 0.304104

Numero de procesadores= 2Prueba Tiempo(seg)1 0.4198402 0.3592633 0.308416

Matriz aleatoria de 240x240Numero de procesadores= 1

Prueba Tiempo(seg)1 7.0354142 6.6407083 6.566449

Numero de procesadores= 2

Prueba Tiempo(seg)1 6.5547642 6.510303 6.277527

VII. C ONCLUSIONES

En este trabajo hemos analizado el algoritmo EliminacionGaussianaen su version en paralela, aprovechando losprocesadores mas eficientemente..Con el desarrollo del programa hecho con la herramientaMPI se pudo hallar valores aproximados del tiempo deprocesado para hallar la matriz triangular superior ypodemos notar que el tiempo de computo no mejoraconsiderablemente al usar 2 procesadores. Probablementeeste tiempo se reduce al usar mas procesadores.Es evidente la importancia del metodo de EliminacionGaussiana para resolver sistema de ecuaciones lineales,ya que transforma en un sistema mas simple de resolver.Se puede mejorar el algoritmo aprovechando las car-acteristicas de una matriz particular para economizaroperaciones y espacio.

REFERENCIAS

[1] [MPI: A Message Passing Interface Standar ] http://www-unix.mcs.anl.gov/mpi/mpi-standard/mpi-report-1.1/mpi-report.html

[2] [Blas Barney, Lawrence Livermore National Laboratory :MPI ]https://computing.llnl.gov/tutorials/mpi/

[3] [Wikipedia] http://es.wikipedia.org/wiki/Eliminacion de Gauss-Jordan

Page 4: Eliminacion Gaussiana.

UNI-CTIC 4

ANEXO:CODIGO UTILIZADO

eliminacion gaussiana.c

# i n c l u d e <s t d i o . h># i n c l u d e <s t d l i b . h># i n c l u d e <t ime . h># i n c l u d e <math . h># i n c l u d e <mpi . h>

# d e f i n e DIMENSION 10# d e f i n e NUMDIAG 4

i n t main ( i n t argc , cha r∗argv [ ] ) {MPI Sta tus s t a t u s ;i n t p , my rank , i , j , k , d e s t ;doub le ∗∗A, ∗∗A ser ;doub le ∗ b u f f e r ;doub le l ;doub le s t a r t p a r , end par , s t a r t s e r , end ser ,s e r i a l t i m e , p a r a l l e l t i m e , speedup ;doub le d i f f , er ro r ;

MPI In i t (& argc , &argv ) ;MPI Comm size (MPICOMM WORLD, &p ) ;MPI Comm rank (MPI COMM WORLD, &my rank ) ;

i f (DIMENSION % p != 0) {i f ( my rank == 0) {p r i n t f ( ” ( %d ) no se puede d i v i d i ren un numero de p r o c e s o s (%d )\n ” ,DIMENSION , p ) ;

}f f l u s h ( s t d o u t ) ;f f l u s h ( s t d e r r ) ;MPI Bar r ie r (MPI COMM WORLD) ;MPI F ina l i ze ( ) ;e x i t ( 1 ) ;

}

/ / r e s e r v a n d o memoriaA = ( doub le∗∗ ) ma l loc (DIMENSION∗ s i z e o f ( doub le ∗ ) ) ;f o r ( i =0; i<DIMENSION ; i ++){A[ i ] = ( doub le∗ ) ma l loc (DIMENSION∗ s i z e o f ( doub le ) ) ;

}b u f f e r =( doub le∗ ) ma l loc (DIMENSION ∗ s i z e o f ( doub le ) ) ;/ / e s t a i n i c i a l i z a n d o cada e lemento de l a m a t r i z A a 0f o r ( i =0; i<DIMENSION ; i ++) {f o r ( k =0; k<DIMENSION ; k++) {

A[ i ] [ k ] = 0 ;}

}/ / e s t o l o r e a l i z a e l p roceso ce roi n t tmp ;i f ( my rank == 0) {

A ser =( doub le∗∗ ) ma l loc (DIMENSION∗ s i z e o f ( doub le ∗ ) ) ;

f o r ( i =0; i<DIMENSION ; i ++)A ser [ i ] = ( doub le∗ ) ma l loc (DIMENSION∗ s i z e o f ( doub le ) ) ;

f o r ( i = 0 ; i < DIMENSION ; i ++){f o r ( j = 0 ; j < DIMENSION ; j ++){

i f ( j >= i − NUMDIAG && j <= i + NUMDIAG) {

i f ( i == j ) {A[ i ] [ j ] = ( doub le ) ( rand ( ) %10000) + 5000 ;} e l s e{A[ i ] [ j ] = ( doub le ) ( rand ( ) %10000) − 5000 ;}

} e l s e{A[ i ] [ j ] = 0 . 0 ;}

}}

f o r ( i =0; i<DIMENSION ; i ++){f o r ( k =0; k<DIMENSION ; k++) A ser [ i ] [ k ] = A[ i ] [ k ] ;}

f o r ( i = 0 ; i < DIMENSION ; i ++){f o r ( j = 0 ; j < DIMENSION ; j ++)p r i n t f ( ” %f\ t ” , A[ i ] [ j ] ) ;

p r i n t f ( ” \ n ” ) ;}

}/ / paso 1 : env iando columnas de a l o s demas p r o c e s o si f ( my rank == 0) { / / pa ra e l p roceso 0 .

/ / medi r e l t iempos t a r t p a r = MPI Wtime ( ) ;f o r ( i =0; i<DIMENSION ; i ++) {

d e s t = i % p ;i f ( d e s t != 0) {

f o r ( j =0; j<DIMENSION ; j ++) b u f f e r [ j ] = A[ j ] [ i ] ;/ / env iando . . .

MPI Send ( b u f f e r , DIMENSION, MPIDOUBLE, des t ,i , MPI COMM WORLD) ;}

}} e l s e{ / / s i e l p roceso es d i f e r e n t e de ce ro

f o r ( i =0; i<DIMENSION ; i ++){i f ( i % p == my rank ){/ / r e c i b i e n d o . . .

MPI Recv ( b u f f e r , DIMENSION, MPIDOUBLE, 0 , i ,MPI COMM WORLD, &s t a t u s ) ;

/ / guardando l o r e c i b i d o en l a i−esima f i l a de Af o r ( j =0; j<DIMENSION ; j ++) A[ j ] [ i ] = b u f f e r [ j ] ;

}}

}

/ / paso 2 :f o r ( k =0; k<DIMENSION−1;k++) {

i f ( my rank == k%p ) {f o r ( i =k +1; i<DIMENSION ; i ++){A[ i ] [ k ] = −1.0 ∗ A[ i ] [ k ] / A[ k ] [ k ] ;

/ / l l e n a a b u f f e r con e s t o s e lemen tosb u f f e r [ i − k − 1] = A[ i ] [ k ] ;

}}

/ / D i fundimos t o d o s l o s d a t o s desde r o o t/ / a t o d o s l o s p r o c e s o s .MPI Bcast ( b u f f e r , DIMENSION−k−1,MPI DOUBLE,k %p ,MPI COMM WORLD) ;

f o r ( j =k +1; j<DIMENSION ; j ++) {f o r ( i =k +1; i<DIMENSION ; i ++) {

A[ i ] [ j ] += b u f f e r [ i −k −1] ∗ A[ k ] [ j ] ;}

}}

i f ( my rank == 0){f o r ( i =0; i<DIMENSION ; i ++) {i f ( i %p != 0) {MPI Recv ( b u f f e r , DIMENSION, MPIDOUBLE, i %p ,i ,MPI COMM WORLD,& s t a t u s ) ;f o r ( j =0; j<DIMENSION ; j ++) A[ j ] [ i ] = b u f f e r [ j ] ;

}}f o r ( i =1; i<DIMENSION ; i ++) {

f o r ( j =0; j<i ; j ++) A[ i ] [ j ] = 0 . 0 ;}

end par = MPI Wtime ( ) ;} e l s e{

f o r ( i =0; i<DIMENSION ; i ++){i f ( my rank == i %p ){

f o r ( j =0; j<DIMENSION ; j ++) b u f f e r [ j ] = A[ j ] [ i ] ;MPI Send ( b u f f e r , DIMENSION, MPIDOUBLE, 0 ,i ,MPI COMM WORLD) ;}

}}

Page 5: Eliminacion Gaussiana.

UNI-CTIC 5

i f ( my rank == 0){s t a r t s e r = MPI Wtime ( ) ;f o r ( k =0; k<DIMENSION−1;k++) {

f o r ( i =k +1; i<DIMENSION ; i ++){l = A ser [ i ] [ k ] / A ser [ k ] [ k ] ;f o r ( j =k ; j <DIMENSION ; j ++)

A ser [ i ] [ j ] −= l ∗A ser [ k ] [ j ] ;}

}f o r ( i =1; i<DIMENSION ; i ++) {f o r ( j =0; j<i ; j ++) A ser [ i ] [ j ] = 0 . 0 ;

}p r i n t f ( ” despues de l a e l i m i n a c i o n de gauss\n\n ” ) ;f o r ( i = 0 ; i <DIMENSION ; ++ i ){f o r ( j = 0 ; j <DIMENSION ; ++ j )p r i n t f ( ” %f\ t ” , A ser [ i ] [ j ] ) ;p r i n t f ( ” \ n ” ) ;}

end se r = MPI Wtime ( ) ;

s e r i a l t i m e = end se r − s t a r t s e r ;p a r a l l e l t i m e = end par − s t a r t p a r ;speedup = s e r i a lt i m e / p a r a l l e l t i m e ;

p r i n t f ( ” Ap l i cando e l i m i n a c i o n g a u s s i a n a en una%dx %d−m a t r i x\n ” ,DIMENSION , DIMENSION ) ;p r i n t f ( ” P a r a l l e l ve rs i on : %e seconds\n ” , p a r a l l e l t i m e ) ;p r i n t f ( ” S e r i a l ve rs i on : %e seconds\n ” , s e r i a l t i m e ) ;

}

f f l u s h ( s t d o u t ) ;f f l u s h ( s t d e r r ) ;MPI Bar r ie r (MPI COMM WORLD) ;MPI F ina l i ze ( ) ;re turn 0 ;}