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

2 comentarios hasta ahora »

  1. 1

    Esteban escribió,

    hola, me gustaria compilar tu codigo fuente.
    pero tengo problemas en configurar la depuracion con la libreria MPI,
    en que entorno/plataforma ejecutas tus codigos .c????

  2. 2

    Angel escribió,

    se lo trabaja en Linux y puedes ejecutar los .c con la ayuda de la libreria MPICH, saludos


Comentario RSS · URI para TrackBack.

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.