¡Recomienda este blog!

jueves, 23 de septiembre de 2010

Modelo MPI: Paso de Mensajes

 La principal característica del modelo de programación de paso de mensajes es que los procesos se comunican entre sí enviando mensajes.

 En el paso de mensajes los datos contenidos en unas variables de un sub-programa se mueven a otro sub-programa.

 En general la siguiente información debe suministrarse en la transferencia de mensajes:
  1. Proceso que envía
  2. Dónde están los datos a enviar
  3. Clase de datos que se envían
  4. Cuántos datos hay
  5. Quién o quienes (procesos) reciben los datos
  6. Dónde deben dejarse los datos recibidos
  7. Cuántos datos puede recibir el proceso destino
Ejemplo: MPI

¿Qué es?
  • Una especificación de una librería de paso de mensajes.
  • No es un producto concreto.
  • Un proceso MPI es un programa en C o Fortran77 que se comunica.
con otros procesos MPI mediante llamadas a las subrutinas MPI.

¿Para qué?
  • Programación paralela sobre estructuras SPMD y MIMD (computadores paralelos, clusters, redes heterogéneas).
¿Por qué?
  • Portabilidad del código fuente.
  • Permite implementaciones eficientes en un gran rango de arquitecturas.
  • No existía un a biblioteca estándar ampliamente aceptada.
Ejemplo de C:

#include
#include "mpi.h"

main () {
int argc;
char *argv[];

MPI Status st;
int mid, np , num;

MPI Init ( &argc, &argv );
MPI Comm_size( MPI_COMM_WORLD, &np );
MPI Comm_rank ( MPI_COMM_WORLD, &mid );

printf ( "Soy el proceso %d de %d\n", mid, np );

if ( mid == 0 ){

printf(“Dame un número entero: );
scanf(“%d”,&num);
num++;
MPI_Send( &num, 1, MPI_INT, 1 , 0 , MPI_COMM_WORLD);
MPI_Recv( &num, 1, MPI_INT, np - 1 , 0 , MPI_COMM_WORLD, &st);
printf("El resultado es: %d\n", num);

}else{

MPI_Recv(&num, 1 ,MPI_INT, mid - 1, 0 , MPI_COMM_WORLD, &st);
num++;
MPI_Send(&num, 1 ,MPI_INT, (mid+1)%np ,0 ,MPI_COMM_WORLD);
}
MPI Finalize();

} //FIn

0 comentarios:

Publicar un comentario