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:
- Proceso que envía
- Dónde están los datos a enviar
- Clase de datos que se envían
- Cuántos datos hay
- Quién o quienes (procesos) reciben los datos
- Dónde deben dejarse los datos recibidos
- 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