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 cij de la matriz
resultante se calcula como:

cij k 0 aik bkj


l 1

Nociones bsicas sobre matrices


Ej:

c11 1*1 2 * 2 5
1 2
5 3 11

1 1 3

4 2 8
0 2 *
2
1
4
8 5 18
2 3

Tambin

se puede multiplicar una


matriz por una constante multiplicando
todos los elementos por dicha
constante

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]
}
}
}
n3 multiplicaciones y n3 sumas O (n3)

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 n2 procesadores O (n)
Estas implementaciones son ptimas en coste,
ya que O (n3) = n x O (n2) = n2 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

n2 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 n2 procesadores recibe una fila
de A y una columna de B, y devuelve un
elemento:
tcom n 2 (t startup 2nt data ) n 2 (t startup t data )
n 2 ( 2t startup (2n 1)t data )

Mediante

un broadcast de las dos matrices


podemos ahorrar tiempo, por ejemplo en un bus
tenemos:
tcom (t startup n 2t data ) n 2 (t startup t data )

Implementacin directa
Anlisis

de computacin
Cada procesador realiza n multiplicaciones y
n sumas, por lo que tenemos:

tcomp 2n
Usando

una estructura de rbol y n3


procesadores podemos obtener un tiempo de
computacin de O (log n)

Implementacin directa
Clculo

de c00 para matrices de 4x4 y clculos


en estructura de rbol:
a00 b00 a01 b10 a02 b20 a03 b30

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 s2 procesadores recibe
una fila de submatrices de A y una
columna de submatrices de B, y
devuelve una submatriz:
tcom s 2 (t startup 2 sm 2t data ) s 2 (t startup m 2t data )
s 2 (t startup 2nmt data ) s 2 (t startup m 2t data )

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 m3
multiplicaciones y m3 sumas y una suma
m2 sumas, por lo que en resumen, el
tiempo de computacin es:

tcomp s( 2m 3 m 2 ) O( sm 3 ) O(nm 2 )

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 Pij tiene los elementos
aij y bij.

Algoritmo de Cannon
2. La fila i-sima de A se desplaza i
posiciones a la izquierda, y la columna jsima 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 aij+i y bi+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:

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

Paso 1
3 2 0

2 1 4
3 2 1

Paso 2
2 0 2

1 4 1
3 2 4

3 2 0

1 4 2
1 3 2

2 4 4

1 2 2
3 0 1

Paso 3
3 2 0

1 4 2
1 3 2

2 4 4

1 2 2
3 0 1

6 8 0

1 8 4
3 0 2

Algoritmo de Cannon
Paso 4
2 0 3

4 2 1
3 2 1

1 2 2

3 0 1
2 4 4

6 8 0

1 8 4
3 0 2

1 2 2

3 0 1
2 4 4

8 8 6

13 8 5
9 8 6

Paso 5
2 0 3

4 2 1
3 2 1

Algoritmo de Cannon
Paso 4
0 3 2

2 1 4
2 1 3

3 0 1

2 4 4
1 2 2

8 8 6

13 8 5
9 8 6

Paso 5
0 3 2

2 1 4
2 1 3

3 0 1

2 4 4
1 2 2

8 8 8

17 12 21
11 10 12

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:

tcom 2(n 1)(t startup t data )


Esto nos da O (n)

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 m2 elementos:

tcom 2( s 1)(t startup m t data )


2

Lo que nos da O (sm2) = O (nm)

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
m2 sumas por cada suma, y realiza s multiplicaciones y
s-1 sumas:

3 3) = O (nm2)2
Lo
t quedas 2Om(sm
( s 1)m
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:

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

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

0 0 0

Array sistlico

Array sistlico

Array sistlico

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:

tcom n (n 1) (n 1) 3n 2(ts tw)


Esto nos da O (n)

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 Ai,j de la


diagonal para un broadcast.

Algoritmo de Fox
Repetir
1.

2.

3.

4.

veces

Broadcast del bloque seleccionado de A a travs de los


p
procesadores de la fila en que est ubicado el
bloque.
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).
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.
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 ].

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 n3/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

(ts tw * n / p ) log
2

Como esta operacin se repite

p
p

el tiempo total de comunicacin


es
2

(1 / 2)(ts p tw * n /

veces,

p ) log p

Algoritmo de Fox
Y el tiempo de ejecucin paralelo

Tp (n / p ) 1 / 2 * ts p log p tw(n / p ) log p


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


n3
procesadores
y
ejecuta
la
multiplicacin de matrices en un tiempo
(log
n)
usando
(n3/log
n)
procesadores.

Algoritmo DNS
Algoritmo

CREW PRAM sin concentrarse en


una red de interconexin particular.
n3 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
Pi,j,k.

Algoritmo DNS
Despus de que cada procesador ejecute

una multiplicacin simple se suman los


contenidos de Pi,j,0, Pi,j,1,,Pi,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 n3 = w3d 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 n2 procesadores del plano
correspondiente a k=0 en la base del array
tridimensional de procesadores.
Inicialmente, el procesador Pi,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, Pi,0,j, Pi,1,j,,Pi,n-1,j recibe una
copia de A[i,j] desde Pi,j,j.

Algoritmo DNS
Despus de esto, cada columna vertical

de procesadores Pi,j,* tiene la fila A[i,*]. En


concreto, el procesador Pi,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 Pi,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 Pi,j,1,
Pi,j,2,,Pi,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 n3


procesadores es de (log n).

Algoritmo DNS
CREW

PRAM Vs. Hipercubo

En CREW PRAM la columna vertical de

procesadores, Pi,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 Pi,j,* tenga la fila
A[i,*] y la columna B[*,j].

El procesador Pi,j,k debera tener A[i,k] y

B[k,j].

Algoritmo DNS
Algoritmo

DNS con menos de n3 procesadores

El algoritmo DNS no es de coste optimo para n 3

procesadores, su tiempo de procesador es


(n3 log n) que excede de la complejidad
secuencial, (n3).

Algoritmo DNS
Nmero de procesadores p = q3 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 n3.

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

Tp (n / q ) 3 * ts * log q 3 * tw * (n / q ) log q
3

Como : q p1/ 3
Tp (n 3 / p) ts * log p tw * (n 2 / p 2 / 3 ) log p
Coste
n 3 ts * p * log p tw * n 2 * p1/ 3 * log p
El sistema paralelo es de coste ptimo para
n3 = (p log p) para p = (n3 / 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
modificaciones.

puede

implementar

sin

Solo hay un cambio en la ecuacin de la

expresin del tiempo de ejecucin paralelo, que


es la suma del termino 3*th*p1/3.
Es decir, el tiempo de ejecucin paralelo es

Tp (n 3 / p) ts * log p tw * (n 2 / p 2 / 3 ) * log p 3 * th * p1/ 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

Mapeo de matrices en
procesadores
Particionamiento

rayado

Particionamiento

de tablero de damas

Mapeo de matrices en
procesadores
Particionamiento
Particionamiento

rayado

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 q2p 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