Practica 8 "Paso de mensajes con Python"

"Paso de mensajes con Python"



MPI ("Message Passing Interface", Interfaz de Paso de Mensajes)

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. 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.
Los elementos principales que intervienen en el paso de mensajes son el proceso que envía, el que recibe y el mensaje.

Para programar aplicaciones con MPI, se utiliza un runtime llamado OpenMPI, el cual es la versión libre y que además funciona con el lenguaje de programación C, en entorno Unix únicamente. Aunque existe un binding entre Python y MPI, llamado PyMPI, con el cual podemos utilizar las bondades de un lenguaje dinámico en conjunto con la programación de aplicaciones en paralelo.

Hay por lo menos cinco intentos conocidos de aplicar MPI para Python: mpi4py, PyPar, PyMPI, MYMPI, y en el submódulo ScientificPython MPI.

PyMPI es notable porque se trata de una variante de python intérprete multi-nodo de la aplicación de la propia intérprete, más que el código se ejecuta el intérprete. Implementa la mayor parte de la especificación MPI y trabaja automáticamente con el código compilado que necesita para hacer llamadas MPI.

PyPar, MYMPI, y el módulo ScientificPython están diseñados para trabajar como un típico módulo realizando una declaración de importación.

Hacen el trabajo del codificador para decidir cuándo y dónde pertenece la llamada a MPI_Init.

Comunicadores.
MPI agrupa los procesos implicados en una ejecución paralela en comunicadores.
Un comunicador agrupa a procesos que pueden intercambiarse mensajes.
El comunicador MPI_COMM_WORLD está creado por defecto y engloba a todos los procesos.
Pueden definirse varios comunicadores.

Tipos de mensajes en MPI.

punto a punto: un emisor y un receptor, estos pueden ser sincronos o asincronos.
mensaje en base a funcion: se envian mensajes a traves de las funciones MPI_Send y MPI_Recv.
mensajes para casos especiales: variantes de MPI_Send. sicrono, buffered y ready.
mensaje multipunto: de uno o n emisores a 1 o n receptores.

Ventajas.
  • Portabilidad: MPI ha sido implementado para casi toda arquitectura de memoria distribuida.
  • Velocidad: Cada implementación de la biblioteca ha sido optimizada para el hardware en la cual se ejecuta. 


PVM("Parallel Virtual Machine Máquina Virtual Paralela)

es una biblioteca para el cómputo paralelo en un sistema distribuido de computadoras. Está diseñado para permitir que una red de computadoras heterogénea comparta sus recursos de cómputo (como el procesador y la memoria RAM) con el fin de aprovechar esto para disminuir el tiempo de ejecución de un programa al distribuir la carga de trabajo en varias computadoras.
PVM permite a los usuarios explotar su hardware existente para resolver problemas mucho más grandes a un costo adicional mínimo. Cientos de sitios en todo el mundo están utilizando PVM para resolver importantes problemas científicos, industriales y médicos, además de uso de PVM como una herramienta educativa para enseñar programación paralela. Con decenas de miles de usuarios, PVM se ha convertido en el estándar de facto para todo el mundo-computación distribuid


Comentarios

Entradas populares