Está en la página 1de 87

Multiplicacin de matrices

Manuel Snchez Cuenca


Manolo Prez Hernndez
Multiplicacin de matrices
Nociones bsicas sobre matrices
Algoritmo secuencial
Algoritmo paralelo
Submatrices
Implementacin directa
Implementacin con submatrices
Implementacin recursiva
Algoritmo de Cannon
Array sistlico
Algoritmo de Fox
Algoritmo DNS
Mapeo de matrices en procesadores
Multiplicacin de matrices
Nociones bsicas sobre matrices
Algoritmo secuencial
Algoritmo paralelo
Submatrices
Implementacin directa
Implementacin con submatrices
Implementacin recursiva
Algoritmo de Cannon
Array sistlico
Algoritmo de Fox
Algoritmo DNS
Mapeo de matrices en procesadores
Nociones bsicas sobre matrices
Array bidimensional de nmeros
Matriz n x m n filas y m columnas
Matriz 3 x 4:

1 3 2 2
2 4 6 3
2 7 4 5
Nociones bsicas sobre matrices
Suma de matrices
Se suman los elementos de la misma
posicin en ambas matrices:

1 3 2 3 2 3 4 5 5
3 4 1 + 4 1 2 = 7 5 3
1 1 2 1 2 2 2 3 4
Nociones bsicas sobre matrices
Multiplicacin de matrices
Sean A (n x l) y B (l x m) dos matrices,
entonces cada elemento c
ij
de la matriz
resultante se calcula como:

=
=
1
0
l
k
kj ik ij
b a c
Nociones bsicas sobre matrices
Ej:



Tambin se puede multiplicar una
matriz por una constante multiplicando
todos los elementos por dicha
constante
|
|
|
.
|

\
|
=
|
|
.
|

\
|
|
|
|
.
|

\
|
18 5 8
8 2 4
11 3 5
4 1 2
3 1 1
*
3 2
2 0
2 1
5 2 * 2 1 * 1
11
= + = c
Nociones bsicas sobre matrices
Multiplicacin de una matriz por un vector

Desde el momento que un vector es una
matriz con una solo fila o una columna,
podemos usar el algoritmo de multiplicacin
de matrices. Entonces, si el vector B es de la
forma n x 1 podemos multiplicarlo por la
matriz A (m x n) como A x B; y si el vector A
es de la forma 1 x n podemos multiplicarlo
por la matriz B (n x m) como A x B.


Multiplicacin de matrices
Nociones bsicas sobre matrices
Algoritmo secuencial
Algoritmo paralelo
Submatrices
Implementacin directa
Implementacin con submatrices
Implementacin recursiva
Algoritmo de Cannon
Array sistlico
Algoritmo de Fox
Algoritmo DNS
Mapeo de matrices en procesadores
Algoritmo secuencial
Por simplicidad, todo el tiempo trabajaremos con
matrices cuadradas.
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]
}
}
}
n
3
multiplicaciones y n
3
sumas O (n
3
)
Multiplicacin de matrices
Nociones bsicas sobre matrices
Algoritmo secuencial
Algoritmo paralelo
Submatrices
Implementacin directa
Implementacin con submatrices
Implementacin recursiva
Algoritmo de Cannon
Array sistlico
Algoritmo de Fox
Algoritmo DNS
Mapeo de matrices en procesadores
Algoritmo paralelo
Podemos basarnos en el cdigo secuencial,
ya que los dos bucles externos son
independientes en cada iteracin.
Con n procesadores podemos obtener O (n
2
)
Con n
2
procesadores O (n)
Estas implementaciones son ptimas en
coste, ya que O (n
3
) = n x O (n
2
) = n
2
x O (n)
Estas clculos no incluyen el coste de las
comunicaciones.

Multiplicacin de matrices
Nociones bsicas sobre matrices
Algoritmo secuencial
Algoritmo paralelo
Submatrices
Implementacin directa
Implementacin con submatrices
Implementacin recursiva
Algoritmo de Cannon
Array sistlico
Algoritmo de Fox
Algoritmo DNS
Mapeo de matrices en procesadores
Submatrices
Si tenemos muchos menos de n
procesadores, cada procesador debe trabajar
con un subconjunto de cada una de las
matrices submatrices.
Estas submatrices se utilizan como
elementos normales, pero teniendo en
cuenta que utilizaremos el algoritmo de
multiplicacin de matrices y de suma de
matrices en lugar de la multiplicacin y la
suma de nmeros implementacin
recursiva.
Multiplicacin de matrices
Nociones bsicas sobre matrices
Algoritmo secuencial
Algoritmo paralelo
Submatrices
Implementacin directa
Implementacin con submatrices
Implementacin recursiva
Algoritmo de Cannon
Array sistlico
Algoritmo de Fox
Algoritmo DNS
Mapeo de matrices en procesadores
Implementacin directa

Con n
2
procesadores, cada procesador
calcula un elemento de C, por lo que
necesita una fila de A y una columna de
B.
Si usamos submatrices, cada
procesador deber calcular una
submatriz de C.
Implementacin directa
Anlisis de comunicaciones
Cada uno de los n
2
procesadores recibe una
fila de A y una columna de B, y devuelve un
elemento:


Mediante un broadcast de las dos matrices
podemos ahorrar tiempo, por ejemplo en un
bus tenemos:

) ) 1 2 ( 2 (
) ( ) 2 (
2
2 2
data startup
data startup data startup com
t n t n
t t n nt t n t
+ + =
= + + + =
) ( ) (
2 2
data startup data startup com
t t n t n t t + + + =
Implementacin directa
Anlisis de computacin
Cada procesador realiza n multiplicaciones y
n sumas, por lo que tenemos:


Usando una estructura de rbol y n
3

procesadores podemos obtener un tiempo de
computacin de O (log n)
n t
comp
2 =
Implementacin directa
Clculo de c
00
para matrices de 4x4 y
clculos en estructura de rbol:
a
00
b
00
a
01
b
10
a
02
b
20
a
03
b
30

x x x x

+ +

+


Multiplicacin de matrices
Nociones bsicas sobre matrices
Algoritmo secuencial
Algoritmo paralelo
Submatrices
Implementacin directa
Implementacin con submatrices
Implementacin recursiva
Algoritmo de Cannon
Array sistlico
Algoritmo de Fox
Algoritmo DNS
Mapeo de matrices en procesadores
Implementacin con submatrices
En cualquiera de los mtodos se
pueden sustituir los elementos de la
matriz por submatrices para reducir el
nmero de procesadores
Con submatrices de m x m y s = n/m es
como si tuvisemos matrices de s x s
con submatrices de m x m en lugar de
elementos simples.

Implementacin con submatrices
Anlisis de comunicaciones
Cada uno de los s
2
procesadores recibe
una fila de submatrices de A y una
columna de submatrices de B, y
devuelve una submatriz:




) ( ) 2 (
) ( ) 2 (
2 2 2
2 2 2 2
data startup data startup
data startup data startup com
t m t s nmt t s
t m t s t sm t s t
+ + + =
= + + + =
Implementacin con submatrices
Al aumentar el tamao de las submatrices (y
disminuir el nmero de procesadores) el
tiempo de transmitir un mensaje aumenta
pero el nmero de mensajes disminuye, por
lo que es posible encontrar un valor ptimo
del tamao de la submatriz.
Adems, tambin es posible hacer un
broadcast de las dos matrices completas.
Implementacin con submatrices
Anlisis de computacin
Cada procesador realiza s multiplicaciones
y s sumas de submatrices, una
multiplicacin de submatrices necesita m
3

multiplicaciones y m
3
sumas y una suma
m
2

sumas, por lo que en resumen, el
tiempo de computacin es:

) ( ) ( 2
2 3 2 3
nm O sm O ) m m s( t
comp
= = + =
Multiplicacin de matrices
Nociones bsicas sobre matrices
Algoritmo secuencial
Algoritmo paralelo
Submatrices
Implementacin directa
Implementacin con submatrices
Implementacin recursiva
Algoritmo de Cannon
Array sistlico
Algoritmo de Fox
Algoritmo DNS
Mapeo de matrices en procesadores
Implementacin recursiva
La divisin en submatrices sugiere una
estrategia recursiva de divide y vencers,
que puede ser especialmente ventajoso en
sistemas de memoria compartida.
El proceso de dividir una matriz en
submatrices para repartir el trabajo entre
otros procesadores debe parar cuando ya no
queden procesadores libres.
La ventaja de esta estrategia es que en cada
paso de recursin, los datos transmitidos son
ms pequeos y estn ms localizados.

Multiplicacin de matrices
Nociones bsicas sobre matrices
Algoritmo secuencial
Algoritmo paralelo
Submatrices
Implementacin directa
Implementacin con submatrices
Implementacin recursiva
Algoritmo de Cannon
Array sistlico
Algoritmo de Fox
Algoritmo DNS
Mapeo de matrices en procesadores
Algoritmo de Cannon
Este algoritmo y el siguiente son
especialmente apropiados para
sistemas de paso de mensajes, y la
arquitectura de paso de mensajes que
ms se ajusta a las matrices es una
malla. Realmente, aunque la
arquitectura fsica no sea una malla,
lgicamente cualquier arquitectura
puede representarse como una malla.
Algoritmo de Cannon
Utiliza una malla con conexiones entre
los elementos de cada lado (toro) para
desplazar los elementos de A hacia la
izquierda y los de B hacia arriba.
El algoritmo sigue los siguientes pasos:
1. El procesador P
ij
tiene los elementos
a
ij
y b
ij
.

Algoritmo de Cannon
2. La fila i-sima de A se desplaza i
posiciones a la izquierda, y la columna
j-sima de B se desplaza j posiciones
hacia arriba, y todo esto teniendo en
cuenta que el elemento que sale por un
extremo entra por el otro. Con este
paso se consigue que el procesador P
ij

contenga los elementos a
ij+i
y b
i+jj
, que
son necesarios para calcular c
ij
.

Algoritmo de Cannon
3. Cada procesador multiplica su par de
elementos.
4. Cada fila de A se desplaza una posicin a
la izquierda, y cada columna de B una
posicin hacia arriba.
5. Cada procesador multiplica su nuevo par
de elementos, y suma el resultado al anterior.
6. Se repiten los pasos 4 y 5 hasta terminar,
es decir n 1 desplazanientos
Algoritmo de Cannon
Ej:

|
|
|
.
|

\
|
=
|
|
|
.
|

\
|
|
|
|
.
|

\
|
12 10 11
21 12 17
8 8 8
4 2 3
1 4 1
2 0 2
*
1 2 3
4 1 2
0 2 3
|
|
|
.
|

\
|
|
|
|
.
|

\
|
4 2 3
1 4 1
2 0 2
1 2 3
4 1 2
0 2 3
1 Paso
|
|
|
.
|

\
|
|
|
|
.
|

\
|
1 0 3
2 2 1
4 4 2
2 3 1
2 4 1
0 2 3
2 Paso
|
|
|
.
|

\
|
|
|
|
.
|

\
|
|
|
|
.
|

\
|
2 0 3
4 8 1
0 8 6
1 0 3
2 2 1
4 4 2
2 3 1
2 4 1
0 2 3
3 Paso
Algoritmo de Cannon
|
|
|
.
|

\
|
|
|
|
.
|

\
|
|
|
|
.
|

\
|
2 0 3
4 8 1
0 8 6
4 4 2
1 0 3
2 2 1
1 2 3
1 2 4
3 0 2
4 Paso
|
|
|
.
|

\
|
|
|
|
.
|

\
|
|
|
|
.
|

\
|
6 8 9
5 8 13
6 8 8
4 4 2
1 0 3
2 2 1
1 2 3
1 2 4
3 0 2
5 Paso
Algoritmo de Cannon
|
|
|
.
|

\
|
|
|
|
.
|

\
|
|
|
|
.
|

\
|
6 8 9
5 8 13
6 8 8
2 2 1
4 4 2
1 0 3
3 1 2
4 1 2
2 3 0
4 Paso
|
|
|
.
|

\
|
|
|
|
.
|

\
|
|
|
|
.
|

\
|
12 10 11
21 12 17
8 8 8
2 2 1
4 4 2
1 0 3
3 1 2
4 1 2
2 3 0
5 Paso
Algoritmo de Cannon
Anlisis de comunicaciones
Los desplazamientos iniciales requieren un
mximo de n-1 desplazamientos, y despus
se realizarn n-1 desplazamientos (uno en
cada paso) por lo que tenemos el siguiente
tiempo de comunicaciones:


Esto nos da O (n)
) )( 1 ( 2
data startup com
t t n t + =
Algoritmo de Cannon
En el caso de que estemos trabajando con
submatrices, tenemos s-1 desplazamientos
iniciales como mximo, y s-1
desplazamientos despus, cada uno de ellos
de m
2
elementos:


Lo que nos da O (sm
2
) = O (nm)

) )( 1 ( 2
2
data startup com
t m t s t + =
Algoritmo de Cannon
Anlisis de computacin
Cada procesador realiza n multiplicaciones y n-1
sumas para calcular su elemento de C, lo que
implica O (n).
Usando submatrices, cada procesador realiza m
3

multiplicaciones y m
3
sumas por cada
multiplicacin, y m
2
sumas por cada suma, y
realiza s multiplicaciones y s-1 sumas:


Lo que da O (sm
3
) = O (nm
2
)

2 3
) 1 ( 2 m s m s t
comp
+ =
Multiplicacin de matrices
Nociones bsicas sobre matrices
Algoritmo secuencial
Algoritmo paralelo
Submatrices
Implementacin directa
Implementacin con submatrices
Implementacin recursiva
Algoritmo de Cannon
Array sistlico
Algoritmo de Fox
Algoritmo DNS
Mapeo de matrices en procesadores
Array sistlico
La informacin es bombeada al array
sistlico en varias direcciones a intervalos
regulares.
Concretamente, la informacin es bombeada
desde la izquierda hacia la derecha y desde
arriba hacia abajo.
Los datos se encuentran en los nodos, y
entonces se multiplican y suman al valor
calculado anteriormente.
Array sistlico
Array sistlico
Ej:
|
|
|
.
|

\
|
=
|
|
|
.
|

\
|
|
|
|
.
|

\
|
12 10 11
21 12 17
8 8 8
4 2 3
1 4 1
2 0 2
*
1 2 3
4 1 2
0 2 3
0 0 0 . . 3 2 1
0 0 0 . 2 1 4
0 0 0 3 2 0
. . 2
. 0 1
2 4 3
1 2
4
0 0 0 . 3 2 1
0 0 0 2 1 4
0 0 2 * 3 2 0
. 0 1
2 4 3
1 2
4
Array sistlico
0 0 0 3 2 1
0 0 2 * 2 1 4
0 0 * 3 1 * 2 6 0
2 4 3
1 2
4
+
0 0 2 * 3 2 1
0 0 * 2 1 * 1 4 4
2 * 3 4 * 2 0 3 * 0 8
1 2
4
+
+ +
Array sistlico
0 0 * 3 1 * 2 6 1
2 * 2 4 * 1 0 3 * 4 5
1 * 2 6 2 * 0 8 8
4
+
+ +
+ +
2 * 3 4 * 2 0 3 * 1 8
1 * 1 4 2 * 4 4 17
4 * 0 8 8 8
+ +
+ +
+
Array sistlico
1 * 2 6 2 * 1 8 11
4 * 4 5 12 17
8 8 8
+ +
+
4 * 1 8 10 11
21 12 17
8 8 8
+
12 10 11
21 12 17
8 8 8
Array sistlico
Anlisis de comunicaciones
Se realizan n desplazamientos para que la
ltima fila y ultima columna entren, n1 para
que entre el ltimo elemento y n-1 para que
llegue al final, por lo que tenemos el siguiente
tiempo de comunicaciones:


Esto nos da O (n)

) ( 2 3 ) 1 ( ) 1 ( tw ts n n n n t
com
+ = + + =
Array sistlico
Anlisis de computacin
Cada procesador realiza n
multiplicaciones y n-1 sumas, lo que
nos da un orden de complejidad O (n)
Array sistlico
Multiplicacin de una matriz por un
vector:
Esta tcnica puede utilizarse
directamente para multiplicar una matriz
por un vector usando simplemente un
array de 1xn o de nx1, segn sea el
vector.
Multiplicacin de matrices
Nociones bsicas sobre matrices
Algoritmo secuencial
Algoritmo paralelo
Submatrices
Implementacin directa
Implementacin con submatrices
Implementacin recursiva
Algoritmo de Cannon
Array sistlico
Algoritmo de Fox
Algoritmo DNS
Mapeo de matrices en procesadores
Algoritmo de Fox
Matrices de tamao n x n
Se particionan a travs de p procesadores.

Hace uso de un broadcast de uno a muchos de
los bloques de la matriz A en filas de
procesadores, y de un paso de bloques de la
matriz B a travs de las columnas de los
procesadores en forma ascendente de
procesador en procesador.

Inicialmente se selecciona cada bloque A
i,j
de la
diagonal para un broadcast.
Algoritmo de Fox
Repetir veces
1. Broadcast del bloque seleccionado de A a travs de los
procesadores de la fila en que est ubicado el
bloque.
2. Multiplicar el bloque recibido de A como resultado del
broadcast por el bloque residente de B (el procesador
que inicia el broadcast ya tiene el bloque requerido de
A).
3. Enviar el bloque de B al procesador directamente
precedente en la columna del procesador (con
enrollamiento), y recibir un bloque de refresco de B
desde el procesador posterior.
4. Seleccionar el bloque de A para el broadcast de la
siguiente fila. Si se ha realizado un broadcast de Ai,j en
la etapa actual, entonces seleccionar para el prximo
broadcast A [i,(j+1)mod ].

p
p
p
Algoritmo de Fox
Pasos de Comunicacin con 16 procesadores
Algoritmo de Fox
Tiempo de ejecucin paralelo sobre un
Hipercubo

Cada procesador gasta un tiempo de n
3
/p
en la computacin.
El tiempo para el broadcast de uno a todos
los bloques de A domina sobre el tiempo
para el cambio en pasos simples de los
bloques de B.
Algoritmo de Fox
Si la malla original de procesadores
encaja en un hipercubo, cada broadcast
puede ser ejecutado en un tiempo
p p n tw ts log ) / * (
2
+
Como esta operacin se repite veces,
el tiempo total de comunicacin es
p p n tw p ts log ) / * )( 2 / 1 (
2
+
p
Algoritmo de Fox
Y el tiempo de ejecucin paralelo
p p n tw p p ts p n Tp log ) / ( log * 2 / 1 ) / (
2 3
+ + =
Aunque el tiempo de ejecucin paralelo y la
escalabilidad de este algoritmo son inferiores
a los de los algoritmos simple y de Cannon,
el tiempo de ejecucin de este algoritmo
puede ser mejorado intercalando
computacin y comunicacin por pipelines.
Multiplicacin de matrices
Nociones bsicas sobre matrices
Algoritmo secuencial
Algoritmo paralelo
Submatrices
Implementacin directa
Implementacin con submatrices
Implementacin recursiva
Algoritmo de Cannon
Array sistlico
Algoritmo de Fox
Algoritmo DNS
Mapeo de matrices en procesadores
Algoritmo DNS
Debe su nombre a Dekel, Nassimi y
Sahni.

Algoritmo paralelo que puede consumir
n
3
procesadores y ejecuta la
multiplicacin de matrices en un tiempo
(log n) usando (n
3
/log n)
procesadores.
Algoritmo DNS
Algoritmo CREW PRAM sin concentrarse en
una red de interconexin particular.
n
3
procesadores.
Dos matrices n x n.
Procesadores colocados en un array lgico
tridimensional n x n x n.
A cada procesador se le asigna una
multiplicacin escalar.
Los procesadores se etiquetan de acuerdo
a su posicin en el array.
La multiplicacin A[i,k] x B[k,j] se asigna a
P
i,j,k
.
Algoritmo DNS
Despus de que cada procesador ejecute
una multiplicacin simple se suman los
contenidos de P
i,j,0
, P
i,j,1
,,P
i,j,n-1
para
obtener C[i,j].

La suma de todos los C[i,j] se puede llevar
a cabo simultneamente a lo largo de los n
pasos.
Algoritmo DNS
Tiempo de ejecucin
Toma un paso para multiplicar y los n
pasos para sumar, por tanto, emplea un
tiempo (log n)
Algoritmo DNS
Algoritmo paralelo usando un Hipercubo
El array lgico tridimensional se mapea en
un hipercubo con n
3
= w
3d
procesadores.
Los procesadores se pueden visualizar
como n planos de n x n procesadores cada
uno.
Cada plano corresponde a un valor
diferente de k.
Inicialmente, las matrices se distribuyen a
lo largo de los n
2
procesadores del plano
correspondiente a k=0 en la base del array
tridimensional de procesadores.
Inicialmente, el procesador P
i,j,0
almacena
A[i,j] y B[i,j].
Algoritmo DNS
1. Cada columna de A se mueve a
diferentes planos, de tal forma que la
columna j ocupa la misma posicin en el
plano correspondiente a k = j (igual que
se hizo inicialmente con k = 0)

2. Todas las columnas de A se replican n
veces en sus respectivos planos por
medio de un broadcast a lo largo del eje
j. Como resultado, cada uno de los n
procesadores, P
i,0,j
, P
i,1,j
,,P
i,n-1,j
recibe
una copia de A[i,j] desde P
i,j,j
.
Algoritmo DNS
Despus de esto, cada columna vertical
de procesadores P
i,j,*
tiene la fila A[i,*]. En
concreto, el procesador P
i,j,k
tiene A[i,k].

Para la matriz B, los pasos de
comunicacin son similares, pero las
reglas de i y j en los procesadores
descritos se permutan.

Algoritmo DNS
Despus de estos pasos de comunicacin,
se multiplican A[i,k] y B[k,j] en P
i,j,k
.

Cada elemento C[i,j] de la matriz producto
se obtiene por acumulacin de nodos
simples a travs del eje k.

Durante este paso, el procesador P
i,j,0

acumula el resultado de las
multiplicaciones de los procesadores P
i,j,1
,
P
i,j,2
,,P
i,j,n-1
.
Algoritmo DNS
Pasos de comunicacin principales
1. Mover las columnas de A y las filas de B
a sus respectivos planos.
2. Ejecutar un broadcast a lo largo del eje j
para A y a lo largo del eje i para B.
3. Acumular los nodos simples a lo largo del
eje k.

Todas estas operaciones se ejecutan en
subcubos del hipercubo de n
procesadores.
Algoritmo DNS
Patrn de comunicacin para distribuir los
elementos de A a lo largo de los procesadores.
Algoritmo DNS
Algoritmo DNS
Tiempo de ejecucin
El tiempo de ejecucin paralelo usando el
algoritmo DNS sobre un Hipercubo con n
3

procesadores es de (log n).
Algoritmo DNS
CREW PRAM Vs. Hipercubo
En CREW PRAM la columna vertical de
procesadores, P
i,j,*
, computa el producto
puntual de la fila A[i,*] y la columna B[*,j].

No se necesita ningn paso de movimiento
de datos porque en CREW PRAM cada
procesador puede acceder a cualquier
localizacin en tiempo constante.
Algoritmo DNS
CREW PRAM Vs. Hipercubo
En un Hipercubo, las filas de A y las
columnas de B deben ser movidas
apropiadamente para que cada columna
vertical del procesador P
i,j,*
tenga la fila
A[i,*] y la columna B[*,j].

El procesador P
i,j,k
debera tener A[i,k] y
B[k,j].
Algoritmo DNS
Algoritmo DNS con menos de n
3
procesadores

El algoritmo DNS no es de coste optimo para n
3

procesadores, su tiempo de procesador es
(n
3
log n) que excede de la complejidad
secuencial, (n
3
).
Algoritmo DNS
Nmero de procesadores p = q
3
para algn q < n.

Las dos matrices se particionan en bloques de
tamao (n/q) x (n/q). Es decir, cada matriz se
considera un array cuadrado de bloques de
tamao q x q.

La diferencia es que ahora operamos sobre
bloques en vez de sobre elementos individuales.

Como 1 q n, el nmero de procesadores
puede variar entre 1 y n
3
.

Algoritmo DNS
Tiempo de ejecucin en un Hipercubo con
enrutamiento de corte completo

El primer paso de comunicacin uno a uno se
ejecuta en A y en B y toma un tiempo para cada
matriz de ts + tw (n/q)
2
+ th log q.

El segundo paso es un broadcast de uno a todos
que se ejecuta en A y en B y toma un tiempo
para cada matriz de ts log q + tw (n/q)
2
log q.
Algoritmo DNS
La acumulacin de nodo simple final se
ejecuta una sola vez (para la matriz C) y
toma un tiempo

ts + log q + tw (n/q)
2
log q.

Algoritmo DNS
Asumiendo que cada par multiplicacin-suma
toma una unidad de tiempo, la multiplicacin
de submatrices de tamao (n/q) x (n/q) toma
un tiempo de (n/q)3.

Se puede ignorar el tiempo de comunicacin
para el primer paso de comunicacin uno a
uno y el tiempo de computacin para la suma
en la fase de acumulacin final.
Algoritmo DNS
Las expresiones aproximadas para el tiempo de
ejecucin paralelo es

p p n tw p p ts n
Coste
p p n tw p ts p n Tp
p q Como
q q n tw q ts q n Tp
log * * * log * *
log ) / ( * log * ) / (
:
log ) / ( * * 3 log * * 3 ) / (
3 / 1 2 3
3 / 2 2 3
3 / 1
2 3
+ +
+ + =
=
+ + ~
El sistema paralelo es de coste ptimo para
n
3
= (p log p) para p = (n
3
/ log n)
Algoritmo DNS
Tiempo de ejecucin sobre una malla
3D con enrutamiento de corte completo

El algoritmo DNS no es adecuado para
una malla bidimensional, ya que el
algoritmo mapea naturalmente sobre una
malla tridimensional de procesadores y
una malla tridimensional no se puede
ajustar a una malla bidimensional sin
congestin ni dilatacin excesivas.
Algoritmo DNS
Sobre una malla tridimensional, el algoritmo de
hipercubo se puede implementar sin
modificaciones.

Solo hay un cambio en la ecuacin de la
expresin del tiempo de ejecucin paralelo, que
es la suma del termino 3*th*p
1/3
.

Es decir, el tiempo de ejecucin paralelo es
3 / 1 3 / 2 2 3
* * 3 log * ) / ( * log * ) / ( p th p p n tw p ts p n Tp + + + =
Multiplicacin de matrices
Nociones bsicas sobre matrices
Algoritmo secuencial
Algoritmo paralelo
Submatrices
Implementacin directa
Implementacin con submatrices
Implementacin recursiva
Algoritmo de Cannon
Array sistlico
Algoritmo de Fox
Algoritmo DNS
Mapeo de matrices en procesadores
Mapeo de matrices en
procesadores
Particionamiento rayado

Particionamiento de tablero de damas
Mapeo de matrices en
procesadores
Particionamiento rayado

Particionamiento de tablero de damas
Particionamiento rayado
Se divide la matriz en grupos de filas o
columnas completas y a cada procesador se
le asigna un grupo.

Se llama uniforme si cada grupo contiene el
mismo nmero de filas o columnas.

Se llama rayado de bloque si a cada
procesador se le asignan filas o columnas
contiguas.
Particionamiento rayado
Se llama rayado cclico si las filas o
columnas se distribuyen secuencialmente a
travs de los procesadores de forma cclica.

Se llama rayado cclico de bloque si la
matriz se divide en bloques de q filas (q <
n/p) y los bloques se distribuyen en los
procesadores de forma cclica.
Mapeo de matrices en
procesadores
Particionamiento rayado

Particionamiento de tablero de damas
Particionamiento
de tablero de damas
La matriz se divide en bloques o submatrices
cuadradas o rectangulares ms pequeas y
se distribuyen a travs de los procesadores.

Divide las filas y columnas de la matriz para
que a ningn procesador se le asigne una fila
o columna completa.
Particionamiento
de tablero de damas
Se llama particionamiento de tablero de
damas uniforme si todas las submatrices
son de igual tamao.

Puede ser de bloque, cclico o cclico de
bloque.

En el particionamiento cclico mapeamos
las filas en los procesadores de forma cclica
y despus las columnas o viceversa.
Particionamiento
de tablero de damas
En el particionamiento cclico de bloque
dividimos la matriz en q
2
p bloques y
mapeamos esos bloques de tamao q x q de
forma cclica.

Una matriz cuadrada paticionada por tablero
de damas se mapea naturalmente en una
malla bidimensional de procesadores.
Particionamiento rayado
Vs.
de tablero de damas
El nivel ms bajo de granularidad en el de
tablero de damas es un elemento de matriz
por procesador.

El de tablero de damas puede explotar ms
la concurrencia (siempre que el algoritmo
paralelo lo permita) porque la computacin se
puede dividir en ms procesadores que el de
rayado.

También podría gustarte