La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

ALGORITMOS PARALELOS DE MULTIPLICACIÓN DE MATRICES

Presentaciones similares


Presentación del tema: "ALGORITMOS PARALELOS DE MULTIPLICACIÓN DE MATRICES"— Transcripción de la presentación:

1 ALGORITMOS PARALELOS DE MULTIPLICACIÓN DE MATRICES
Integrantes Guido Casco Claudio Lezcano Electiva V – Diseño de Algoritmos Paralelos 9vo Semestre, 2009

2 Introducción En este trabajo se tiene por objetivo implementar y comparar dos versiones de algoritmos de multiplicación de matrices con diferentes mecanismos de mapeo y particionamiento de tareas, en particular los algoritmos de cannon y de multiplicación con mapeo por bloque circular. Además se desea comparar el comportamiento de los mismos con diferentes cargas de trabajo y comparar su desempeño con la versión mono-proceso mas comúnmente utilizada. Para el desarrollo de las versiones en paralelo se ha utilizado la librería de paso de mensajes MPICH con el compilador gcc. A continuación se describe cada una de las implementaciones desarrolladas.

3 Descripción del Hardware y de la Red utilizada
Características de la Computadora1 Características de la Computadora2 Procesador: AMD Athlon64 x2 1.9Ghz Memoria: 2GB RAM Disco Duro: 160GB HD SATA S.O: Windows XP Pro. SP2 Velocidad de Tarjeta de Red: 1Gbps Procesador: Pentium 4 x2 3Ghz Memoria: 3GB RAM Disco Duro: 250GB HD SATA Características de la Red Velocidad de Transmisión: 1Gbps Cable de Red: Giganet 5E UTP 4x2x2

4 Algoritmo de Cannon

5 Operación de rotación de filas
void shift(int** array, int step, int row_shift, char side, int rows,int cols) { int k,j; int i = step; int aux; for(k=0;k<step;k++) { if(side == 'L') aux = array[row_shift][0]; else aux = array[0][row_shift]; for(j =0 ; j<cols-1 ; j++) { array[row_shift][j] = array[row_shift][j+1]; array[j][row_shift] = array[j+1][row_shift]; } array[row_shift][cols-1] = aux; array[cols-1][row_shift] = aux;

6 Operación de rotación de columnas
void MPI_shift(int** arr, int rows, int cols, int rank, int MPI_size, int comm) { reciver = rank-1; if(reciver<0) reciver= MPI_size-1; sender = (rank+1); if(sender == MPI_size) sender = 0; for(i =0 ; i<cols ; i++) { aux = arr[0][i]; aux1 = 0; if(rank%2 == 0) { MPI_Send (&aux,1, MPI_INT,reciver,i,comm); MPI_Recv (&aux1,1, MPI_INT, sender,i,comm,&stat); } else { for(j =0 ; j<rows-1 ; j++) { arr[j][i] = arr[j+1][i]; arr[rows-1][i] = aux1;

7 Algoritmo de Particionamiento por Bloques Circulares

8 Marco Comparativo

9 Marco Comparativo

10 Marco Comparativo

11 Conclusión Con este trabajo pudimos visualizar las diferencias en tiempo de ejecución entre los algoritmos paralelos de multiplicación de matrices (Cannon y Distribución por Bloque Circular) y el algoritmo serial de multiplicación de matrices, el tiempo de ejecución de los algoritmos paralelos tienen un tiempo de sobrecarga asociada, el tiempo de comunicación interprocesos y las comunicaciones a través de la red. También se pudo observar una diferencia entre el algoritmo de Cannon y el de Distribución cíclica de bloques, esto se debe a la mayor cantidad de interacciones inter-procesos en la implementación de Cannon que en la otra. Por lo tanto, en las métricas de comparación (Tiempo de Ejecución, Tiempo de Sobrecarga, Aceleración, Eficiencia y Costo) se puede observar que comparando los algoritmos paralelos de Multiplicación de Matrices, el algoritmo de Cannon por tener mayor interacción inter-proceso tendría peor valores de las métricas que el Algoritmo de Particionamiento por Bloques Cíclicos. Con este trabajo también se puede concluir que los Algoritmos Paralelos tienden a administrar mejor los recursos como procesadores multi-núcleos.

12 MUCHAS GRACIAS POR LA ATENCIÓN!!!


Descargar ppt "ALGORITMOS PARALELOS DE MULTIPLICACIÓN DE MATRICES"

Presentaciones similares


Anuncios Google