Está en la página 1de 26

Introducción Paralelizar Conclusiones Trabajo Bibliografía

Algoritmos paralelos para la Multiplicación de


Matrices

Ginés David Guerrero Hernández

Universidad de Murcia - UM

18 de diciembre de 2008

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía

Índice
1 Introducción
Importancia
Consideraciones
Características
Secuencial
2 Paralelizar
Tipos
Secuencial
Bloques
Cannon
Fox
DNS
3 Conclusiones
4 Trabajo
5 Bibliografía
Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices
Introducción Paralelizar Conclusiones Trabajo Bibliografía Importancia Consideraciones Características Secuencial

Importancia de la Multiplicación de Matrices (MM)

Aparece en un gran número de algoritmos en el álgebra lineal


(sistemas de ecuaciones, calculo de estructuras,
determinantes...).
Las ideas de optimización pueden ser usadas para otros
problemas.
Los algoritmos de la MM son los más estudiados en la
computación de altas prestaciones.
Se utiliza como benchmark de bajo nivel.

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Importancia Consideraciones Características Secuencial

Consideraciones iniciales a tener en cuenta

Por simplicidad, todo el tiempo trabajaremos con matrices


cuadradas de tamaño n x n.
Consideramos que el número de procesadores de los que
disponen las másquinas paralelas es p.
Las matrices a multiplicar serán A y B, ambas tratadas como
matrices densas (con pocos 0’s), 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
comunicación y tw es el tiempo que tarda para transmitir un
dato.

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Importancia Consideraciones Características Secuencial

Características de la MM

Hay diversas características por las que la MM es apropiada para


máquinas paralelas:
Cada elemento que se calcula de la matriz resultado C (C(i,j) )
es independiente de todos los demás 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 organización de los datos y de las
operaciones que se realizan sobre los datos.

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Importancia Consideraciones Características Secuencial

Algoritmo secuencial

Básicamente está formado por tres bucles for.


Código
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 ).

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Tipos de Algoritmos Paralelos

Según en el tipo de máquinas donde vaya a ser ejecutado podemos


encontrar:
Algoritmos Paralelos para Multiprocesadores.
Simple basado en el secuencial.
Divide y Vencerás recursivo.
Paralelización del método 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.

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo simple basado en el secuencial

Podemos basarnos en el código secuencial.


Es fácilmente 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

P1 P1 P1 P1 P1 P1 P1 P1 P1
∗ =
P2 P2 P2 P2 P2 P2 P2 P2 P2

P2 P2 P2 P2 P2 P2 P2 P2

A B C

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

División en Bloques I

Estamos ante una topología lógica en malla de dos


dimensiones, donde p(i,j) el procesador de la fila i y columna j
y que la matrices están dividas en bloques.
Las matrices serán dividas en bloques de tamaño √n x √n .
p 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.

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

División en Bloques II

Los pasos que sigue el algoritmo son:


1 Inicialmente cada procesador tiene los bloques A(i,j) y B(i,j)
2 El procesador que está situado en la fila (i, j) envía 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.
3 Finalmente se realiza la multiplicación 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) .
n3 2
Tp = p + log pts + 2 √n p tw
P1 P1 P1 P2 P1 P2

P2 P2 P3 P4

P3 P3
∗ P1 P2
= P3 P4

P4 P4 P3 P4

A B C

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo de Cannon I

Es una versión del anterior algoritmo que hace un uso más


eficiente de la memoria.
Nuevamente estamos ante una topología lógica 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 sólo tiene un bloque de A y otro
de B en memoria.

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo de Cannon II

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


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

procesador (i, (j + i)mod p).
3 Cada procesador multiplica su par de bloques.

Repetir p − 1 veces:
4 De igual modo que en el punto 2, cada bloque de A se envía al
procesador que se encuentra a la izquierda en la malla, y cada
bloque de B al de arriba.
5 Cada procesador multiplica su nuevo par de bloques, y suma el
resultado al anterior.

n3 √ 2
Tp = p + 2 pts + 2 √n p tw

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Ejemplo I

3 2 0 2 0 2 8 8 8

2 1 4 ∗ 1 4 1 = 17 12 21

3 2 1 3 2 4 11 10 12

A B C
Paso 1 Paso 2

3 2 0 2 0 2 3 2 0 2 4 4

2 1 4 1 4 1 1 4 2 1 2 2

3 2 1 3 2 4 1 3 2 3 0 1

A B A B
Paso 3

3 2 0 2 4 4 6 8 0

1 4 2 1 2 2 1 8 4

1 3 2 3 0 1 3 0 2

A B C
Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices
Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Ejemplo II

Paso 4

2 0 3 1 2 2 6 8 0

4 2 1 3 0 1 1 8 4

3 2 1 2 4 4 3 0 2

A B C
Paso 5

2 0 3 1 2 2 8 8 6

4 2 1 3 0 1 13 6 5

3 2 1 2 4 4 9 8 6

A B C

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Ejemplo III

Paso 4

0 3 2 3 0 1 8 8 6

2 1 4 2 4 4 13 8 5

2 1 3 1 2 2 9 8 6

A B C
Paso 5

0 3 2 3 0 1 8 8 8

2 1 4 2 4 4 17 12 21

2 1 3 1 2 2 11 10 12

A B C

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo de Fox

En este algoritmo mantiene la filosofía 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 p:
2 La fila i-ésima de la malla de procesadores recibe el bloque
A(i,(i+j)mod √p) en la j-ésima iteración.
3 Multiplicar el bloque recibido de A por el bloque residente de
B.
4 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.
n3 2
Tp = p + pts + 2 √n p tw

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Ejemplo I

3 2 0 2 0 2 8 8 8

2 1 4 ∗ 1 4 1 = 17 12 21

3 2 1 3 2 4 11 10 12

A B C
Paso 1 Paso 2

3 2 0 2 0 2 3 3 3 2 0 2

2 1 4 1 4 1 1 1 1 1 4 2

3 2 1 3 2 4 1 1 1 3 2 4

A B A B
Paso 3

3 3 3 2 0 2 6 0 6

1 1 1 1 4 1 1 4 1

1 1 1 3 2 4 3 2 4

A B C
Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices
Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Ejemplo II

Paso 4

3 3 3 1 4 1 6 0 6

2 2 2 3 2 4 1 4 1

3 3 3 2 0 2 3 2 4

A B C
Pasos 2 y 3

2 2 2 1 4 1 8 8 8

4 4 4 3 2 4 13 12 17

3 3 3 2 0 2 9 2 10

A B C

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Ejemplo III

Paso 4

2 2 2 3 2 4 8 8 8

4 4 4 2 0 2 13 12 17

3 3 3 1 4 1 9 2 10

A B C
Pasos 2 y 3

0 0 0 3 2 4 8 8 8

2 2 2 2 0 2 17 12 21

2 2 2 1 4 1 11 10 12

A B C

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo DNS I

Usa un particionamiento 3D.


Visualiza el algoritmo de multiplicación de matrices como un
cubo, las matrices A y B están en dos caras ortogonales y la
matriz C resultante la almacena en otra cara.
Cada nodo en el cubo representa una operación de
suma-multiplicación.
Originalmente necesita n x n x n procesadores.
Hay variaciones del algoritmo que permiten llevar a cabo el
algoritmo con un menor número de procesadores.
La variación más común usa n2 ≤ p ≤ n3 procesadores.
La variación GK usa 1 ≤ p ≤ n3 procesadores.

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo DNS II

El algoritmo, que puede ser observado gráficamente en las


siguientes transparencias, está divido en las siguientes etapas:
1 Los elementos de las matrices A y B son distribuidos en los p
procesadores.
2 Se multiplican los elementos que contiene cada procesador.
3 Se suman todos los resultados parciales (situados a lo largo de
la dimensión k en la posterior figura).
En la versión original realiza el cómputo en un O(log n).
En la versión
 que permite
 más de un elemento por procesador:
n3 p n3
Tp = p + 5 log n2 + 2 p (ts + tw )
En la versión GK:
3 5 n2
Tp = np + 53 log pts + 3 23 ts
p

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo DNS III

(a) Distribución inicial de la matriz A y B (b) Después de mover A(i,j) desde P(i,j,0) a P(i,j,j)

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo DNS IV

(a) Después de hacer broadcast A(i,j) a lo largo de j (b) Distribución correspondiente a B

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía

Conclusiones

Se puede comprobar que hay gran cantidad de algoritmos


creados para realizar de manera lo más óptima posible la
multiplicación de matrices.
Además de los algoritmos presentados hay muchos otros
(Arreglo Sistólico, Berntsen...).
Muchos de los algoritmos que nos podemos encontrar son
variaciones de los estudiados para adaptarlos a un tipo de
máquina paralela concreta.
Todos los algoritmos paralelos comparten características
comunes:
Adoptan el modelo de procesamiento SPMD.
Asumen que los nodos de procesamiento son homogéneos y
aprovechan esta homogeneidad para obtener balance de carga.

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía

Trabajo a realizar

Una vez adquiridos los conocimientos básicos sobre la


paralelización de la MM el trabajo que se va a realizar será:
Implementación en MPI:
Algoritmo de Cannon.
Algoritmo de Fox.
Implementación en OpenMP:
Algoritmo simple a partir del Algoritmo Secuencial.
Estudio Teórico-Práctico comparando:
1 Cannon vs Fox.
2 Simple vs Cannon.
3 Simple vs Fox.

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices


Introducción Paralelizar Conclusiones Trabajo Bibliografía

Bibliografía

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

Ginés David Guerrero Hernández Algoritmos paralelos para la Multiplicación de Matrices

También podría gustarte