Implementación de Algoritmos de Multiplicación de Matrices
Densas utilizando hilos y memoria compartida
Integrantes:Germán Hüttemann
Marcelo Rodas
Resumen
• Motivación.• Descripción del Problema.• Descripción de la Implementación Secuencial.• Descripción de la Implementación 1-D.• Descripción de la Implementación 2-D.• Resultados Obtenidos.• Conclusiones.• Trabajos Futuros.
Motivación
• Multiplicación de Matrices (Ejemplo base).• Permite Analizar:
– Fundamentos de la Paralelización.– Resolución de problemas difíciles.
• Puesta en Práctica de la Teoría.
Descripción del Problema
• Multiplicación de Matrices.
A1,1 A1,2 … A1,N B1,1 B1,2 … B1,R C1,1 C1,2 … C1,R
A2,1 A2,2 … A2,Nx
B2,1 B2,2 … B2,R=
C2,1 C2,2 … C2,R
… … … … … … … … … … … …
AM,1 AM,2 … AM,N BN,1 BN,2 … BN,R CM,1 CM,2 … CM,R
Implementación Secuencial
• Costo: O(N3).desde i = fila_inicial hasta (fila_inicial + cantidad_filas)
desde j = colum_inicial hasta (colum_inicial + cantidad_columnas)
C[i,j] = 0
desde k = 1 hasta (cantidad_filas_de_A o cantidad_columnas_de_B)
C[i,j] = C[i,j] + A[i,k] * B[k,j]
fin-desde
fin-desde
fin-desde
Implementación 1-D
• Costo: O(N3/P).• Cantidad de Hilos: 4
A1,1 A1,2 A1,3 A1,4 B1,1 B1,2 B1,3 B1,4 P1 P1 P1 P1
A2,1 A2,2 A2,3 A2,4x
B2,1 B2,2 B2,3 B2,4=
P2 P2 P2 P2
A3,1 A3,2 A3,3 A3,4 B3,1 B3,2 B3,3 B3,4 P3 P3 P3 P3
A4,1 A4,2 A4,3 A4,4 B4,1 B4,2 B4,3 B4,4 P4 P4 P4 P4
A5,1 A5,2 A5,3 A5,4 P4 P4 P4 P4
Implementación 2-D
• Costo: O(N3/P).• Cantidad de Hilos: 4.
A1,1 A1,2 A1,3 A1,4 B1,1 B1,2 B1,3 B1,4 B1,5 C1 C1 C2 C2 C2
A2,1 A2,2 A2,3 A2,4XB2,1 B2,2 B2,3 B2,4 B2,5
=C1 C1 C2 C2 C2
A3,1 A3,2 A3,3 A3,4 B3,1 B3,2 B3,3 B3,4 B3,5 C3 C3 C4 C4 C4
A4,1 A4,2 A4,3 A4,4 B4,1 B4,2 B4,3 B4,4 B4,5 C3 C3 C4 C4 C4
A5,1 A5,2 A5,3 A5,4 C3 C3 C4 C4 C4
Resultados (1)Secuencial vs Concurrencia 1-D (4 hilos)
0
20000
40000
60000
80000
100000
120000
0 500 1000 1500 2000
Tamaño de Matriz
Tie
mp
o P
rom
edio
Tiempo (Secuencial) Tiempo (4 hilos)
Resultados (2)Secuencial vs Concurrencia 2-D (4 hilos)
0
20000
40000
60000
80000
100000
120000
0 500 1000 1500 2000
Tamaño de Matriz
Tie
mp
o P
rom
edio
Tiempo (Secuencial) Tiempo (4 hilos)
Resultados (3)Secuencial vs Concurrencia 1-D (9 hilos)
0
20000
40000
60000
80000
100000
120000
0 500 1000 1500 2000
Tamaño de Matriz
Tie
mp
o P
rom
edio
Tiempo (Secuencial) Tiempo (9 hilos)
Resultados (4)Secuencial vs Concurrencia 2-D (9 hilos)
0
20000
40000
60000
80000
100000
120000
0 500 1000 1500 2000
Tamaño de Matriz
Tie
mp
o P
rom
edio
Tiempo (Secuencial) Tiempo (9 hilos)
Resultados (5)Secuencial vs Concurrencia 1-D (16 hilos)
0
20000
40000
60000
80000
100000
120000
0 500 1000 1500 2000
Tamaño de Matriz
Tie
mp
o P
rom
edio
Tiempo (Secuencial) Tiempo (16 hilos)
Resultados (6)Secuencial vs Concurrencia 2-D (16 hilos)
0
20000
40000
60000
80000
100000
120000
0 500 1000 1500 2000
Tamaño de Matriz
Tie
mp
o P
rom
edio
Tiempo (Secuencial) Tiempo (16 hilos)
Resultados (7)Tiempo de Creación de Hilos en 1-D
0102030405060708090
0 2 4 6 8 10 12 14 16 18
Cantidad de Hilos
Tie
mp
o (
mse
g)
Tiempo de Creación (Prom)
Resultados (8)Tiempo de Creación de Hilos en 2-D
010
2030
4050
6070
8090
0 2 4 6 8 10 12 14 16 18
Cantidad de Hilos
Tie
mp
o (
mse
g)
Tiempo de Creación (Prom)
Resultados (8)Tiempo de Creación de un Hilo en 1-D
(Prom)
0
2
4
6
8
10
0 2 4 6 8 10 12 14 16 18Hilos Creados
Tie
mp
o d
e u
n h
ilo
(mse
g)
Tiempo de creación de un Hilo (Prom)
Resultados (9)Tiempo de Creación de un Hilo en 2-D
(Prom)
0
2
4
6
8
10
0 2 4 6 8 10 12 14 16 18
Hilos Creados
Tie
mp
o d
e u
n h
ilo
(mse
g)
Tiempo de creación de un Hilo (Prom)
Resultados (10)Aceleración del Algoritmo 1-D
0
2
4
6
8
10
0 200 400 600 800 1000 1200 1400 1600 1800Tamaño de matriz
Ace
lera
ció
n
Alg. 1-D (4 hilos) Alg. 1-D (9 hilos) Alg. 1-D (16 hilos)
Resultados (11)Aceleración del Algoritmo 2-D
0
2
4
6
8
10
0 200 400 600 800 1000 1200 1400 1600 1800Tamaño de matriz
Ace
lera
ció
n
Alg. 2-D (4 hilos) Alg. 2-D (9 hilos) Alg. 2-D (16 hilos)
Conclusiones
• Nivel de concurrencia está fuertemente ligado al hardware.
• Con el aumento de los hilos se aumenta la aceleración aproximadamente en la misma proporción.
Trabajo Futuro
• Encontrar hasta que punto el número de hilos creados sigue sin afectar significativamente al tiempo de ejecución del algoritmo.
• Plantear un método más eficiente para la asignación de filas y columnas sobrantes.
• Variedad de tamaños de matrices.• Administración razonable de la memoria
(matrices grandes)
GRACIAS POR LA ATENCIÓN¿Preguntas?