Está en la página 1de 26

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Algoritmos paralelos para la Multiplicacin de


Matrices
Gins David Guerrero Hernndez
Universidad de Murcia - UM

18 de diciembre de 2008

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

ndice
1

3
4
5

Introduccin
Importancia
Consideraciones
Caractersticas
Secuencial
Paralelizar
Tipos
Secuencial
Bloques
Cannon
Fox
DNS
Conclusiones
Trabajo
Bibliografa
Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Importancia Consideraciones Caractersticas Secuencial

Importancia de la Multiplicacin de Matrices (MM)

Aparece en un gran nmero de algoritmos en el lgebra lineal


(sistemas de ecuaciones, calculo de estructuras,
determinantes...).
Las ideas de optimizacin pueden ser usadas para otros
problemas.
Los algoritmos de la MM son los ms estudiados en la
computacin de altas prestaciones.
Se utiliza como benchmark de bajo nivel.

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Importancia Consideraciones Caractersticas Secuencial

Consideraciones iniciales a tener en cuenta


Por simplicidad, todo el tiempo trabajaremos con matrices
cuadradas de tamao n x n.
Consideramos que el nmero de procesadores de los que
disponen las msquinas paralelas es p.
Las matrices a multiplicar sern A y B, ambas tratadas como
matrices densas (con pocos 0s), el resultado lo
almacenaremos en la matriz C .
Tp se corresponde con el tiempo que emplean p para resolver
el problema.
En el coste de las comunicaciones el tiempo para transmitir n
datos entre dos procesadores conectados es dada por ts + ntw
donde ts el el tiempo empleado para establecer la
comunicacin y tw es el tiempo que tarda para transmitir un
dato.
Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Importancia Consideraciones Caractersticas Secuencial

Caractersticas de la MM

Hay diversas caractersticas por las que la MM es apropiada para


mquinas paralelas:
Cada elemento que se calcula de la matriz resultado C (C(i,j) )
es independiente de todos los dems elementos.
Siguen el modelo SPMD (Single Progam - Multiple Data).
La cantidad y el tipo de operaciones a realizar es independiente
de los datos mismos.
Regularidad de la organizacin de los datos y de las
operaciones que se realizan sobre los datos.

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Importancia Consideraciones Caractersticas Secuencial

Algoritmo secuencial
Bsicamente est formado por tres bucles for.
Cdigo
for (i = 0; i < n; i++) {
for (j = 0; i < n; j++) {
C[i][j] = 0;
for (k = 0; k < n; k++) {
C[i][j] += A[i][k] * B[k][j]
}
}
}
O(n3 ).

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Tipos de Algoritmos Paralelos


Segn en el tipo de mquinas donde vaya a ser ejecutado podemos
encontrar:
Algoritmos Paralelos para Multiprocesadores.
Simple basado en el secuencial.
Divide y Vencers recursivo.
Paralelizacin del mtodo de Strassen.

Algoritmos Paralelos para Multicomputadores.


Simple basado en el secuencial.
Con particionamiento en bloques.
Cannon.
Fox.
DNS.

Los algoritmos nuevos que se presentan son los pertenecientes al


segundo bloque, por lo que centraremos nuestro estudio en estos.

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo simple basado en el secuencial

Podemos basarnos en el cdigo secuencial.


Es fcilmente paralelizable.
Cada procesador tendr en memoria un conjunto de filas de la
matriz A y la matriz B por completo.
El uso de memoria es muy ineficiente.
P1

P1

P1

P1

P1

P1

P1

P1

P2

P2

P2

P2

P2

P2

P2

P2

P1
P2

Gins David Guerrero Hernndez

P1

P1

P1

P1

P1

P1

P1

P1

P2

P2

P2

P2

P2

P2

P2

P2

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Divisin en Bloques I

Estamos ante una topologa lgica en malla de dos


dimensiones, donde p(i,j) el procesador de la fila i y columna j
y que la matrices estn dividas en bloques.
Las matrices sern dividas en bloques de tamao

n
p

n .
p

Cada procesador calcular un bloque de C .

Cada procesador tendr p submatrices correspondientes a la


fila de bloques de la matriz A y otras tantas correspondientes
a la columna de bloques de la matriz B para as poder calcular
un bloque de C .
El uso de memoria, aunque mejor que el algoritmo anterior,
sigue siendo ineficiente.

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Divisin en Bloques II
Los pasos que sigue el algoritmo son:
1
2

Inicialmente cada procesador tiene los bloques A(i,j) y B(i,j)


El procesador que est situado en la fila (i, j) enva su bloque
de A a todos los elementos de la fila i de la malla, y el bloque
de B a todos los elementos de la columna j.
Finalmente se realiza la multiplicacin con los bloques de la
fila de bloques i de A y los bloques de la columna j de B, para
as obtener el bloque C(i,j) .

Tp =
P1

n3
p

+ log pts + 2 n p tw

P1
P2

P3

P1
P2

P3
P4

P4

P2
P3

P1

P4
P2

P3

B
Gins David Guerrero Hernndez

P1

P2

P3

P4

P4

C
Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo de Cannon I

Es una versin del anterior algoritmo que hace un uso ms


eficiente de la memoria.
Nuevamente estamos ante una topologa lgica de malla de 2
dimensiones.
Se basa en ir desplazando bloques de la matriz A hacia el
procesador de la izquierda y los de la matriz B hacia el de
arriba.
En cada paso un procesador slo tiene un bloque de A y otro
de B en memoria.

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo de Cannon II
1
2

El procesador p(i,j) tiene los bloques A(i,j) y B(i,j) .


El bloque correspondiente a la fila i-sima de A se enva
cclicamente al procesador que est i filas a la izquierda en la
malla, y la columna j-sima de B se enva cclicamente j
columnas hacia arriba. As pues el bloque A(i,j) ser enviado al

procesador (i, (j + i)mod p).


Cada procesador multiplica su par de bloques.

Repetir
4

p 1 veces:

De igual modo que en el punto 2, cada bloque de A se enva al


procesador que se encuentra a la izquierda en la malla, y cada
bloque de B al de arriba.
Cada procesador multiplica su nuevo par de bloques, y suma el
resultado al anterior.

Tp =

n3
p

+ 2 pts + 2 n p tw

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Ejemplo I
3

17

12

21

10

12

11

Paso 1

Paso 2

Paso 3
3

B
Gins David Guerrero Hernndez

C
Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Ejemplo II

Paso 4
2

Paso 5
2

13

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Ejemplo III

Paso 4
0

13

Paso 5
0

17

12

21

11

10

12

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo de Fox
En este algoritmo mantiene la filosofa del algoritmo anterior.
El algoritmo consiste en los siguientes pasos:
1

El procesador p(i,j) tiene los bloques A(i,j) y B(i,j) .

Repetir
2

p:

La fila i-sima de la malla de procesadores recibe el bloque


A(i,(i+j)mod p) en la j-sima iteracin.
Multiplicar el bloque recibido de A por el bloque residente de
B.
Enviar el bloque de B al procesador directamente precedente
en la fila del procesador, y recibir un bloque de B desde el
procesador de la fila posterior.

Tp =

n3
p

+ pts + 2 n p tw

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Ejemplo I
3

17

12

21

10

12

11

Paso 1

Paso 2

Paso 3
3

B
Gins David Guerrero Hernndez

C
Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Ejemplo II

Paso 4
3

Pasos 2 y 3
2

13

12

17

10

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Ejemplo III

Paso 4
2

13

12

17

10

Pasos 2 y 3
0

17

12

21

11

10

12

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo DNS I

Usa un particionamiento 3D.


Visualiza el algoritmo de multiplicacin de matrices como un
cubo, las matrices A y B estn en dos caras ortogonales y la
matriz C resultante la almacena en otra cara.
Cada nodo en el cubo representa una operacin de
suma-multiplicacin.
Originalmente necesita n x n x n procesadores.
Hay variaciones del algoritmo que permiten llevar a cabo el
algoritmo con un menor nmero de procesadores.
La variacin ms comn usa n2 p n3 procesadores.
La variacin GK usa 1 p n3 procesadores.

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo DNS II
El algoritmo, que puede ser observado grficamente en las
siguientes transparencias, est divido en las siguientes etapas:
1

2
3

Los elementos de las matrices A y B son distribuidos en los p


procesadores.
Se multiplican los elementos que contiene cada procesador.
Se suman todos los resultados parciales (situados a lo largo de
la dimensin k en la posterior figura).

En la versin original realiza el cmputo en un O(log n).


En la versin
ms
 que permite

 de un elemento por procesador:
p
n3
n3
Tp = p + 5 log n2 + 2 p (ts + tw )
En la versin GK:
3
Tp = np + 53 log pts +

5 n2
3 23 ts
p

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo DNS III

(a) Distribucin inicial de la matriz A y B

Gins David Guerrero Hernndez

(b) Despus de mover A(i,j) desde P(i,j,0) a P(i,j,j)

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo DNS IV

(a) Despus de hacer broadcast A(i,j) a lo largo de j

Gins David Guerrero Hernndez

(b) Distribucin correspondiente a B

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Conclusiones
Se puede comprobar que hay gran cantidad de algoritmos
creados para realizar de manera lo ms ptima posible la
multiplicacin de matrices.
Adems de los algoritmos presentados hay muchos otros
(Arreglo Sistlico, Berntsen...).
Muchos de los algoritmos que nos podemos encontrar son
variaciones de los estudiados para adaptarlos a un tipo de
mquina paralela concreta.
Todos los algoritmos paralelos comparten caractersticas
comunes:
Adoptan el modelo de procesamiento SPMD.
Asumen que los nodos de procesamiento son homogneos y
aprovechan esta homogeneidad para obtener balance de carga.

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Trabajo a realizar

Una vez adquiridos los conocimientos bsicos sobre la


paralelizacin de la MM el trabajo que se va a realizar ser:
Implementacin en MPI:
Algoritmo de Cannon.
Algoritmo de Fox.

Implementacin en OpenMP:
Algoritmo simple a partir del Algoritmo Secuencial.

Estudio Terico-Prctico comparando:


1
2
3

Cannon vs Fox.
Simple vs Cannon.
Simple vs Fox.

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

Introduccin Paralelizar Conclusiones Trabajo Bibliografa

Bibliografa

Ananth Grama, Anshul Gupta, Vipin Kumar, George Karypis.


Introduction to Parallel Computing: Design and Analysis of
Algorithms
Ranshul Gupta, Vipin Kumar.
Scalability of Parallel Algorithms for Matrix Multiplication
Zhiao Shi.
Parallel Matrix Multiplication
Karen Walters.
Numerical Linear Algebra

Gins David Guerrero Hernndez

Algoritmos paralelos para la Multiplicacin de Matrices

También podría gustarte