Sunteți pe pagina 1din 9

Programa de implementaci on del m etodo de Jacobi

Resumen Unos de los mayores problemas de la programaci on en paralelo, es el de dise nar las aplicaciones, hacer eciente los programas, hacer con que las tareas en paralelo sean m as r apidas que los programas secuenciales ni siempre es algo tan f acil. Los multiplos procesadores trabajando en conjunto para la soluci on de un poblemas tienem inconvenientes y es que hacerlos de maneira a estar sincronizados y ajustados, cuesta horas en dise no y implementaci on. Es an alise del conjunto a que se v a trabajar es muy importante, porque ni todas las funciones de un sistema pueden ser paralizado. En ese texto, presentaremos la implementaci on del m etodo de Jacobi, que pueden ser utilizado para soluci on de problemas de procesamiento de im agenes, o reconocimiento de formas, o hasta mismo de procesamiento de la se nal. El trabajo es implementar la paralelizaci on de ejecuciones sob matrices, utilizando como herramienta, los m etodos de jacobi, el lenguaje de programaci on C y MPI, utilizado como herramienta para compilaci on y ejecuci on de programas en paralelo.

Introducci on

En procesamiento de la se nal, o en procesamiento paralelo, para hacer aplicaciones deben, ser llevados en cuenta diversos factores, como maquinas a ser utilizadas, red a la que va a funcionar, n umero de procesadores entre otros. Ni todas la funciones de un sistema pueden ser paralelizados como ya haviamos dicho antes, lo que se deve a nadir una complejidad a un mayor para quien vaya a dise narlo. Como lo que se busca con esas herramientas es mejorar la funcionabilidad y la velocidad de las aplicaciones, presentaremos un comparativo entre el paralelo y el local, donde se vericar a la eciencia de cada uno y los picos de procesamiento. En ese texto se describe como est a dise nado y como funciona el programa para la implementaci on del m etodo de jacobi en paralelo. Objetivos. El objetivo de este trabajo es implementar un programa en paralelo que trabaje sobre matrices, haciendo con que cada procesador tenga su parte de la matriz y trabaje sobre ella. Por tanto, bas andonos en el mecanismo proporcionado pelo m etodo de Jacobi, que ser a necesario para hacer con que 1

el programa se comporte de la maneira que deseamos, implementaremos el m etodo en paralelo. Pasos de la implementaci on. Al estar implementando el m etodo necesitamos como base tener datos que hacen posible los calculos: 1. C alculo del seno y coseno, que se obtiene atrav es de la matriz dada. 2. Generar una matriz con el seno y coseno encontrado. 3. Aplicar las rotaciones, hacer la multiplicaci on de la matrices, la matriz dada con la matriz encontrada. 4. Difundir el seno y coseno, para que todos los dem as procesadores puedan aplicar las rotaciones. 5. Calcular cota y hacer el intercambio de las columnas, para cerar toda la matriz y dejarla concentrada en la diagonal. Caracter sticas requiridas. Para la implementaci on del programa en paralelo tenemos disponible herramientas que se ocupan de la comunicaci on entre las distintas m aquinas. Para garantizar un buen funcionamiento hacemos uso de dos herramientas: Lenguaje de programaci on C Librer a de funciones MPI (Message-Passing Interface) La u ltima, encargada de hacer la comunicaci on entre las m aquinas que hacen parte del cluster, de ordenadores que realizan los c alculos.

Descripci on del modelo

Conguraciones iniciales. Dada una matriz qualquiera, n x n, el primer paso es guardar en un vector los procesadores involucrados en la tarea junto con su conguraci on, funci on esta que nos v a a ser muy u til a la hora de denir las proximas conguraciones de los procesadores y las posiciones del seno y coseno en la matriz.

C alculo del seno y coseno. Despues se va a encontrar el seno y el coseno de la matriz. Este ser a correspondiente a las posiciones en que vas a poner los ceros, Ex.: Si queremos poner ceros en la posici on (1,0) y (0,1) en una matriz 2 x 2 encontraremos el seno y el coseno referentes a las posiciones (0,0) y (1,1) con la f ormula sacada de la multiplicaci on de una matriz multiplicado por, la matriz dada, c s X X s c X X y aplicada la f ormula r = aij a / 2 a ji ki ; 2 t = r/r + 1+r ; c = 1/ 1 + t2 ; s = c t; encontrando el seno y coseno. Difundir el seno y coseno. Acto seguido, difundir el seno y coseno a los dem as procesadores, que se encargaran de utilizalos oportunamente. En esta implementaci on se decidi o aplicar las Rotaciones de Jacobi antes de recibir los senos de los dem as procesadores por llevar en cuenta el tr afego en la red y por allar m as conveniente aplicar la Rotaci on mientras los datos se transene en la red. Logicamente despues de aplicar la rotaci on con los datos locales, se recibe el seno y coseno de todos los dem as procesadores y aplica otra vez la rotaci on, llamada rotaci on por detr as, correspondiente al seno y coseno destos procesadores y la posici on del trozo de matriz que le corresponde. Este valor es encontrado mediante la posici on de los procesadores en el vector, o sea, una primera conguraci on del vector es [0,2,4,6,1,3,5,7] para 8 procesadores, d onde cada columna representa la posici on de las columnas a ser modicadas, en ese caso el procesador 0 ir a tocar las las/columnas 0 y 1 de la matriz dada, el siguiente procesador ir a trabajar sob las las/columnas 2 y 3 y as hasta cuantos procesadores tengan el cluster. Aplicada la rotaci on de Jacobi en la matriz, se observa que, como la matriz est a en diversos procesadores con la ejecuci on en paralelo, se aplica el m etodo en toda la matriz, conseguindo ceros en la diagonal inferior y en la diagonal superior, as indicada c s s c
T

X X X X

c s s c

x 0 0 x

Cota y envios de columnas. Al terminar con el c alculo y aplicar las rotaciones, se hace el envio de las columnas a los dem as procesadores. Cada procesador envia su columna a los dem as procesadores as descrito. A cada transici on, despues de terminar el c alculo de la rotaci on, antes de completar la ronda de tareas, los procesadores envian sus columnas. Con excepci on de la columna 0 del primer procesador el 0, de la lista de procesadores ver g.2, todas las dem as columnas son enviadas a los dem as procesadores, que se explica ahora. Sean (n) procesadores: El primer procesador de la lista el procesador 0 es reponsable de enviar la columna 1 al seguiente procesador n-(n-1) y recibe la columna 2 del mismo a quien poco antes le ha enviado la suya. El procesador 1 es responsable de enviar y recibir dos columnas, como mensionado anteriormente solo la columna 0 del procesador 0 no es alterada o sea enviada a ningun procesador. As que el procesador n-(n-1) recibe la columna 1 del anterior y la pone en su columna 0 y envia su columna 0 al posterior procesador en la columna 0, en seguida envia su columna 1 al procesador anterior y aguarda recibir la columna 1 del procesador posterior. Este proceso se repite en todos los procesadores que estan en el medio de la lista de procesadoes, y no sean ni el primero ni el u ltimo. Ya el u ltimo procesador del cluster y de la lista de procesadores, el proceso se repite con peque nas modicaciones, as que, ese procesador recibe la columna 0 del procesador anterior y envia su columna 0 a su pr opia columna 1, como ya ha recibido la columna correspondiente a la una, el procesador envia su columna 1 al anterior procesador para que la pongas en la posici on 1, de esta manera todos los procesadores envian sus columnas a todos del cluster.
P0 P1 P2 P3

C0 C1

C0 C1

C0 C1

C0 C1

Figura 1: Pasos de mesajes de las columnas

0 1

2 3

4 5

6 7

0 3

1 5

2 7

4 6

0 5

3 7

1 6

2 4

0 7

5 6

3 4

1 2

0 2

4 1

6 3

7 5

0 4

6 2

7 1

5 3

0 6

7 4

5 2

3 1

Figura 2: Lista de procesadores con secuencia de pasos Todo el proceso arriba descrito es ejecutado hasta recorer la lista de procesadores haciendo todas las combinaciones posibles de las columnas. En esa funci on del sistema es muy f acil equivocarte, pues la complejidad de la implementaci on desta funci on est a en saber a quien enviar y de quien ir a recibir la columna, a la vez que se recalcula el seno y coseno para las nuevas posiciones de columnas que se va a aplicar la rotaci on. El proceso se repite en todos los procesadores hasta que la cota sea cumplida. La cota es el parametro d onde decimos los l metes aceptables para considerar una variable como cero. Se verica se el sumat orio de los valores de todas las columnas y todas las las es igual o inferior a la cota, denida por nosotros con valos de 0.000001 y se la armaci on no es verdadera el programa ha terminado, se ha echo la rotaci on de Jacobi en todas las las/columnas de todos los procesadores, si no, si el sumat orio es mayor que la cota, entonces impieza nueva ronda de calculos.

Implementaci on

Conguraciones iniciales. Para hacer la rotaci on de las columnas, utilizamos una funci on d onde est a congurado el par linea/columna en que est a trabajando cada procesador. D onde: rot.set(0) = {(0, 1), (2, 3), (4, 5)} rot.set(1) = {(0, 3), (1, 5), (2, 4)} rot.set(5) = {(0, 2), (4, 1), (5, 3)} De esta manera tenemos toda las combinaciones posibles, para tener las columnas en los procesadores. Seno y coseno. Dado una matriz sim etrica n x n, y enteros que satisfaz 1 i < j n, 5

este algoritmo calcula el seno y coseno. Si aij = 0; c = 1; s = 0; en otro caso si |akj | > |aij | r = aij aji /2 a ki ; t = sign ( r ) / | r | + 1 + r2; 2 c = 1/ 1 + t ; s = c t; en otro caso t = aki /aij ; s = 1/ 1 + t2 ; c = s t; Difusi on. f or (dest = 0; dest < P ; dest + +){ M P ISend(seno); M P ISend(coseno); } f or (source = 0; source < P ; source + +){ M P IRecv (seno); M P IRecv (coseno); } C alculo de la cota y difusi on de columnas.
n n

of f (A) =
i=1 j =1,j =i

aij 2

f or (rot.set(i)){ M P ISend(a); } f or (rot.set(i)){ M P IRecv (a); } Algoritmo. M IEN T RASN orma(Of f (A) > Cota) 6

parai = 2...n; paraj = 1...n 1; Calcularotacion(); A := JAJ T ; k := k + 1; f inpara f inpara F inM IEN T RAS

Resultados

Suponiendo ordenadores normales realizando sus funciones, estos son los valores presentados en ejecuci on del programa con un cluster con 4 m aquinas y una en separado con conguraci on descrita. Fue lanzada la misma ejecuci on 10 vezes para cada parametro.

4.1

Conguraci on de las m aquinas

Cluster con 4 procesadores model name : Pentium II (Deschutes) cpu MHz : 451.030504 cache size : 512 KB bogomips : 450.56 M aquina isolada model name : AMD Athlon(tm) Processor cpu MHz : 1202.769 cache size : 256 KB bogomips : 2398.61

4.2

Tiempos

Tiempos medidos en el cluster 1 procesador con matriz 2x2 Procesador 0 Mejor: 6717 n Peor : 7638 n Media: 7113 n Tiempos medidos en la m aquina isolada 7

1 procesador con matriz 2x2 Procesador 0 Mejor: 2437 n Peor : 2579 n Media: 2466 n 2 procesadores con matriz 4x4: Procesador 0 Procesador 1 Mejor: 160429 nanosegundos Mejor: 45867 nanosegundos Peor : 509600 nanosegundos Peor : 70166 nanosegundos Media: 316505 nanosegundos Media: 62052 nanosegundos 2 procesadores con matriz 4x4: Procesador 0 Procesador 1 Mejor: 221046 n Mejor: 6908 n Peor : 286154 n Peor : 10196 n Media: 226307 n Media: 7400 n 3 procesadores con matriz 6x6: Procesador 0 Procesador 1 Procesador 2 Mejor: 170192 n Mejor: 136860 n Mejor: 50636 n Peor : 518182 n Peor : 210106 n Peor : 134232 n Media: 360770 n Media: 156033 n Media: 75981 n 3 procesadores con matriz 6x6: Procesador 0 Procesador 1 Procesador 2 Mejor: 441578 n Mejor: 217032 n Mejor: 49739 n Peor : 515836 n Peor : 225273 n Peor : 54602 n Media: 467832 n Media: 220143 n Media: 51728 n 4 procesadores con matriz 8x8: Procesador 0 Procesador 1 Procesador 2 Procesaor 3 Mejor: 516287 n Mejor: 361254 n Mejor: 273548 n Mejor: 154317n Peor : 894526 n Peor : 751053 n Peor : 665618 n Peor : 562397n Media: 685821 n Media: 532369 n Media: 449474 n Media: 355116n 4 procesadores con matriz 8x8: Procesador 0 Procesador 1 Procesador 2 Procesaor 3 Mejor: 653649 n Mejor: 398020 n Mejor: 226491 n Mejor: 59516n Peor : 763436 n Peor : 473519 n Peor : 241442 n Peor : 69601n 8

Media: 708542 n

Media: 435769 n

Media: 236515 n

Media: 60375n

4.3

Conclusiones

Los resultados de la aplicaci on con el MPI simulando el cluster nos ofrece un mejor desempenho por ser una m aquima m as robusta, pero en el tiempo total de la ejecuci on se percibe la obtenci on de peores tiempos.

Consideraciones nales

En este texto se ha visto la descripci on y la forma a que fue implementada la aplicaci on del programa de paralelizaci on de una matriz n * n utilizando el m etodo de Jacobi.

S-ar putea să vă placă și