Archive for febrero, 2009

links for 2009-02-13

Anuncios

Leave a comment »

links for 2009-02-12

Leave a comment »

links for 2009-02-05

Leave a comment »

links for 2009-02-04

Leave a comment »

Programación paralela en C con MPI – Multiplicación de un vector por una matriz

Muchas veces resulta confuso el trabajar con MPI al momento de programar instrucciones en forma paralela, es un reto el tratar de entender el funcionamiento exacto de las funciones de MPI tales como “MPI_Send” y “MPI_Recv” entre otras.

Comparto un ejemplo sencillo sobre la programación en paralelo de la multiplicación de un vector de tamaño N por una matriz de tamaño NxN..

El problema consiste en distribuir el trabajo de la multiplicación en 8 procesos diferentes, segun un diagrama de cubo de 8 nodos (los nodos son los procesos). Segun el proceso de multiplicar un vector por una matriz se debe ir multiplicando cada fila de la matriz por el vector, acumulando la suma del producto posición por posición, al final se suma el resultado de cada fila y dicha suma es el resultado final (se puede encontrar información sobre esto en: http://pcmap.unizar.es/~jsayas/matrices.pdf).

Para resolver dicho problema se hace una divisón del numero de filas para el numero de procesos (en este caso 8), de forma que se reparta el trabajo de una forma mas o menos equitativa para todos los procesos, en este caso el proceso maestro trabajara la primera fila realizando la divisón del trabajo del resto de filas para los procesos esclavos.

El archivo con el codigo fuente completo se adjunta a continuación:

matrizVector.c

matrizVector.pdf

Comments (9) »