Mpi

14
UNIVERSIDAD NACIONAL DE CHIMBORAZO ESCUELA DE SISTEMAS Y COMPUTACION APLICACIONES DISTRIBUIDAS MPI CUARTO AÑO INTEGRANTES: CRISTHIAN MORENO ANGEL MOYON JOSE ORTIZ

Transcript of Mpi

UNIVERSIDAD NACIONAL DE CHIMBORAZO

ESCUELA DE SISTEMAS Y COMPUTACION

APLICACIONES DISTRIBUIDAS

MPI

CUARTO AÑO

INTEGRANTES:

CRISTHIAN MORENOANGEL MOYON

JOSE ORTIZ

Message Passing Interface (MPI)

Interfaz de Paso de Mensajes

MPI (MessagePassing Interface) es un estándar que define la sintaxis y la semántica de las funciones contenidas en una biblioteca de paso de mensajes diseñada para ser usada en programas que exploten la existencia de múltiples procesadores.El paso de mensajes es una técnica empleada en programación concurrente para aportar sincronización entre procesos y permitir la exclusión mutua.

¿ QUÉ ES MPI ?

Al diseñarse MPI, se tomaron en cuenta las características más atractivas de los sistemas existentes para el paso de mensajes, resultando así, en una fuerte influencia para MPI los trabajos hechos por IBM, INTEL, NX/, Express, nCUBE's Vernex, p4 y PARMACS. Otras contribuciones importantes provienen de Zipcode, Chimp, PVM, Chameleon y PICL.

Estandarizar MPI involucró a cerca de 60 personas de 40 organizaciones diferentes principalmente de U.S.A. y Europa.

La mayoría de los vendedores de computadoras concurrentes estaban involucrados con MPI, así como con investigadores de diferentes universidades, laboratorios del gobierno e industrias.

HISTORIA DEL MPI

Las arquitecturas de Computación paralela pueden verse como una extensión de las arquitecturas convencionales que permiten la cooperación y comunicación entre elementos de procesos. Existen actualmente 2 paradigmas en las arquitecturas de computación paralela:

ParadigmasArquitecturaProgramación Comunicación

HISTORIA DEL MPI

La Interfaz de Paso de Mensajes (conocido ampliamente como MPI, siglas en inglés de Message Passing Interface) es un protocolo de comunicación entre computadoras. Es el estándar para la comunicación entre los nodos

que ejecutan un programa en un sistema de memoria distribuida. Las implementaciones en MPI consisten en un conjunto de bibliotecas de rutinas

que pueden ser utilizadas en programas escritos en los lenguajes de programación C, C++, Fortran y Ada. La ventaja de MPI sobre otras

bibliotecas de paso de mensajes, es que los programas que utilizan la biblioteca son portables (dado que MPI ha sido implementado para casi toda arquitectura de memoria distribuida), y rápidos, (porque cada implementación

de la biblioteca ha sido optimizada para el hardware en la cual se ejecuta).

INTERFAZ DE PASO DE MENSAJES

Principalmente dirigido a proveer portabilidad del código fuente. No esta totalmente alcanzado todavía

Ofrece gran funcionalidadDiferentes tipos de comunicacionesSoporta gran cantidad de tipo de datosSoporta datos definidos por el usuario

Manejo de diferentes topologías

CARACTERISTICAS DEL MPI

Normalización - MPI es la única biblioteca de paso de mensajes que puede ser considerada un estándar . Cuenta con el apoyo de prácticamente todas las plataformas HPC. En la práctica, se ha sustituido todas las bibliotecas de paso de mensajes anteriores.

Portabilidad - Hay poca o ninguna necesidad de modificar el código fuente al portar su aplicación en una plataforma diferente que apoya (y cumple) el estándar MPI.

Oportunidades de rendimiento - implementaciones de proveedores deben ser capaces de explotar las características de hardware nativo para optimizar el rendimiento.

Funcionalidad - Hay más de 440 rutinas definidas en MPI - 3 , que incluye la mayoría de las personas en MPI - 2 y MPI - 1 .

Disponibilidad - Una variedad de implementaciones disponibles , tanto de proveedores y de dominio público.

RAZONES PARA EL USO DE MPI

Con MPI el número de procesos requeridos se asigna antes de la ejecución del programa, y no se crean procesos adicionales mientras la aplicación se ejecuta. A cada proceso se le asigna una variable que se denomina rank, la cual identifica a cada proceso, en el rango de 0 a p-1, donde p es el número total de procesos. El control de la ejecución del programa se realiza mediante la variable rank; la variable rank permite determinar que proceso ejecuta determinada porción de código. En MPI se define un comunicator como una colección de procesos, los cuales pueden enviar mensajes el uno al otro; el comunicator básico se denomina MPI_COMM_WORLD y se define mediante un macro del lenguaje C. MPI_COMM_WORLD agrupa a todos los procesos activos durante la ejecución de una aplicación. Las llamadas de MPI se dividen en cuatro clases:Llamadas utilizadas para inicializar, administrar y finalizar comunicaciones.Llamadas utilizadas para transferir datos entre un par de procesos.Llamadas para transferir datos entre varios procesos.Llamadas utilizadas para crear tipos de datos definidos por el usuario.

FUNDAMENTOS DE MPI

MPI dispone de 4 funciones primordiales que se utilizan en todo programa con MPI. Estas funciones son:MPI_Init permite inicializar una sesión MPI. Esta función debe ser utilizada antes de llamar a cualquier otra función de MPI.MPI_Finalize permite terminar una sesión MPI. Esta función debe ser la última llamada a MPI que un programa realice. Permite liberar la memoria usada por MPI.MPI_Comm_size permite determinar el número total de procesos que pertenecen a un comunicator.MPI_Comm_rank permite determinar el identificador (rank) del proceso actual.

LLAMADAS UTILIZADAS PARA INICIALIZAR, ADMINISTRAR Y FINALIZAR COMUNICACIONES

La transferencia de datos entre dos procesos se consigue mediante las llamadas MPI_Send y MPI_Recv. Estas llamadas devuelven un código

que indica su éxito o fracaso. MPI_Send permite enviar información desde un proceso a otro. MPI_Recv permite recibir información desde

otro proceso. Ambas funciones son bloqueantes, es decir que el proceso que realiza la llamada se bloquea hasta que la operación de

comunicación se complete. Las versiones no bloqueantes de MPI_Send y MPI_Recv son MPI_Isend y MPI_Irecv, respectivamente. Estas

llamadas inician la operación de transferencia pero su finalización debe ser realizada de forma explícita mediante llamadas como MPI_Test y MPI_Wait. MPI_Wait es una llamada bloqueante y retorna cuando la

operación de envío o recepción se completa. MPI_Test permite verificar si la operación de envío o recepción ha finalizado, esta función primero

chequea el estado de la operación de envío o recepción y luego retorna.

LLAMADAS UTILIZADAS PARA TRANSFERIR DATOS ENTRE DOS

PROCESOS

MPI posee llamadas para comunicaciones grupales que incluyen operaciones tipo difusión (broadcast), recolección (gather),

distribución (scatter) y reducción. Algunas de las funciones que permiten realizar transferencia entre varios procesos se presentan a

continuación. MPI_Barrier permite realizar operaciones de sincronización. En estas operaciones no existe ninguna clase de

intercambio de información. Suele emplearse para dar por finalizada una etapa del programa, asegurándose de que todos los procesos

han terminado antes de dar comienzo a la siguiente.

LLAMADAS UTLIZADAS PARA TRANSFERIR DATOS ENTRE

PROCESOS

Para definir nuevos tipos de datos se puede utilizar la llamada MPI_Type_struct para crear un nuevo tipo o se puede utilizar la

llamada MPI_Pack para empaquetar los datos.

LLAMADAS UTLIZADAS PARA CREAR TIPOS DE DATOS DEFINIDOS POR EL

USUARIO

GRACIAS