t7 alg mult matr

87
Multiplicación de Multiplicación de matrices matrices Manuel Sánchez Cuenca Manolo Pérez Hernández

Upload: fcokraken

Post on 24-May-2015

894 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: T7 Alg Mult Matr

Multiplicación de matricesMultiplicación de matrices

Manuel Sánchez Cuenca

Manolo Pérez Hernández

Page 2: T7 Alg Mult Matr

Multiplicación de matricesMultiplicación de matrices Nociones básicas sobre matrices Algoritmo secuencial Algoritmo paralelo Submatrices Implementación directa Implementación con submatrices Implementación recursiva Algoritmo de Cannon Array sistólico Algoritmo de Fox Algoritmo DNS Mapeo de matrices en procesadores

Page 3: T7 Alg Mult Matr

Multiplicación de matricesMultiplicación de matrices Nociones básicas sobre matrices Algoritmo secuencial Algoritmo paralelo Submatrices Implementación directa Implementación con submatrices Implementación recursiva Algoritmo de Cannon Array sistólico Algoritmo de Fox Algoritmo DNS Mapeo de matrices en procesadores

Page 4: T7 Alg Mult Matr

Nociones básicas sobre matricesNociones básicas sobre matrices

Array bidimensional de númerosMatriz n x m n filas y m columnas

Matriz 3 x 4:

1 3 2 2

2 4 6 3

2 7 4 5

Page 5: T7 Alg Mult Matr

Nociones básicas sobre matricesNociones básicas sobre matrices

Suma de matrices

Se suman los elementos de la misma posición 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

Page 6: T7 Alg Mult Matr

Nociones básicas sobre matricesNociones básicas sobre matrices

Multiplicación 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:

1

0

l

k kjikij bac

Page 7: T7 Alg Mult Matr

Nociones básicas sobre matricesNociones básicas sobre matrices

Ej:

También se puede multiplicar una matriz por una constante multiplicando todos los elementos por dicha constante

1858

824

1135

412

311*

32

20

21

52*21*111 c

Page 8: T7 Alg Mult Matr

Nociones básicas sobre matricesNociones básicas sobre matrices

Multiplicación 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 multiplicación 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.

Page 9: T7 Alg Mult Matr

Multiplicación de matricesMultiplicación de matrices Nociones básicas sobre matrices Algoritmo secuencial Algoritmo paralelo Submatrices Implementación directa Implementación con submatrices Implementación recursiva Algoritmo de Cannon Array sistólico Algoritmo de Fox Algoritmo DNS Mapeo de matrices en procesadores

Page 10: T7 Alg Mult Matr

Algoritmo secuencialAlgoritmo 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)

Page 11: T7 Alg Mult Matr

Multiplicación de matricesMultiplicación de matrices Nociones básicas sobre matrices Algoritmo secuencial Algoritmo paralelo Submatrices Implementación directa Implementación con submatrices Implementación recursiva Algoritmo de Cannon Array sistólico Algoritmo de Fox Algoritmo DNS Mapeo de matrices en procesadores

Page 12: T7 Alg Mult Matr

Algoritmo paraleloAlgoritmo paralelo

Podemos basarnos en el código secuencial, ya que los dos bucles externos son independientes en cada iteración.

Con n procesadores podemos obtener O (n2) Con n2 procesadores O (n) Estas implementaciones son óptimas en coste,

ya que O (n3) = n x O (n2) = n2 x O (n) Estas cálculos no incluyen el coste de las

comunicaciones.

Page 13: T7 Alg Mult Matr

Multiplicación de matricesMultiplicación de matrices Nociones básicas sobre matrices Algoritmo secuencial Algoritmo paralelo Submatrices Implementación directa Implementación con submatrices Implementación recursiva Algoritmo de Cannon Array sistólico Algoritmo de Fox Algoritmo DNS Mapeo de matrices en procesadores

Page 14: T7 Alg Mult Matr

SubmatricesSubmatrices

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 multiplicación de matrices y de suma de matrices en lugar de la multiplicación y la suma de números implementación recursiva.

Page 15: T7 Alg Mult Matr

Multiplicación de matricesMultiplicación de matrices Nociones básicas sobre matrices Algoritmo secuencial Algoritmo paralelo Submatrices Implementación directa Implementación con submatrices Implementación recursiva Algoritmo de Cannon Array sistólico Algoritmo de Fox Algoritmo DNS Mapeo de matrices en procesadores

Page 16: T7 Alg Mult Matr

Implementación directaImplementación 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.

Page 17: T7 Alg Mult Matr

Implementación directaImplementación directa

Análisis de comunicacionesCada uno de los n2 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:

))12(2(

)()2(2

22

datastartup

datastartupdatastartupcom

tntn

ttnnttnt

)()( 22datastartupdatastartupcom ttntntt

Page 18: T7 Alg Mult Matr

Implementación directaImplementación directa

Análisis de computación

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

Usando una estructura de árbol y n3

procesadores podemos obtener un tiempo de computación de O (log n)

ntcomp 2

Page 19: T7 Alg Mult Matr

Implementación directaImplementación directa

Cálculo de c00 para matrices de 4x4 y cálculos en estructura de árbol:a00 b00 a01 b10 a02 b20 a03 b30

x x x x

+ +

+

Page 20: T7 Alg Mult Matr

Multiplicación de matricesMultiplicación de matrices Nociones básicas sobre matrices Algoritmo secuencial Algoritmo paralelo Submatrices Implementación directa Implementación con submatrices Implementación recursiva Algoritmo de Cannon Array sistólico Algoritmo de Fox Algoritmo DNS Mapeo de matrices en procesadores

Page 21: T7 Alg Mult Matr

Implementación con submatricesImplementación con submatrices

En cualquiera de los métodos se pueden sustituir los elementos de la matriz por submatrices para reducir el número de procesadores

Con submatrices de m x m y s = n/m es como si tuviésemos matrices de s x s con submatrices de m x m en lugar de elementos simples.

Page 22: T7 Alg Mult Matr

Implementación con submatricesImplementación con submatrices

Análisis 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:

)()2(

)()2(222

2222

datastartupdatastartup

datastartupdatastartupcom

tmtsnmtts

tmtstsmtst

Page 23: T7 Alg Mult Matr

Implementación con submatricesImplementación con submatrices

Al aumentar el tamaño de las submatrices (y disminuir el número de procesadores) el tiempo de transmitir un mensaje aumenta pero el número de mensajes disminuye, por lo que es posible encontrar un valor óptimo del tamaño de la submatriz.

Además, también es posible hacer un broadcast de las dos matrices completas.

Page 24: T7 Alg Mult Matr

Implementación con submatricesImplementación con submatrices

Análisis de computación

Cada procesador realiza s multiplicaciones y s sumas de submatrices, una multiplicación de submatrices necesita m3

multiplicaciones y m3 sumas y una suma m2

sumas, por lo que en resumen, el tiempo de computación es:

)()(2 2323 nmOsmO)mms(tcomp

Page 25: T7 Alg Mult Matr

Multiplicación de matricesMultiplicación de matrices Nociones básicas sobre matrices Algoritmo secuencial Algoritmo paralelo Submatrices Implementación directa Implementación con submatrices Implementación recursiva Algoritmo de Cannon Array sistólico Algoritmo de Fox Algoritmo DNS Mapeo de matrices en procesadores

Page 26: T7 Alg Mult Matr

Implementación recursivaImplementación recursiva

La división en submatrices sugiere una estrategia recursiva de divide y vencerás, 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 recursión, los datos transmitidos son más pequeños y están más localizados.

Page 27: T7 Alg Mult Matr

Multiplicación de matricesMultiplicación de matrices Nociones básicas sobre matrices Algoritmo secuencial Algoritmo paralelo Submatrices Implementación directa Implementación con submatrices Implementación recursiva Algoritmo de Cannon Array sistólico Algoritmo de Fox Algoritmo DNS Mapeo de matrices en procesadores

Page 28: T7 Alg Mult Matr

Algoritmo de CannonAlgoritmo de Cannon

Este algoritmo y el siguiente son especialmente apropiados para sistemas de paso de mensajes, y la arquitectura de paso de mensajes que más se ajusta a las matrices es una malla. Realmente, aunque la arquitectura física no sea una malla, lógicamente cualquier arquitectura puede representarse como una malla.

Page 29: T7 Alg Mult Matr

Algoritmo de CannonAlgoritmo 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.

Page 30: T7 Alg Mult Matr

Algoritmo de CannonAlgoritmo 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 Pij contenga los elementos aij+i y bi+jj, que son necesarios para calcular cij.

Page 31: T7 Alg Mult Matr

Algoritmo de CannonAlgoritmo de Cannon

3. Cada procesador multiplica su par de elementos.4. Cada fila de A se desplaza una posición a la izquierda, y cada columna de B una posición 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

Page 32: T7 Alg Mult Matr

Algoritmo de CannonAlgoritmo de Cannon

Ej:

121011

211217

888

423

141

202

*

123

412

023

423

141

202

123

412

023

1Paso

103

221

442

231

241

023

2Paso

203

481

086

103

221

442

231

241

023

3Paso

Page 33: T7 Alg Mult Matr

Algoritmo de CannonAlgoritmo de Cannon

203

481

086

442

103

221

123

124

302

4Paso

689

5813

688

442

103

221

123

124

302

5Paso

Page 34: T7 Alg Mult Matr

Algoritmo de CannonAlgoritmo de Cannon

689

5813

688

221

442

103

312

412

230

4Paso

121011

211217

888

221

442

103

312

412

230

5Paso

Page 35: T7 Alg Mult Matr

Algoritmo de CannonAlgoritmo de Cannon

Análisis de comunicacionesLos desplazamientos iniciales requieren un máximo de n-1 desplazamientos, y después se realizarán n-1 desplazamientos (uno en cada paso) por lo que tenemos el siguiente tiempo de comunicaciones:

Esto nos da O (n)

))(1(2 datastartupcom ttnt

Page 36: T7 Alg Mult Matr

Algoritmo de CannonAlgoritmo de Cannon

En el caso de que estemos trabajando con submatrices, tenemos s-1 desplazamientos iniciales como máximo, y s-1 desplazamientos después, cada uno de ellos de m2 elementos:

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

))(1(2 2datastartupcom tmtst

Page 37: T7 Alg Mult Matr

Algoritmo de CannonAlgoritmo de Cannon

Análisis de computaciónCada procesador realiza n multiplicaciones y n-1 sumas para calcular su elemento de C, lo que implica O (n).Usando submatrices, cada procesador realiza m3 multiplicaciones y m3 sumas por cada multiplicación, y m2 sumas por cada suma, y realiza s multiplicaciones y s-1 sumas:

Lo que da O (sm3) = O (nm2)23 )1(2 msmstcomp

Page 38: T7 Alg Mult Matr

Multiplicación de matricesMultiplicación de matrices Nociones básicas sobre matrices Algoritmo secuencial Algoritmo paralelo Submatrices Implementación directa Implementación con submatrices Implementación recursiva Algoritmo de Cannon Array sistólico Algoritmo de Fox Algoritmo DNS Mapeo de matrices en procesadores

Page 39: T7 Alg Mult Matr

Array sistólicoArray sistólico

La información es bombeada al array sistólico en varias direcciones a intervalos regulares.

Concretamente, la información 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.

Page 40: T7 Alg Mult Matr

Array sistólicoArray sistólico

Page 41: T7 Alg Mult Matr

Array sistólicoArray sistólico

Ej:

121011

211217

888

423

141

202

*

123

412

023

000..321

000.214

000320

..2

.01

243

12

4

Page 42: T7 Alg Mult Matr

Array sistólicoArray sistólico

Page 43: T7 Alg Mult Matr

Array sistólicoArray sistólico

Page 44: T7 Alg Mult Matr

Array sistólicoArray sistólico

Page 45: T7 Alg Mult Matr

Array sistólicoArray sistólico

Análisis de comunicacionesSe realizan n desplazamientos para que la última fila y ultima columna entren, n–1 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)

)(23)1()1( twtsnnnntcom

Page 46: T7 Alg Mult Matr

Array sistólicoArray sistólico

Análisis de computación

Cada procesador realiza n multiplicaciones y n-1 sumas, lo que nos da un orden de complejidad O (n)

Page 47: T7 Alg Mult Matr

Array sistólicoArray sistólico

Multiplicación de una matriz por un vector:

Esta técnica puede utilizarse directamente para multiplicar una matriz por un vector usando simplemente un array de 1xn o de nx1, según sea el vector.

Page 48: T7 Alg Mult Matr

Multiplicación de matricesMultiplicación de matrices Nociones básicas sobre matrices Algoritmo secuencial Algoritmo paralelo Submatrices Implementación directa Implementación con submatrices Implementación recursiva Algoritmo de Cannon Array sistólico Algoritmo de Fox Algoritmo DNS Mapeo de matrices en procesadores

Page 49: T7 Alg Mult Matr

Algoritmo de FoxAlgoritmo de Fox Matrices de tamaño n x n Se particionan a través 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 través 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.

Page 50: T7 Alg Mult Matr

Algoritmo de FoxAlgoritmo de FoxRepetir veces

1. Broadcast del bloque seleccionado de A a través 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 próximo broadcast A [i,(j+1)mod ].

p

p

p

Page 51: T7 Alg Mult Matr

Algoritmo de FoxAlgoritmo de Fox Pasos de Comunicación con 16 procesadores

Page 52: T7 Alg Mult Matr

Algoritmo de FoxAlgoritmo de Fox

Tiempo de ejecución paralelo sobre un Hipercubo

– Cada procesador gasta un tiempo de n3/p en la computación.

– 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.

Page 53: T7 Alg Mult Matr

Algoritmo de FoxAlgoritmo de Fox

– Si la malla original de procesadores encaja en un hipercubo, cada broadcast puede ser ejecutado en un tiempo

ppntwts log)/*( 2

– Como esta operación se repite veces,

el tiempo total de comunicación esppntwpts log)/*)(2/1( 2

p

Page 54: T7 Alg Mult Matr

Algoritmo de FoxAlgoritmo de Fox– Y el tiempo de ejecución paralelo

ppntwpptspnTp log)/(log*2/1)/( 23

Aunque el tiempo de ejecución paralelo y la escalabilidad de este algoritmo son inferiores a los de los algoritmos simple y de Cannon, el tiempo de ejecución de este algoritmo puede ser mejorado intercalando computación y comunicación por pipelines.

Page 55: T7 Alg Mult Matr

Multiplicación de matricesMultiplicación de matrices Nociones básicas sobre matrices Algoritmo secuencial Algoritmo paralelo Submatrices Implementación directa Implementación con submatrices Implementación recursiva Algoritmo de Cannon Array sistólico Algoritmo de Fox Algoritmo DNS Mapeo de matrices en procesadores

Page 56: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS

Debe su nombre a Dekel, Nassimi y Sahni.

Algoritmo paralelo que puede consumir n3 procesadores y ejecuta la multiplicación de matrices en un tiempo Θ(log n) usando Ω(n3/log n) procesadores.

Page 57: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS Algoritmo CREW PRAM sin concentrarse en

una red de interconexión particular.– n3 procesadores.– Dos matrices n x n.– Procesadores colocados en un array lógico

tridimensional n x n x n.– A cada procesador se le asigna una

multiplicación escalar.– Los procesadores se etiquetan de acuerdo

a su posición en el array.– La multiplicación A[i,k] x B[k,j] se asigna a

Pi,j,k.

Page 58: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS

– Después de que cada procesador ejecute una multiplicación 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 simultáneamente a lo largo de los n pasos.

Page 59: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS

Tiempo de ejecución– Toma un paso para multiplicar y los n

pasos para sumar, por tanto, emplea un tiempo Θ(log n)

Page 60: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS Algoritmo paralelo usando un Hipercubo

– El array lógico 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].

Page 61: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS

1. Cada columna de A se mueve a diferentes planos, de tal forma que la columna j ocupa la misma posición 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.

Page 62: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS

– Después 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 comunicación son similares, pero las reglas de i y j en los procesadores descritos se permutan.

Page 63: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS

– Después de estos pasos de comunicación, 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 acumulación de nodos simples a través del eje k.

– Durante este paso, el procesador Pi,j,0 acumula el resultado de las multiplicaciones de los procesadores Pi,j,1, Pi,j,2,…,Pi,j,n-1.

Page 64: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS

Pasos de comunicación principales1. 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.

Page 65: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS Patrón de comunicación para distribuir los

elementos de A a lo largo de los procesadores.

Page 66: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS

Page 67: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS

Tiempo de ejecución– El tiempo de ejecución paralelo usando el

algoritmo DNS sobre un Hipercubo con n3 procesadores es de Θ(log n).

Page 68: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo 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 ningún paso de movimiento de datos porque en CREW PRAM cada procesador puede acceder a cualquier localización en tiempo constante.

Page 69: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo 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 debería tener A[i,k] y B[k,j].

Page 70: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS

Algoritmo DNS con menos de n3 procesadores

– El algoritmo DNS no es de coste optimo para n3 procesadores, su tiempo de procesador es Θ(n3 log n) que excede de la complejidad secuencial, Θ(n3).

Page 71: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS– Número de procesadores p = q3 para algún q < n.

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

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

– Como 1 ≤ q ≤ n, el número de procesadores puede variar entre 1 y n3.

Page 72: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNSTiempo de ejecución en un Hipercubo con

enrutamiento de corte completo

– El primer paso de comunicación 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.

Page 73: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS

– La acumulación 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.

Page 74: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS

– Asumiendo que cada par multiplicación-suma toma una unidad de tiempo, la multiplicación de submatrices de tamaño (n/q) x (n/q) toma un tiempo de (n/q)3.

– Se puede ignorar el tiempo de comunicación para el primer paso de comunicación uno a uno y el tiempo de computación para la suma en la fase de acumulación final.

Page 75: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNSLas expresiones aproximadas para el tiempo de ejecución paralelo es

ppntwpptsn

Coste

ppntwptspnTp

pqComo

qqntwqtsqnTp

log***log**

log)/(*log*)/(

:

log)/(**3log**3)/(

3/123

3/223

3/1

23

El sistema paralelo es de coste óptimo para n3 = Ω(p log p) ó para p = Ο(n3 / log n)

Page 76: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS

Tiempo de ejecución 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 congestión ni dilatación excesivas.

Page 77: T7 Alg Mult Matr

Algoritmo DNSAlgoritmo DNS– Sobre una malla tridimensional, el algoritmo de

hipercubo se puede implementar sin modificaciones.

– Solo hay un cambio en la ecuación de la expresión del tiempo de ejecución paralelo, que es la suma del termino 3*th*p1/3.

– Es decir, el tiempo de ejecución paralelo es

3/13/223 **3log*)/(*log*)/( pthppntwptspnTp

Page 78: T7 Alg Mult Matr

Multiplicación de matricesMultiplicación de matrices Nociones básicas sobre matrices Algoritmo secuencial Algoritmo paralelo Submatrices Implementación directa Implementación con submatrices Implementación recursiva Algoritmo de Cannon Array sistólico Algoritmo de Fox Algoritmo DNS Mapeo de matrices en procesadores

Page 79: T7 Alg Mult Matr

Mapeo de matrices en Mapeo de matrices en procesadoresprocesadores

Particionamiento rayado

Particionamiento de tablero de damas

Page 80: T7 Alg Mult Matr

Mapeo de matrices en Mapeo de matrices en procesadoresprocesadores

Particionamiento rayado

Particionamiento de tablero de damas

Page 81: T7 Alg Mult Matr

Particionamiento rayadoParticionamiento 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 número de filas o columnas.

Se llama rayado de bloque si a cada procesador se le asignan filas o columnas contiguas.

Page 82: T7 Alg Mult Matr

Particionamiento rayadoParticionamiento rayado

Se llama rayado cíclico si las filas o columnas se distribuyen secuencialmente a través de los procesadores de forma cíclica.

Se llama rayado cíclico 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 cíclica.

Page 83: T7 Alg Mult Matr

Mapeo de matrices en Mapeo de matrices en procesadoresprocesadores

Particionamiento rayado

Particionamiento de tablero de damas

Page 84: T7 Alg Mult Matr

Particionamiento Particionamiento de tablero de damasde tablero de damas

La matriz se divide en bloques o submatrices cuadradas o rectangulares más pequeñas y se distribuyen a través de los procesadores.

Divide las filas y columnas de la matriz para que a ningún procesador se le asigne una fila o columna completa.

Page 85: T7 Alg Mult Matr

Particionamiento Particionamiento de tablero de damasde tablero de damas

Se llama particionamiento de tablero de damas uniforme si todas las submatrices son de igual tamaño.

Puede ser de bloque, cíclico o cíclico de bloque.

En el particionamiento cíclico mapeamos las filas en los procesadores de forma cíclica y después las columnas o viceversa.

Page 86: T7 Alg Mult Matr

Particionamiento Particionamiento de tablero de damasde tablero de damas

En el particionamiento cíclico de bloque dividimos la matriz en q2p bloques y mapeamos esos bloques de tamaño q x q de forma cíclica.

Una matriz cuadrada paticionada por tablero de damas se mapea naturalmente en una malla bidimensional de procesadores.

Page 87: T7 Alg Mult Matr

Particionamiento rayado Particionamiento rayado Vs. Vs.

de tablero de damasde tablero de damas

El nivel más bajo de granularidad en el de tablero de damas es un elemento de matriz por procesador.

El de tablero de damas puede explotar más la concurrencia (siempre que el algoritmo paralelo lo permita) porque la computación se puede dividir en más procesadores que el de rayado.