Mpi
-
Upload
christian-moreno -
Category
Documents
-
view
17 -
download
0
Transcript of Mpi
UNIVERSIDAD NACIONAL DE CHIMBORAZO
ESCUELA DE SISTEMAS Y COMPUTACION
APLICACIONES DISTRIBUIDAS
MPI
CUARTO AÑO
INTEGRANTES:
CRISTHIAN MORENOANGEL MOYON
JOSE ORTIZ
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