Multiplicación de matrices dispersas

Anuncio
Multiplicación de
matrices dispersas
Alumno: Irene Sánchez Linares
Algoritmos y Programación Paralela
Índice
Descripción del problema
Representación
Algoritmo secuencial
Esquemas algorítmicos
Elección del esquema
OpenMP
MPI
Estudio experimental
Algoritmos y Programación Paralela
Descripción del problema
Una matriz dispersa es una matriz en la que la mayoría de sus elementos
son nulos.
Vamos a suponer que más del 80%.
Tipos de matrices:
Estructuradas
No estructuradas
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:
Algoritmos y Programación Paralela
Representación
Matriz completa.
Esquema coordenado
3 arrays de n elementos:
elementos
columnas
filas
CSR (Compressed sparse row)‫‏‬
2 arrays de n elementos:
Elementos
Columnas
1 array de tamaño nº de filas:
Filas
fila(0) = 0; fila(i+1) – fila(i) = nº elementos en la fila i
Muchos más... (CSC, DIA, BND, DNS, ...)‫‏‬
Algoritmos y Programación Paralela
Representación
La
matriz A en formato CSR
La matriz B traspuesta y en formato CSR
La matriz C:
Secuencial: formato CSR
Paralelo: formato coordenado
Algoritmos y Programación Paralela
Algoritmo secuencial
Es el mismo que para matrices densas pero adaptado.
Sólo se multiplica cuando el segundo operando está
en la misma fila que columna el primer operando.
Se empieza una nueva columna cuando no quedan
elementos en la fila de A o en la columna de B.
1
5
2
2
4
3
3
4
1
Algoritmos y Programación Paralela
Algoritmo secuencial
Es el mismo que para matrices densas pero adaptado.
Sólo se multiplica cuando el segundo operando está
en la misma fila que columna el primer operando.
Se empieza una nueva columna cuando no quedan
elementos en la fila de A o en la columna de B.
5
2
1
2
4
3
3
4
1
Algoritmos y Programación Paralela
Algoritmo secuencial
Es el mismo que para matrices densas pero adaptado.
Sólo se multiplica cuando el segundo operando está
en la misma fila que columna el primer operando.
Se empieza una nueva columna cuando no quedan
elementos en la fila de A o en la columna de B.
1
5
2
2
4
3
3
4
1
Algoritmos y Programación Paralela
5
Algoritmo secuencial
Es el mismo que para matrices densas pero adaptado.
Sólo se multiplica cuando el segundo operando está
en la misma fila que columna el primer operando.
Se empieza una nueva columna cuando no quedan
elementos en la fila de A o en la columna de B.
1
5
2
2
4
3
3
4
1
Algoritmos y Programación Paralela
5
Algoritmo secuencial
Es el mismo que para matrices densas pero adaptado.
Sólo se multiplica cuando el segundo operando está
en la misma fila que columna el primer operando.
Se empieza una nueva columna cuando no quedan
elementos en la fila de A o en la columna de B.
1
5
2
2
4
3
3
4
1
Algoritmos y Programación Paralela
5
4
Algoritmo secuencial
Es el mismo que para matrices densas pero adaptado.
Sólo se multiplica cuando el segundo operando está
en la misma fila que columna el primer operando.
Se empieza una nueva columna cuando no quedan
elementos en la fila de A o en la columna de B.
1
5
2
2
4
3
3
4
1
Algoritmos y Programación Paralela
5
4
Algoritmo secuencial
Es el mismo que para matrices densas pero adaptado.
Sólo se multiplica cuando el segundo operando está
en la misma fila que columna el primer operando.
Se empieza una nueva columna cuando no quedan
elementos en la fila de A o en la columna de B.
1
5
2
2
4
3
3
4
1
Algoritmos y Programación Paralela
5
4
4
Esquemas algorítmicos
Paralelismo de datos
Particionado
de datos en memoria distribuida
Algoritmo relajado
Bolsa de tareas
Algoritmos y Programación Paralela
Elección del esquema: OpenMP
Paralelismo de datos
a)
b)
Repartir la matriz en bloques de ⎣filas/p⎦ filas.
#pragma omp for private(i,j,s) schedule(static, filas/p)‫‏‬
Repartir la matriz en filas cíclicamente.
#pragma omp for private(i,j,s) schedule(static,1)‫‏‬
Mejora el balanceo de la carga respecto al anterior.
a)‫‏‬
b)‫‏‬
Algoritmos y Programación Paralela
Elección del esquema: OpenMP
Bolsa de tareas
a)
Repartir las filas de una en una dinámicamente
#pragma omp for private(i,j,s) schedule (dynamic)‫‏‬
b) Repartir bloques de m filas dinámicamente
#pragma omp for private(i,j,s) schedule (dynamic, m)‫‏‬
Ventajas
Gestión de la bolsa por parte de OpenMP
Proporciona el mejor balanceo posible.
Elegimos la bolsa de tareas
Algoritmos y Programación Paralela
Elección del esquema: MPI
Particionado de datos
¿Cuántos elementos van a recibir? Depende
a)
b)
Repartir en bloques de n/p filas.
Desbalanceo de la carga.
Repartir filas cíclicamente.
Mejora el balanceo de la carga.
Dificultad: distribución de los datos.
a)‫‏‬
b)‫‏‬
Algoritmos y Programación Paralela
Elección del esquema: MPI
Bolsa de tareas
Ventajas:
No empaquetar datos.
Mejor balanceo.
Inconvenientes:
Particionado de datos
Más comunicaciones y con
menos datos.
Contención.
Terminación: El test es
global
sincronización.
Algoritmos y Programación Paralela
Bolsa de tareas
Estudio experimental
nº
p
Variando:
de procesadores p
el tamaño original de
la matriz N
el porcentaje E de
elementos no nulos.
E = 1%, 5%, 10%, 20%
Se probará también con
matrices estructuradas
N
1000
2000
5000
10000
100000
Algoritmos y Programación Paralela
1
2
4
8
16
Preguntas
Algoritmos y Programación Paralela
Descargar