Está en la página 1de 24

El estndar MPI

(Messaging passing interface)

Juan igo Monjas


Procesamiento Paralelo

ndice

Introduccin Historia Caractersticas Funcionamiento Mensajes Llamadas Funciones Tipos Compilacin Ejemplo Bibliografa

Introduccin
Qu

es MPI?

-Iniciales de Message Passing interface -Es una especificacin para programacin de paso de mensajes -Proporciona una librera de funciones
-Atiende a una estructura SPMD(Single Program/Multiple Data) Datos locales a cada maquina Todos los procesadores trabajan con el mismo programa, pero los datos pueden ser diferentes. Como asignar tareas diversas con datos diversos?

-Los datos se comparten por medio del paso de mensajes

Introduccin
Lenguajes
FORTRAN C/C++ (Intentos de puente entre JAVA y MPI, mpiJava API )

Ventajas
Programas portables Ms rpidos que los de otras bibliotecas Gran funcionalidad Soporta gran cantidad de tipos de datos Incluyendo datos definidos por el usuario

Objetivos:
Conseguir una comunicacin eficiente. Definir interfaz implementable en distintas plataformas sin cambios significativos.

Historia

Comenz en Abril de 1992 con el Workshop on Standards for Message Passing in Distributed Memory Environment patrocinado por el Center for Research on Parallel Computing en Williamsburg,Virginia Involucr cerca de 60 personas y 40 organizaciones de Europa y EEUU Empresas que han participado:

Universidades:

Historia
Evolucin
1992 Comienzo Nov 1992 Primera versin MPI 1

Se crea el MPI frum

Feb 1993 Segunda versin MPI 1

Mayo 1994

Versin final MPI 1

Sept 2009 Versin 2.2

Jun 2008 Versin 2.1

Jul 1997 Versin 2.0

Junio 1995 Versin 1.1

Sept 2012 Versin 3,0

Implementaciones de libre desarrollo para MPI


MPICH LAM CHIMP

CRI/EPCC

LAM (Local Area Multiprocesor)


Desarrollo para procesamiento en paralelo que trabaja sobre redes formadas por procesadores independientes Funciona en una gran cantidad de plataformas UNIX Las diferentes mquinas pueden conectarse a travs de una red de rea local o a travs de Internet

Caractersticas:
Completa implementacin del estndar MPI Existen diversas herramientas de desarrollo Posibilidad de mezclar diferentes tipos de maquinas en una misma red Es posible activar o desactivar nodos dentro de la red Si un nodo cae se detecta y es posible recuperarlo cuando vuelva a funcionar Existen libreras adicionales MPI para la programacin LAM

MPICH (MPIChamaleon)
Implementacin

de alto rendimiento y altamente portable Sus objetivos son:


Proporcionar una implementacin MPI que soporte de manera eficiente distintas plataformas de computacin y comunicacin incluyendo, sistemas de sobremesa, memoria compartida o arquitecturas multicore, redes de alta velocidad o superordenadores (Blue Gene, Cray) Permitir la investigacin en MPI mediate una interfaz fcil de extender a otras implementaciones.

Caractersticas
Creado

para arquitecturas de memoria distribuida Estandarizacin Portabilidad


Multicomputadores, redes , multiprocesadores

Incluye

definiciones para:

Temporizadores y sincronizadores. Control de errores. Interaccin con el ambiente en ejecucin.

Comunicaciones Existencia

colectivas:

Gran nmero de rutinas para el movimiento de datos.

de implementaciones libres.

Funcionamiento

Siguiendo el modelo SPMD, el usuario escribir su aplicacin como un proceso secuencial del que se lanzarn varias instancias que cooperan entre s.

Los

procesos invocan diferentes funciones MPI que permiten:


iniciar, gestionar y finalizar procesos MPI comunicar datos entre dos procesos realizar operaciones de comunicacin entre grupos de procesos crear tipos arbitrarios de datos

Mensajes en MPI
Compuesto

por:

Cuerpo del mensaje


Buffer Tipo de dato Count

Envoltura
Direccin destino Direccin fuente Informacin adicional para transmitir y entregar el mensaje(etiqueta, comunicator)

Llamadas de MPI
4

clases:
1. Llamadas utilizadas para inicializar, administrar y finalizar comunicaciones.
MPI_Init, MPI_Finalice

2. Llamadas utilizadas para transferir datos entre un par de procesos.


MPI_Send, MPI_Recv

3. Llamadas para transferir datos entre varios procesos.


MPI_Bcast,

4. Llamadas utilizadas para crear tipos de datos definidos por el usuario.


MPI_Type_struct

Llamadas mas utilizadas para inicializar,


administrar y finalizar comunicaciones. MPI dispone de 4 funciones bsicas:MPI_Init
Permite inicializar una sesin MPI. Utilizada antes de llamar a cualquier otra funcin de MPI.

MPI_Finalize
Permite terminar una sesin MPI ltima llamada a MPI que un programa realice. Permite liberar la memoria usada por MPI.

MPI_Comm_size
Determina el nmero total de procesos que pertenecen a un comunicator.

MPI_Comm_rank
Determina el identificador (rank) del proceso actual.

Comunicacin punto a punto


Un procesador enva y otro recibe Comunicacin elemental en MPI Dos modos de comunicacin
Bloqueante No bloqueante

Cuatro procedimientos para transmitir mensajes


standard synchronous. buffered ready

Comunicacin punto a punto


MPI_Send (void *buf, int count, MPI Datatype dtype, int dest, int tag, MPI_Comm comm); MPI_Recv (void *buf, int count, MPI_Datatype dtype, int source, int tag, MPI_Comm comm, MPI_status *status);
buf: localizacin en memoria de los datos count: Nmero de datos del tipo indicado enviados o recibidos dtype: tipo de datos enviados o recibidos dest/source: procesador destino/fuente tag: etiqueta de comunicacin comm: comunicador de envo o recepcin status: cdigo de retorno de la operacin de recepcin

Comunicacin colectiva
Comunicaciones

de un procesador a varios y de varios procesadores a uno Se reduce la posibilidad de error Cdigo fuente ms fcil de leer Normalmente, la rutina colectiva es ms rpida

Comunicacin colectiva
Operacin

broadcast: Un nico proceso enva copia de los mismos datos a todos los procesos de un grupo
MPI_Bcast (void *buf, int count, MPI_Datatype dtype, int root, MPI_Comm comm);

Aadir el fichero
#include

"mpi.h",

Al principio en todos los programas


Contiene Definiciones Macros Prototipos

Tipos MPI bsicos

Compilacin en MPI
C
% mpcc -o programa programa.c % mpcc -o programa programa.c

FORTRAN
% mpf77 -o programa programa.f % mpf90 -dalign -o programa programa.f

Ejecucin
mprun -np num_procesos programa

o para ejecutar "programa_mpi" en 5 procesos:


o % mprun -np 5 programa_mpi

Ejemplo de un programa bsico en MPI


#include <stdio.h> #include mpi.h int main( argc, argv ) int argc; char **argv; { int rank, size; MPI_Init( &argc, &argv ); MPI_Comm_size( MPI_COMM_WORLD, &size ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); printf( "Hello world from process %d of %d\n", rank, size ); MPI_Finalize(); return 0; } % mpicc -o helloworld helloworld.c % mpirun -np 4 helloworld Hello world from process 0 of 4 Hello world from process 3 of 4 Hello world from process 1 of 4 Hello world from process 2 of 4 %

Bibliografa
www.wikipedia.org www.informatica.uv.es www.mpich.org

www.mcs.anl.gov

(ejercicios resueltos)

www.cs.kent.edu/~farrell/dist/ref/implementations.html

www.mpi-forum.org

PREGUNTAS?

También podría gustarte