Algoritmos Paralelos para la Multiplicaci´ Multiplicacion o´ n de Matrices David Aparco C´ C ardenas a´ rdenas
un sistema de ecuaciones lineales, la inversi on o´ n de una matriz matriz,, la evalu evaluaci aci´on o´ n de la dete determ rmin inan ante te de una matriz, matriz, multiplicac multiplicaciion o´ n de matrices booleanas, y el cier cierre re tran transi siti tiv vo de un graf grafo o[5][11]. Como Como otro otro ejempl ejemplo, o, alguna algunass transf transform ormaci acione oness usadas usadas en el proc proces esam amie ient nto o de se˜ senale n˜ aless se basa basan n en la multiplicaci´ multiplicacio´ n de grandes matrices. Y as´ı se pueden pueden mencio mencionar nar muchas muchas otras otras aplica aplicacio ciones nes de la multiplicaci multiplicaci´on o´ n de ma matr tric ices es.[ .[2] 2] Por Por ot otra ra part parte, e, el ti tiem empo po de la comp comput utac aciion o´ n re requ quer erid ido o para para la multiplicaci´ multiplicacion o´ n de matrices es la parte dominante del tiempo total requerido para la computaci´ computacion o´ n de todos esos problemas, los cual es, tales problemas pueden ser reduci reducidos dos a la multip multiplic licaci aci´on o´ n de ma matr tric ices es y pueden ser resueltos r´ rapidamente a´ pidamente si la multiplicaci multiplicaci´on o´ n de matrices es resuelta r apidamente a´ pidamente[4]. El algoritmo mas a´ s sencil sencillo lo para para la multip multiplic licaci aci´on o´ n de ma matr tric ices es 3 realiza O (n ) operaciones. Strassen [9]fue el primero en demo demost stra rarr qu quee este este algo algori ritm tmo o no es optimo, o´ ptimo, 2.81 dando un algoritmo de complejidad O(n ) para el problema. problema. Muchas mejoras mejoras le siguieron. El algoritmo algoritmo para la multiplicacion o´ n de matrices m as a´ s rapido a´ pido que existe actualmente, con una complejidad de O (n2.38 ) fue fue ob obte teni nido do po porr Copp Copper ersm smit ith h y Win inog ogra rad d[8]. Incluso luego de estas mejoras estos algoritmos han demostrado limitaciones en su rendimiento. Por esta raz´ razon, o´ n, aproximaciones paralelas han sido examinadas computacion o´ n paralela, bloques Palabras Clave: computaci´ por d´ decadas. e´ cadas. La mayor´ mayor´ıa ıa algoritmos paralelos para la de rayas, fox, cannon, mpi, sub-bloques de matrices multiplicaci on o´ n de matrices usan la descomposici o on ´n de matrices que se basa en el n umero u´ mero de procesadores dispon disponibl ibles. es. Esto Esto incluy incluyee la descom descompos posici ici´o´ n en ´ I. I NTRODUCCI ON bl bloq oque uess de ra raya yas, s, el algo algori ritm tmo o de Ca Cann nnon on y el A multiplicac multiplicaciion o´ n de ma matr tric ices es es un unaa de las las algo algori ritm tmo o de Fox ox.. El algo algori ritm tmo o de Ca Cann nnon on y operaciones operaciones mas a´ s fundam fundament entale aless del algebra a´ lgebra el algo algori ritm tmo o de Fox Fox us usan an la desc descom ompo posi sici ci´on o´ n de l´ıneal, ıneal, el cual cual tiene tiene numero numerosas sas aplica aplicacio ciones nes a la matrices en submatrices. Durante la ejecuci on o´ n del teor´ teor´ıa ı a y pr´ practica a´ ctica de la computacion. o´ n. En particular, proceso, un procesor calcula un resultado parcial varia variass aplica aplicacio ciones nes import important antes es se dan debido debido al utiliz utilizand ando o las submat submatric rices es que est´ estan a´ n actualmente actualmente hecho hecho que la multip multiplic licaci aci´on o´ n de ma matr tric ices es es un unaa siendo accedidas por el. e´ l. Luego sucesivamente este parte parte sustan sustancia ciall de vario varioss algori algoritmo tmoss conoci conocidos dos proc proces esad ador or re real aliz izaa el mism mismo o calculo a´ lculo en nueva nuevass para otros problemas computacionales de algebra a´ lgebra submatrices, anadiendo n˜ adiendo el nuevo resultado al previo. lineal lineal y combin combinato atoria ria,, tales tales como como la soluci soluci´on o´ n de Cuan Cuando do lo loss subp subpro roce ceso soss de mult multip ipli lica caci ci´o´ n han multiplic licaci aci´on o´ n de matr matric ices es gran grande dess Resumen—La multip requ requie ierre much mucho o tiem tiempo po de comp comput utac acii o´ n como su complejid complejidad ad es O(n3 ). Debi Debido do a que que la may mayor´ or´ıa ı a de aplicacion aplicaciones es actuales actuales requier requieren en un mayor mayor rendimie rendimiento nto computacional con el m´ınimo ınimo tiempo, muchos algoritmos secuenciales y paralelos son desarrolados. Los algoritmos paralelos reducen significativamente el tiempo de ejecuci on o´ n de los algoritmos secuenciales cuando son ejecutados con varios procesadores. Este art´ art ´ıculo ıculo presenta una exposici on o´ n detall detallada ada y la corre correspo spondi ndient entee implem implement entaci aci o´ n en el entor entorno no de progr programa amaci ci´on o´ n MP MPII de cuat cuatro ro algo algori ritm tmos os paralelos paralelos para la multipli multiplicaci cacion o´ n de dos matrices A y B . Los algori algoritmo tmoss primer primero o y segund segundo o son el algori algoritmo tmo de ´ en bloq Descomposici´ Descomposicion bloque uess de raya rayass por por colu column mnas as y el algoritmo algoritmo de Descomposi Descomposici ci on o´ n en bloq bloque uess de raya rayass por por filas respectivamente, los cuales descomponen a la matriz bloque uess de filas filas y a la matr matriz iz B en bloq bloque uess de A en bloq colu column mnas as para para el prim primer ero o y bloq bloque uess de filas filas para para el segundo. Los algoritmos tercero y cuarto son el algoritmo de Fox Fox y el algori algoritmo tmo de Cannon Cannon respe respecti ctiva vamen mente te los cuales cuales descompon descomponen en las matrices matrices A y B en bloque bloquess de sub-matri sub-matrices ces cuadradas cuadradas las cuales cuales luego son distribui distribuidas das entr entree los los proc proces esad ador ores es,, la dife difere renc ncia ia entr entree amba ambass se encuen encuentra tra en el despla desplazam zamien iento to de los sub-bl sub-bloqu oques es de matrices el cual es diferente en cada algoritmo. El presente estudio se realiza con el fin de hallar experimentalmente en una maqui a´ quina na quad quad-c -cor oree de 64 bits bits,, el algo algori ritm tmo o paralelo que presenta el menor tiempo de ejecuci on o´ n para el producto de dos matrices A y B , donde el orden de las matrices var´ var´ıa ıa en el transcurso del experimento.
L
1
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
sido completados, el procesador ra´ ra´ız ız ensambla los resultados parciales y genera el resultado completo de la multiplicaci on o´ n de matrices[2].
I I . C ONSIDERACIONES I NICIALES
•
•
•
•
•
Consideraremos que el n´ numero u´ mero de procesadores de una m´ maquina a´ quina es p, Por Por simpli simplicid cidad ad trabaj trabajare aremos mos con matric matrices es cuadradas, Las matrices a multiplicar A y B , ser´ seran a´ n tratadas como matrices densas (esto es con poca cantidad de 0’s), T p es el tiempo que emplean p procesadores para resolver el problema. E En n el cost costee de comu comuni nica caci cion ones es,, el ti tiem empo po para transmitir n datos entre dos procesadores cone conect ctad ados os es dado dado po porr ts + ntw , do dond ndee ts es el ti tiem empo po em empl plea eado do para para esta establ blec ecer er la comunicaci´ comunicacion o´ n y tw es el tiempo que tarda en transmitir un dato.
´ S ECUENCIAL II III. I. M ULTIPLICACI ON ECUENCIAL M ATRICES
DE
Input : a[0..l − 1, 0..m − 1] b[0..m − 1, 0..n − 1] Output : c[0..l − 1, 0..n − 1] 1: for i ← 0, l − 1 do 2: for j ← 0, n − 1 do c[i, j ] ← 0 3: for k ← 0, m − 1 do 4: c[i, j ] ← c[i, j ] + a[i, j ] × b[ j, j, k ] 5: 6: end for 7: end for 8: end for Fig. Fig. 1. Multipl Multiplicac icaci´ i´on on de Matrices Secuencial
Considere la figura 2. Durante cada iteraci on o´ n del bucle externo indexado por i, cada elemento de la matriz B es le´ le´ııdo. do. Si la ma matr triz iz B es dema demasi siad ado o grande para el cache, e´ , entonces los elementos le´ıdos ıdos posteriormente en cach´ cache´ desplazar´ desplazar´ıan ıan a los elementos le´ le´ıdos ıdos anteriormente en cach´ cache, e´ , sigificando que en la siguie siguiente nte iterac iteraciio´ n del lo loop op in inde dexa xado do po porr i, todos los elementos de B necesitar an a´ n ser le´ le´ıdos ıdos en cach´ cache´ nu nuev evam amen ente te.. Por Por lo tant tanto o un unaa vez vez qu quee las las matrices alcancen un determinado tama˜ tamano, n˜ o, la tasa de aciertos de la memoria cach´ cache´ cae dramaticamente, disminuyendo el rendimiento de la CPU.[2]
A. Iterativo, Algoritmo Orientado a Filas.
El producto de una matriz A de orden l×m y de una matriz B de orden m×n es una matriz C de orden l×n cuyos elementos est´ estan a´ n definidos por
Fig. Fig. 2. En cada cada iteraci iteraci´on o´ n del bucle indexado por i, la fila i de la matriz A y toda la matriz B son le ´ıdas, ı das, mientras la fila i de C es escrita.
m−1
ci,j =
k=0
ai,k bk,j
IV. IV. A LGORITMOS P ARALELOS PARA ´ DE M ATRICES M ULTIPLICACI ON
LA
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
El numero u´ mero de subtareas b´ basicas a´ sicas es igual a n2 , como regla el numero u´ mero disponible de procesadores es menor 2 a n ( p < n2 ), as´ as´ı que ser´ sera´ necesa necesario rio rea realiz lizar ar el escalamiento de la subtarea. La subtarea agregada es el c alculo a´ lculo de una fila de la matriz C (el numero u´ mero de subtareas es n). ´n La distribuci distribuci´on o´ n de datos ser´ ser´ıa ıa la descom descompos posici ici´o on en bloques de rayas por filas para la matriz A y la descomposici´ descomposicion o´ n en bloques de rayas por columnas para la matriz B.[1]
Fig. 5. Segunda Segunda etapa, se envian envian los bloques de columnas de la matriz B en sentido horario, y luego se procede a obtener el resultado del producto fila por columna.
Fig. 6. Tercera ercera etapa, se procede a realizar realizar los mismo que la segunda etapa.
Fig. 3. Descomp Descomposic osicii on o´ n en bloques de rayas por filas en las matriz A, y por columnas en la matriz B.
An´ Analisis a´ lisis de las Dependencias de Informaci´ Informacion. o´ n. Fig. 7. Cuarta etapa, etapa, se procede a realizar los mismo mismo que la tercera etapa.
•
•
Cada subtarea tiene una fila de la matriz A y una columna de la matriz B. Agregacion o´ n y Distribucion o´ n de las Subtareas entre En ca cada da it iter erac aciion o´ n ca cada da subt subtar area ea re real aliz izaa el Agregaci´ ca´ lculo del producto interno de su fila los Procesadores. En el caso en el que el n umero u´ mero de procesadores y colu column mna, a, como como re ressul ulta tado do el elem elemen entto p es menor que el numero u´ mero de subtareas b´ basicas a´ sicas correspondiente de la matriz C es obtenido. n, los c´ calculo a´ lculoss pueden pueden ser agreg agregado adoss de tal Luego cada subtarea i, 0 ≤ i < n, env´ env´ıa ı a su manera que cada procesador ejecutar´ ejecutar´ıa ıa varios columna de la matriz B a la subtarea con el productos internos entre filas de la matriz A numero u´ mero (i + 1) mod mod n. y colu column mnas as de la ma matr triz iz B. En este este ca caso so Luego de todas las iteraciones del algoritmo, luego de completar el c alculo, a´ lculo, cada subtarea todas las columnas de la matriz B estuvieron agregada agregada basica a´ sica determ determina ina varia variass filas filas de la dentro de cada subtarea una despu´ despues e´ s de otra. matriz resultante C. Bajo tales condiciones la matriz inicial A es desc descom ompu pues esta ta en p ra raya yass ho hori rizo zont ntal ales es y la matriz B es descompuesta en p rayas verticales. •
•
•
•
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
para las matrices A y B.
Fig. 11. Tercera ercera etapa, se procede a realizar realizar los mismo que la segunda etapa.
Fig. 8. 8. Descomp Descomposic osic´´ıon ıon en bloques de rayas por filas en las matriz A y en la matriz B.
An´ Analisis a´ lisis de las Dependencias de Informaci´ Informacion. o´ n. •
•
•
•
Fig. 12. Cuarta etapa, etapa, se procede a realizar realizar los mismo que la tercera etapa.
Cada subtarea tiene una fila de la matriz A y B. Algoritmo de Fox. una fila de la matriz B. La distribucion o´ n de datos presenta un esquema de En ca cada da it iter erac aciion o´ n las las subt subtar area eass re real aliz izan an la multiplicacion o´ n elemento a elemento de las filas; tablero de damas. como resultado la fila de resultados parciales para la matriz C es obtenida. Luego cada subtarea i, 0 ≤ i < n, env´ env´ıa ı a su fila de la matriz B hacia la subtarea con el n´ numero u´ mero (i + 1) mod mod n. Luego de todas las iteraciones todas las filas de la matriz B estuvieron dentro de cada subtarea una despu´ despues e´ s de otra. Fig. Fig. 13. Esquem Esquemaa de tablero tablero de damas. damas.
La subtarea basica a´ sica es un procedimiento que calcula todos los elementos de un bloque de la matriz C.
A00 ...A0(q 1) ... A(q 1)0 ...A(q 1)(q
Fig. 9. Primera Primera etapa, a cada procesado procesadorr se le entrega una fila de la matriz A y una fila de la matriz B, y luego se procede a obtener el resultado parcial del producto de fila por fila.
−
−
−
1)
−
×
B00 ...B0(q 1) ... B(q 1)0 ...B(q 1)(q −
−
C 00 00 ...C 0( 0(q 1) ... C (q 1)0 ...C (q 1)(q
−
−
−
−
1)
−
q −1
C ij ij =
=0
Ais Bsj
1)
−
=
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
– El bloque C ij ij de la matriz resultante C, el cual es calculado en la subtarea. – El bloque Aij de la matriz A, el cual fue ub ubic icad ado o en la subt subtar area ea ante antess de qu quee el c´alculo alculo empiece. – Los bloques Aij y Bij de la matriz A y de la matriz B, los cuales son recibidos por la subtarea durante los c´ calculos.[3] a´ lculos.[3]
- durante la iteracion l, 0 ≤ l < q , el algori algoritmo tmo realiza:
•
La subtar subtarea ea (i,j) (i,j) env env´ıa ı a su bl bloq oque ue Aij de la matr ma triz iz A a to toda dass las las subt subtar area eass de la mism mismaa fila horizontal i de la malla; el ´ındice ındice j, el cual determina la posici´ posicion o´ n de la subtarea en la fila, puede ser obtenido usando la ecuacion: o´ n:
j = (i + l )
•
Fig. 15. Se procede a desplazar desplazar las las filas de la matriz B una posici posicio on ´n hacia arriba en forma circular.
mod q,
Cada subtarea realiza la multiplicacion o´ n de los bloques bloques recibidos recibidos Aij y Bij y luego anade n˜ ade el resultado al bloque C ij ij .
Fig. 16. Se procede a enviar enviar los siguientes siguientes bloques bloques de matrices de la matriz A a trav´ traves e´ s de sus filas.
C ij ij = C ij ij + A ij × Bij
•
Cada subtarea (i,j) env´ env´ıa ıa su bloque Bij a su vecino, el cual est´ est a´ previamente en la misma l´ınea ınea vertical (los bloques de las subtareas de la primera fila son enviadas a las subtareas de la ultima u´ ltima fila de la malla).[3]
Fig Fig.. 17. Se procede procede a hallar el producto producto de la matriz A y la matriz matriz B, mediante los bloques de matrices.
Escala Escalando ndo y Distrib Distribuye uyendo ndo las Subtar Subtareas eas entre entre
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
•
topolog´ topolog´ıa ı a de la red de comunicaci on o´ n es una malla bidimensional. En este caso las subtareas pueden ser distribuida distribuidass entre los procesadores procesadores en una forma natural: La subtarea (i,j) tiene que ser ubicada en el procesador pi,j .
•
– Para la j-´ j-esim e´ simaa colu column mnaa de la ma mall llaa de subtareas los bloques de la matriz B son desplazadas ( j − 1) posiciones hacia arriba, La operaci´ operacion o´ n de env´ env´ıo ıo de datos es un ejemplo de comunicacion o´ n de desplazamiento circular,
C. Algoritmo Algoritmo de Cannon. Cannon.
La distribucion o´ n de datos presenta un esquema de tablero de damas.
Fig. 18. Esquema Esquema de las Dependencias Dependencias de Informaci Informaci´on. o´ n.
La subt subtar area ea basic a´ sicaa es un proc proced edim imie ient nto, o, qu quee calcula todos los elementos de un bloque de la matriz C .
A00 ...A0(q 1) ... A(q 1)0 ...A(q 1)(q −
−
−
1)
−
×
B00 ...B0(q 1) ... B(q 1)0 ...B(q 1)(q −
−
C 00 00 ...C 0( 0(q 1) ... C (q 1)0 ...C (q 1)(q
−
−
−
−
1)
−
1)
−
=
Fig. 19. Redistribu Redistribuci ci on o´ n de los bloques de matrices en la primera etapa del algoritmo
q −1
C ij ij =
Ais Bsj
•
s=0
An´ Analisis a´ lisis de las Dependencias de Informaci´ Informacion. o´ n. •
•
La subtarea con el numero u´ mero (i, j ) calcula el bl bloq oque ue C ij matr triz iz re resu sult ltan ante te C . ij de la ma Como resultado, las subtareas forman la malla bidimensional q × q . La distri distribu buci ci´on o´ n in inic icia iall de los bl bloq oque uess de matrices en el algoritmo de Cannon es seleccionado seleccionado de tal manera que la multiplicaci multiplicacion o´ n
•
´ n, el cual Luego Luego de la redist redistrib ribuci uci´o on, cual ha si sido do efectuado en la primera etapa, los bloques de matrices pueden ser multiplicados sin ning u un ´n env´ env´ıo ıo de datos adicional, Para obtener el resto de bloques luego de la operaci´ operacion o´ n de multiplicaci on o´ n de bloques: bloques de la matriz matriz A son desplazados – Los bloques una posici´ posicion o´ n a la izquierda a lo largo de las fila de la malla, – Los bloques bloques de la matriz matriz B son desplazados un posicion o´ n hacia arriba a los largo de las
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
•
•
La La ejec ejecuc uciion o´ n mas a´ s efi efici cien ente te del del algo algori ritm tmo o paralelo de Cannon puede ser proveida cuando la topolog´ topolog´ıa ıa de la red de comunicaciones es una malla bidimensional. En este caso las subtareas pueden ser di dist stri ribu buid idas as entr entree lo loss proc proces esad ador ores es de un unaa manera natural: la subtarea (i, j ) tiene que ser ubicada en el procesador pij [2]. ´ V. I MPLEMENTACI ON
MPI_Type_commit(& MPI_Type_commit( &column); / * Envia Enviar r lo los s bl bloq oque ues s de fi fila las s de la ma matr triz iz A a tod todos os los pro proces cesado adores res */ MPI_Scatter(matrix_A, MPI_Scatter(matrix_A, local_n*n, MPI_FLOAT MPI_FLOAT, , local_A, local_n*n, MPI_FLOA MPI_FLOAT, T, 0, MPI_COMM_WORLD); / * Enviar Enviar los blo bloque ques s de col column umnas as de la mat matriz riz B a tod todos os los procesad procesadore ores s */ if (my_rank == 0) { for (i = 0; i < loca local_n; l_n; i++ ++) ) { MPI_Sendrecv(& MPI_Sendrecv(&matrix_B[local_n*my_rank+ my_rank+i], 1, col column umn, , 0, 0, &local_B[i*n], n, MPI_FLOAT MPI_FLOAT, , 0, 0, MPI_COMM_WORLD, MPI_COMM_WORLD, &status); } for (i = 1; i < siz size; e; i++ ++) ) { for (j = 0; j < loca local_n; l_n; j++ ++) ) { MPI_Send(& MPI_Send(&matrix_B[local_n*i + j], 1, column, column, i, 0, MPI_COMM_WORLD); MPI_COMM_WORLD); } }
EN M PI
A. Algoritmos de Descomposici´ Descomposicion ´ en bloq bloque uess de rayas.
La impl implem emen enta taci ci´o´ n de los algoritmos de descomposici´ descomposicion o´ n en bloques de rayas por columnas y por por filas filas se reali ealiza za de la si sigu guie ient ntee ma mane nera ra:: Pr Prim imer eram amen ente te en la impl implem emen enta taci ci´o´ n de la descomposici´ descomposicion o´ n en bloques de rayas por columnas ´n se crea un nuevo tipo de variable con la funci o on MPI Type vector vector,, lo cual nos permite permite poder crear un ti tipo po de vari variab able le en MP MPII qu quee re refe fere renc ncia ia a las las columnas de B. Luego se procede a enviar los bloques de filas de la ´n matriz A a todos los procesadores con la funci o on MPI Scatter, Scatter, posteriormente posteriormente se procede a enviar enviar los bloques de columnas de la matriz B a todos los procesadores. El env´ıo de los bloques de rayas de B es diferente diferente seg´ segun u´ n sea por columnas o por filas. Si la descomposic descomposiciion o´ n po porr bl bloq oque uess de ra raya yass para para B es por filas entonces est´ esta´ se rea realiz lizaa simple simplemen mente te con con la func funciion o´ n MP MPII Sc Scat atte terr, mien mientr tras as qu quee para para el algori algoritmo tmo de descom descompos posici ici´on o´ n po porr bl bloq oque uess de rayas por columnas, se utiliza la variable column
} else { for(j = 0; j < loca local_n; l_n; j++ ++) ) { MPI_Recv(& MPI_Recv(&local_B[j*n], n, MPI MPI_FL _FLOAT OAT, , 0, 0, MPI_COMM_WORLD, MPI_COMM_WORLD, &status); } } }
Codigo o´ digo 1. Funci Funci´on o´ n para envia enviarr los bloques bloques de filas filas de la matriz matriz A y los bloques de columnas de la matriz B en el algoritmo de Descomposici´on on en bloques de rayas por columnas.
Lueg Luego o se re real aliz izaa la impl implem emen enta taci ci´on o´ n del del bucle ucle de etapas, el cual halla los productos parciales de la matriz resultante C. Finalm Finalment ente, e, se rec recoge ogen n todos todos los bloque bloquess de los re resu sult ltad ados os de la ma matr triz iz C en un so solo lo re resu sult ltad ado o con con la func funciion o´ n MP MPII Gath Gather er.. El algo algori ritm tmo o de la descomposici´ descomposicion o´ n en bloques de rayas por filas realiza operaciones an´ analogas a´ logas s´ solo o´ lo que se envian filas de B en lugar de columnas.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
local_A, local_n*n, MPI_FLOA MPI_FLOAT, T, 0, MPI_COMM_WORLD); / * Envi Enviar ar lo los s bl bloq oque ues s de fi fila las s de B a to todo dos s los proc procesado esadores res */ MPI_Scatter(matrix_B, MPI_Scatter(matrix_B, local_n*n, MPI_FLOAT MPI_FLOAT, , local_B, local_n*n, MPI_FLOA MPI_FLOAT, T, 0, MPI_COMM_WORLD); MPI_COMM_WORLD); / * Se de defi fine nen n el de dest stin ino o y la fu fuen ente te de del l en envi vio o de lo los s bl bloq oque ues s de co colu lumn mnas as de la ma matr triz iz B */ source = (my_rank - 1 + size) % size; dest = (my_rank + 1) % size; q = n / local_n;
/ * Envi Envio o de lo los s va valo lore res s de n y lo loca cal_ l_n n a to todo dos s los proce procesador sadores es */ MPI_Bcast(& MPI_Bcast(&local_n, 1, MPI_INT, MPI_INT, 0, MPI_COMM_ MPI_COMM_ WORLD); MPI_Bcast(& MPI_Bcast(&n, 1, MPI_INT, MPI_INT, 0, MPI_COMM_WORLD); MPI_COMM_WORLD); desc_col_send(& desc_col_send(&matrix_A, &matrix_B, &local_A, &local_B, local_B, column, column, n, local_n, local_n, my_rank); my_rank); / * Se de defi fine nen n el de dest stin ino o y la fu fuen ente te de del l en envi vio o de lo los s bl bloq oque ues s de co colu lumn mnas as de la ma matr triz iz B */ source = (my_rank - 1 + size) % size; dest = (my_rank + 1) % size; q = n / local_n;
Set_to_zero(local_C); / * Se de defi fine nen n el bu bucl cle e de et etap apas as de del l algoritmo */ for (stage = 0; sta stage ge < q; sta stage ge++ ++) ) { ind = (my_rank - stage + size) % size; for (j = 0; j < loca local_n; l_n; j++ ++) ) { for (i = 0; i < n; i++ ++) ) { / * Realiz Realizar ar el pro produc ducto to de loc local_ al_A A y local_B */ for (k = 0; k < loca local_n; l_n; k++ ++) ) { local_C[i + j*n] += local_A[local_n*ind ind+ +k+j*n]*local_B[i+ local_B[i+k*n]; } } } / * Se en envi via a y re reci cibe be lo los s bl bloq oque ues s de fi fila las s de la ma matr triz iz B */ MPI_Send(local_B, MPI_Send(local_B, local_n*n, MPI_FLOAT MPI_FLOAT, , dest, 0, MPI_COMM_WORLD); MPI_COMM_WORLD); MPI_Recv(local_B, MPI_Recv(local_B, local_n*n, MPI_FLOAT MPI_FLOAT, , source, 0, MPI_COMM_WORLD, MPI_COMM_WORLD, &status); } / * Recole Recolecta ctar r los blo bloque ques s de fil filas as de loc local_ al_C C de cad cada a pro proces cesado ador r en mat matrix rix_C _C */ MPI_Gather(local_C, MPI_Gather(local_C, local_n*n, MPI_FLOAT MPI_FLOAT, , matrix_C, local_n*n, MPI_FLOA MPI_FLOAT, T, 0, MPI_COMM_WORLD);
/ * Se de defi fine nen n el bu bucl cle e de et etap apas as de del l algoritmo */ for (stage = 0; sta stage ge < q; sta stage ge++ ++) ) { for (i = 0; i < loca local_n; l_n; i++ ++) ) { for (k = 0; k < loca local_n; l_n; k++ ++) ) { temp = (my_rank - stage + size) % size; ind = local_n*temp + i*n + k; local_C[ind] = 0. 0.0 0; / * Realiz Realizar ar el pro produc ducto to de loc local_ al_A A y local_B */ for (j = 0; j < n; j++ ++) ) { local_C[ind] += local_A[j+ local_A[j+i*n]*local_B[j+ local_B[j+k*n]; } } } / * Se env envia ia y rec recibe ibe los blo bloque ques s de col column umnas as de la ma matr triz iz B */ MPI_Send(local_B, MPI_Send(local_B, local_n*n, MPI_FLOA MPI_FLOAT, T, dest, 0, MPI_COMM_WORLD); MPI_COMM_WORLD); MPI_Recv(local_B, MPI_Recv(local_B, local_n*n, MPI_FLOA MPI_FLOAT, T, source, 0, MPI_COMM_WORLD, MPI_COMM_WORLD, &status); } / * Recole Recolecta ctar r los blo bloque ques s de fil filas as de loc local_ al_C C de cad cada a pro proces cesado ador r en mat matrix rix_C _C */ MPI_Gather(local_C, MPI_Gather(local_C, local_n*n, MPI_FLOA MPI_FLOAT, T, matrix_C, local_n*n, MPI_FLOA MPI_FLOAT, T, 0, MPI_COMM_WORLD); }
}
Codigo o´ digo 3. Implementa Implementaci cion o´ n del algoritmo de descomposi descomposici ci on o´ n por bloques de filas para la matriz A y por bloques de filas para la matriz B en MPI.
Codigo o´ digo 2. Implementa Implementaci cion o´ n del algoritmo de descomposic descomposicii on o´ n por
bloques de filas para la matriz A y por bloques de columnas para la matriz B en MPI.
B. Algoritmos de Fox y Cannon.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
´n cuales el proceso forma parte. La implementaci o on de la estructura se muestra en el Codigo o´ digo 4. typedef stru typedef struct ct { / *Tota Total l de proc procesos esos*/ int p; / *Comu Comunica nicador dor del grid */ MPI_Comm MPI_Comm comm; comm; / *Com Comuni unicad cador or par para a la fil fila a*/ MPI_Comm row_comm; / *Comu Comunica nicador dor para la colu columna mna*/ MPI_Comm col_comm; / *Ord Orden en del gri grid d */ int q; / *Num Numero ero de fil fila a*/ int my_row; / *Nume Numero ro de colum columna na*/ int my_col; / *Ran Rank k en el com comuni unicad cador or del grid */ int my_rank; } GRID_INFO GRID_INFO_T; _T;
Codigo o´ digo 4. Implementac Implementacii on o´ n de la est estruc ructur turaa que identific identificaa a cada cada proceso.
Tambi´ Tambie´ n se va a utilizar una estructura que representa a la matriz local en cada proceso, es decir el sub-bloque de matriz que cada proceso recibe luego luego de haber haber rea realiz lizado ado la descom descompos posici ici´o´ n en sub-bloques de matrices y la respectiva distribuci on o´ n entre los procesos. ´ digo El Co odig o 5 mues muestr traa la impl implem emen enta taci ci´o´ n de la estructura que representa a la matriz local en cada proceso. typedef stru typedef struct ct { // Ind Indica ica el ord orden en del sub sub-bl -bloqu oque e int n_bar; / * Define Define un ali alias as par para a el ord orden en del sub-bloq sub-bloque ue */ #define #defi ne Orde Order(A) r(A) ((A) ((A)->n_ ->n_bar) bar) / Vect alm los ele tos del sub sub-bl -bl
proc proces esad ador ores es con con la func funciion o´ n MP MPII Ca Cart rt creat create, e, se procede a particionar la malla de procesos creada en subm submal alla las, s, tant tanto o para para las las filas filas como como para para las las column columnas, as, es decir decir,, se cre crean an comuni comunicad cadore oress que permitan permitan comunicaci comunicaci´on o´ n entre los procesos de una fila o una columna en la malla de procesos global con la funci´ funcion o´ n MPI Car Cartt sub para para el consec consecuen uente te env´ env´ıo ı o y re rece cepc pciion o´ n de bl bloq oque uess de subm submat atri rice cess a trav´ traves e´ s de filas o columnas. Las coordenadas de cada proceso en la malla de ´n proc proces esos os qu quee se cr creeo´ se ob obti tien enee con con la func funciio on MPII Ca MP Cart rt coor coords ds las las cual cuales es lu lueg ego o se gu guar arda dan n en las varia variables bles grid.m grid.my y row row para la fila y grid.my grid.my col para la columna a la cual pertenece cada procesos, las las mism mismas as qu quee se encu encuen entr tran an en la estr estruc uctu tura ra mencionada en el Codigo o´ digo 4. Los algoritmos de Fox y de Cannon tienes similares implem implement entaci acione ones, s, varia variando ndo basic a´ sicam amen ente te en el movimiento de los sub-bloques de matrices de la matriz B en cada etapa. Las impl impleeme ment ntac acio ione ness de lo loss algo algori rittmos mos de Fox y de Cannon se muestran en el C´ Codigo o´ digo 6 y el Codigo o´ digo 7 respectivamente.
void Fox Fox( ( int GRID_INFO_T LOCAL_MATRIX* LOCAL_MATRIX* LOCAL_MATRIX* ) {
n, *grid, local_A, local_B, local_C
LOCAL_MATRIX* temp_A; int
/
int
stage; / *Repre Represent senta a la etapa etap a del algor algoritmo itmo*/
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
bcast_roo bcast_root, t, grid-> grid->row_comm); row_comm); Local_matrix_multiply(loca Local_matrix_multiply(local_A, l_A, local_B, local_C); } else { MPI_Bcast(temp_A, 1, local_matrix_mpi_t , bcast_roo bcast_root, t, grid-> grid->row_comm); row_comm); Local_matrix_multiply(temp Local_matrix_multiply(temp_A, _A, local_B, local_C); } / * Se enc encarg arga a del des despla plazam zamien iento to de los bloq bl oque ues s de B a tr trav aves es de su sus s co colu lumn mnas as */ MPI_Sendrecv_replace(local_B, 1, local_matrix_mpi_t, des dest, t, 0, source, source, 0, grid-> grid->col_comm, col_comm, &status); } / * for */ } / *Fox */
Codigo o´ digo 6. Implementaci´ Implementacion o´ n del algoritmo de Fox en MPI.
void Cannon( Cannon( int n , GRID_INFO_T* grid , LOCAL_MATRIX_T* local_A, LOCAL_MATRIX_T* local_B, LOCAL_MATRIX_T* local_C ) { int int int MPI_Status
stage; source_r, source_c; dest_r, dest_r, dest_c; dest_c; status;
Set_to_zero(local_C); for (stage = 0; sta stage ge < grid-> grid->q; q; sta stage ge++ ++) ) { if (stage == 0) { source_r = (grid-> (grid->my_col my_col + grid-> grid->my_row) my_row) % grid-> grid->q; q; dest_r = (grid-> (grid->my_col my_col+ +grid-> grid->q q-grid-> grid->my_row) my_row) % grid-> grid->q; q; source_c = (grid-> (grid->my_row my_row + grid-> grid->my_col) my_col) % grid-> grid->q; q; dest_c = (grid-> (grid->my_row my_row+ +grid-> grid->q q-grid-> grid->my_col) my_col) % grid-> grid->q; q;
C´odigo odigo 7. Implementaci´on del algoritmo de Cannon en MPI.
´ E XPERIMENTAL V VI. I. E VALUACI ON
Todos los experimentos fueron ejecutados en una maquina a´ quina con un procesador dual-core Intel® Intel®CoreT M i3-2350M corriendo con 2.30 GHz, 4GB de RAM, y 50 500 0 GB de di disc sco o du duro ro.. El proc proces esad ador or si simu mula la un proces procesado adorr quad-c quad-core ore median mediante te la tecnol tecnolog og´´ıa ıa hyperthreading. El sistema operativo utilizado fue Ubuntu 13.10 de 64 bits. Los experimentos se desarrollaron con un numer u´ mero o cuad cuadra rado do perf perfec ecto to de proc proces esos os,, ya qu quee es el numer u´ mero o re requ quer erid ido o po porr lo loss algo algori ritm tmos os de Fox y Cannon. Adem´ Ademas a´ s el orden de las matrices fueron divisibles por la ra´ ra´ız ız cuadrada del numero u´ mero de proces procesos. os. Los algori algoritmo tmoss de descom descompos posici ici´o on ´n por bloques de rayas por filas y por columnas no requieren este requisito, solo necesitan que el orden de las matrices sean divisibles por el n umero u´ mero de ´n proc proces esos os.. Pa Para ra la un unif ifor ormi mida dad d en la re real aliz izac aciio on del experimento se tomaron un n umero u´ mero cuadrado cuadrado perfecto de procesos. El primer experimento experimento desarrollado desarrollado fue la evaluaci evaluaci´on o´ n de todos los algoritmos, tanto el secuencial como lo loss para parale lelo los. s. El algo algori ritm tmo o secu secuen enci cial al se corr corriio´ con s´ solo o´ lo un proceso, mientras que los algoritmos paralelos se corrieron con 4 procesos. obteniendo los tiempos en segundos en la tabla 1. Se obtuvo
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
precisamente con 4 y 9 procesos. Al real realiz izar ar la ejec ejecuc uciion o´ n de lo loss algo algori ritm tmos os con con 4 proc proces esos os,, se ob obti tien enee como como re resu sult ltad ado o qu quee lo loss algoritmo de Fox y Cannon tienen un rendimiento muy similar, los cuales son los m as a´ s lentos, luego viene el algoritmo de Descomposici on o´ n en bloques de rayas por filas y siendo el algoritmo m as a´ s rapido a´ pido el algori algoritmo tmo de Descom Descompos posici ici´on o´ n en bl bloq oque uess de rayas por columnas.
´n Las Las Tabla abla 3 mues muestr traa lo loss ti tiem empo poss de ejec ejecuc uciio on de los algoritmos algoritmos secuencial, secuencial, descomposici descomposici´on o´ n en bloques de rayas por columnas, descomposici on o´ n en bloques de rayas por filas, algoritmo de Fox y el algoritmo de Cannon. Los tiempos se obtuvieron para diferentes valores de n, donde n es el orden de las matrices. La Tabla 4 y la Tabla 5 muestra lo mismo que la Tabla 3 s olo o´ lo que para algoritmos paralelos, donde varian el orden de las matrices as ´ı como tambi´en e n el n´umero umero de procesos usados.
Tabla 2 : Algoritmos Paralelos para la Multiplicacion ´ de Matrices desde el mas al mas ´ r apido ´ ´ ´ lento.
n 1 2 3
Algoritmo Desc Desc.. por por Colu Column mnas as Desc Desc.. por por Fila Filass Fox y Cann Cannon on
Al real realiz izar ar la ejec ejecuc uciion o´ n de lo loss algo algori ritm tmos os con con 9 proc proces esos os,, se obti obtien enee como como re resu sult ltaado una una ralentizaci´ ralentizacion o´ n del del ti tiem empo po de ejec ejecuc uciio´ n de los algo algori ritm tmos os lo cual cual se debe debe a la no exis existe tenc ncia ia de lo loss 9 proc proces esad ador ores es f ´ısicos, ya que la maquina a´ quina solo cuenta con un procesador quad-core simulado mediante mediante hyperthread hyperthreading, ing, adem´ ademas a´ s las operac operacion iones es que rea realiz lizaa cada cada proces procesado adorr es indepe independi ndient entee de otras operaciones, operaciones, as´ as´ı que lo que sucede es que ca cada da proc proces esao aorr real realiz izaa el trab trabaj ajo o de do doss o mas a´ s proces procesado adores res,, consec consecuen uentem tement entee ralent ralentiza izando ndo el proceso. A´ Aun u´ n bajo esta deficiencia de procesadores se obtiene el mismo resultado que al correrlo con 4 proc proces esad ador ores es,, es deci decirr lo loss algo algori ritm tmos os de Fox Fox y Cannon Cannon muestr muestran an un rendim rendimien iento to muy simila similarr si sien endo do lo loss algo algori ritm tmos os mas a´ s lent lentos os,, lu lueg ego o vi vien enee el algori algoritmo tmo Des ici´ ici ´ bl de
Tabla 3 : Resultados de las pruebas con el algoritmo secuencial y con los algoritmos paralelos con 4 procesos.
n secuencial 100 0.013 200 0.115 300 0.421 400 1.020 500 2.197 600 4.905 700 8.316 800 12.744 900 19.459 1000 28.275 1100 37.625 1200 46.006 1300 63.223 1400 80.378 1500 102.166 1600 121.269 1700 155.612 1800 185.411 1900 223.159 2000 250.386 Nota : n indica el orden
fox cannon columnas filas 0.007 0.004 0.011 0.003 0.036 0.034 0.037 0.027 0.109 0.106 0.106 0.085 0.266 0.253 0.263 0.195 0.515 0.509 0.520 0.380 0.945 0.914 0.906 0.651 1.556 1.572 1.489 1.042 2.472 2.341 2.353 1.560 3.772 3.920 3.685 2.254 5.332 5.410 5.327 3.120 7.383 6.967 7.535 4.138 10.048 9.590 9.305 5.369 13.148 13.079 13.265 6.816 16.148 16.093 16.612 8.718 21.094 20.721 21.134 10.365 23.475 24.043 23.505 13.048 30.737 30.700 31.229 15.219 36.888 37.088 37.227 18.065 43.847 43.436 44.885 21.516 51.197 51.091 47.893 24.892 de las matrices; los tiempos obtenidos estan a´ n en segundos. segundos.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
´n Fig. 21. Gr´ Grafico a´ fico comparativo entre los algoritmos para la multiplicaci´ multiplicacio on de matrices.
Tabla 4 : Resultados de las pruebas de la comparaci on ´ entre los algoritmos paralelos con 4 procesos.
n 500 1000
fox 0.555 5.748
cannon 0.562 5.821
columnas 0.413 3.618
filas 0.594 5.760
Fig. 23. Gr afico a´ fico comparativo entre los algoritmos paralelos para la multiplicaci´ on de matrices.
Tabla 5 : Resultados de las pruebas de la comparacion ´ entre los algoritmos paralelos con 9 procesos.
n 600 1200 1800
fox 1.200 9.774 36.180
cannon 1.183 9.972 35.707
columnas 0.880 5.867 20.724
filas 1.556 9.639 36.140
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
entonces menor ser a´ el orden de las sub-matrices y por lo tanto se reducir´ reducira´ el tiempo de ejecuci on o´ n de los algoritmos de Fox y Cannon. En general si el n umero u´ mero de procesadores aumenta entonces el tama˜no no de los bucles en los algoritmos para parale lelo loss di dism smin inuy uyee y po porr lo tant tanto o el ti tiem empo po de ejecuci´ ejecucion o´ n disminuye. VIII. C ONCLUSIONES
Fig. 25. Gr afico a´ fico comparativo entre los algoritmos paralelos para la multiplicaci´ on de matrices.
VII. D ISCUSIONES
´n Los algoritmos paralelos para la multiplicaci o on de matrices permiten reducir el tiempo de ejecucion o´ n significativamente respecto al algoritmo secuencial, y esto se hace a un u´ n mas evidente cuando el orden de las matrices empieza a crecer. Los algori algoritmo tmoss parale paralelos los mas a´ s rapidos a´ pidos obtenidos obtenidos exp xper erim imen enta talm lmen ente te fuer fueron on lo loss algo algori ritm tmos os de Descomposici on o´ n en bloques de rayas por columnas y Desc Descom ompo posi sici ci´o´ n en bloques de rayas por filas, siendo el mas a´ s rapid a´ pido o el algo algori ritm tmo o de Descomposicion o´ n en bloques de rayas por columnas.
La reducc reducciion o´ n del tiempo de ejecuci´ ejecucion o´ n entre el algoritmo secuencial y los algoritmos paralelos se fundamenta fundamenta basicamente a´ sicamente en la reducci´ reduccion o´ n significativa La superioridad de los algoritmos de de la cantidad de bucles realizados por el algoritmo. Descomposici´ Descomposicion o´ n en bl bloq oque uess de ra raya yass po porr filas filas
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
art´ art´ıcul ı culo o como como el algo algori ritm tmo o de SUMM SUMMA A [14] [14],, PUMMA [15] y DIMMA[16]. En este trabajo hemos desarrollado los algoritmos parale paralelos los para para la multip multiplic licaci aci´on o´ n de ma matr tric ices es,, lo loss cuales fueron corridos en una m´ maquina a´ quina quad-core de 64 bits, lo cual limit o´ el an´ analisis a´ lisis experimental de lo loss algo algori ritm tmos os de Fox y Ca Cann nnon on,, ya qu quee no se conto´ con una mayor cantidad de procesadores. Los trabaj trabajos os a futuro futuro bu busca scarr´ıan ı an po pode derr corr correr er lo loss algori algoritmo tmoss parale paralelos los en maqui a´ quina nass con con un ma mayo yorr numero u´ mero de proces procesado adores res,, adem ademas a´ s de apli aplica carr lo loss algori algoritmo tmoss parale paralelos los a proble problemas mas pr´ practicos a´ cticos como la prediccion o´ n del clima, sistemas de bases de datos, compresi´ compresion o´ n de datos y otros. Adem´ Ademas a´ s un trabajo a futuro podr´ıa ıa ser la implementacion o´ n en OpenMP de los algoritmos tratados en este art´ art´ıculo. ıculo. ´ R EFERENCIAS B IBLIOGR AFICAS Introduction to [1] V. Kumar Kumar,, A. Grama, Grama, A. Gupta, Gupta, G. Karypi Karypis, s, Introduction Parallel Computing, 2nd ed. Addison-W Addison-Wesley esley,, 2003. 2003. [2] M. J. Quinn, Parallel Programming in C with MPI and OpenMP . New York,NY:McGraw-Hill, 2004. [3] G. C. Fox, S. W. Otto, A. J. G. Hey, Matrix Algorithms on a Hypercube I: Matrix Multiplication . Par Parall allel el C Comp omputi uting. ng. 4H.
arallell Matrix Matrix Multip Multiplic licati ation on [16] Jaeyoo Jaeyooung ung Choi, Choi, , A New Paralle Algorithm on Distributed-Memory Distributed-Memory Concurrent Computers Computers. High Performance Performance Computing on the Information Information Superhighway Superhighway,, 1997, pp 224-229