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