Standard MPI Presentacion

24
El estándar MPI (Messaging passing interface) Juan Íñigo Monjas Procesamiento Paralelo

Transcript of Standard MPI Presentacion

Page 1: Standard MPI Presentacion

El estándar MPI (Messaging passing interface)

Juan Íñigo Monjas Procesamiento Paralelo

Page 2: Standard MPI Presentacion

Índice

Introducción

Historia

Características

Funcionamiento

Mensajes

Llamadas

Funciones

Tipos

Compilación

Ejemplo

Bibliografía

Page 3: Standard MPI Presentacion

Introducción

¿Qué es MPI? -Iniciales de Message Passing interface

-Es una especificación para programación de paso de mensajes

-Proporciona una librería 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

Page 4: Standard MPI Presentacion

Introducción

Lenguajes FORTRAN

C/C++

(Intentos de puente entre JAVA y MPI, mpiJava API )

Ventajas Programas portables

Más rápidos que los de otras bibliotecas

Gran funcionalidad

Soporta gran cantidad de tipos de datos

Incluyendo datos definidos por el usuario

Objetivos: Conseguir una comunicación eficiente.

Definir interfaz implementable en distintas plataformas sin cambios significativos.

Page 5: Standard MPI Presentacion

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:

Page 6: Standard MPI Presentacion

Historia

Evolución

1992

Comienzo

Nov 1992

Primera

versión

MPI 1

Feb 1993

Segunda

versión

MPI 1

Se crea

el MPI

fórum

Mayo 1994

Versión

final

MPI 1

Junio 1995

Versión

1.1

Jul 1997

Versión

2.0

Jun 2008

Versión

2.1

Sept 2009

Versión

2.2

Sept 2012

Versión

3,0

Page 7: Standard MPI Presentacion

Implementaciones de libre

desarrollo para MPI MPICH

LAM

CHIMP

CRI/EPCC

Page 8: Standard MPI Presentacion

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 máquinas pueden conectarse a través de una red de área local o a través de Internet

Características:

◦ Completa implementación del estándar 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 librerías adicionales MPI para la programación LAM

Page 9: Standard MPI Presentacion

MPICH (MPIChamaleon)

Implementación de alto rendimiento y

altamente portable

Sus objetivos son: Proporcionar una implementación MPI que soporte de manera

eficiente distintas plataformas de computación y comunicación

incluyendo, sistemas de sobremesa, memoria compartida o

arquitecturas multicore, redes de alta velocidad o

superordenadores (Blue Gene, Cray)

Permitir la investigación en MPI mediate una interfaz fácil de

extender a otras implementaciones.

Page 10: Standard MPI Presentacion

Características

Creado para arquitecturas de memoria distribuida

Estandarización

Portabilidad Multicomputadores, redes , multiprocesadores…

Incluye definiciones para: Temporizadores y sincronizadores.

Control de errores.

Interacción con el ambiente en ejecución.

Comunicaciones colectivas: Gran número de rutinas para el movimiento de datos.

Existencia de implementaciones libres.

Page 11: Standard MPI Presentacion

Funcionamiento

Siguiendo el modelo SPMD, el usuario escribirá su aplicación como

un proceso secuencial del que se lanzarán 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 comunicación entre grupos

de procesos

crear tipos arbitrarios de datos

Page 12: Standard MPI Presentacion

Mensajes en MPI

Compuesto por: Cuerpo del mensaje

Buffer

Tipo de dato

Count

Envoltura

Dirección destino

Dirección fuente

Información adicional para transmitir y entregar el

mensaje(etiqueta, comunicator)

Page 13: Standard MPI Presentacion

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

Page 14: Standard MPI Presentacion

Llamadas mas utilizadas para inicializar,

administrar y finalizar comunicaciones.

MPI dispone de 4 funciones básicas:-

MPI_Init Permite inicializar una sesión MPI.

Utilizada antes de llamar a cualquier otra función de MPI.

MPI_Finalize Permite terminar una sesión MPI

Última llamada a MPI que un programa realice.

Permite liberar la memoria usada por MPI.

MPI_Comm_size Determina el número total de procesos que pertenecen a un

comunicator.

MPI_Comm_rank Determina el identificador (rank) del proceso actual.

Page 15: Standard MPI Presentacion

Comunicación punto a punto

Un procesador envía y otro recibe

Comunicación elemental en MPI

Dos modos de comunicación

Bloqueante

No bloqueante

Cuatro procedimientos para transmitir mensajes standard

synchronous.

buffered

ready

Page 16: Standard MPI Presentacion

Comunicación 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: localización en memoria de los datos count: Número de datos del tipo indicado enviados o recibidos dtype: tipo de datos enviados o recibidos dest/source: procesador destino/fuente tag: etiqueta de comunicación comm: comunicador de envío o recepción status: código de retorno de la operación de recepción

Page 17: Standard MPI Presentacion

Comunicación colectiva

Comunicaciones de un procesador a

varios y de varios procesadores a uno

Se reduce la posibilidad de error

Código fuente más fácil de leer

Normalmente, la rutina colectiva es más

rápida

Page 18: Standard MPI Presentacion

Comunicación colectiva

Operación broadcast: Un único proceso

envía 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);

Page 19: Standard MPI Presentacion

Añadir el fichero

#include "mpi.h", Al principio en todos los

programas

Contiene

Definiciones

Macros

Prototipos

Page 20: Standard MPI Presentacion

Tipos MPI básicos

Page 21: Standard MPI Presentacion

Compilación 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

Ejecución ◦ mprun -np num_procesos programa

o para ejecutar "programa_mpi" en 5 procesos:

o % mprun -np 5 programa_mpi

Page 22: Standard MPI Presentacion

Ejemplo de un programa básico 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

%

Page 23: Standard MPI Presentacion

Bibliografía

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

Page 24: Standard MPI Presentacion

¿PREGUNTAS?