Descargar

Interfaz de Paso de Mensajes

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    INTRODUCCION A M(ESSAGE) P(ASSING) I(NTERFACE) Paradigma de Transferencia de Mensajes Cada procesador corre un programa Todas las variables son privadas La comunicación se realiza a través de subrutinas especiales Trans-mensajes

    edu.red

    ¿Qué es MPI? Es una implementación de un estándar del modelo de paso de mensajes

    Atiende a una estructura SPMD (Single Program/Multiple Data) Imágenes del programa en cada máquina 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

    Consiste en una serie de librerías C

    edu.red

    MPI (Message Passing Interface) ? Una colección de rutinas adecuadas para facilitar la comunicación (intercambio de datos y sincronización de tareas) entre distintos procesadores. MPI : 1994 / MPI 2 : 1997 Existen bibliotecas para C y Fortran (C++ y F90). Características: Es estándar (por consenso, no por normativa) Portable Flexible (~ 125 rutinas) y expandible Simple (con las 6 rutinas básicas se puede hacer mucho!) ¿Qué es MPI?

    edu.red

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

    Ofrece gran funcionalidad Diferentes tipos de comunicaciones Soporta gran cantidad de tipo de datos Soporta datos definidos por el usuario

    Manejo de diferentes topologías MPI se escribió con algunos puntos un poco perdidos

    En teoría las aplicaciones MPI se pueden compilar con cualquier implementación MPI existente, pero es posible que el comportamiento sea ligeramente diferente

    Necesidad de recursos que no estén garantizados por la implementación MPI

    NO ES PORTABLE TOTALMENTE

    edu.red

    Portabilidad de los programas Aspectos a considerar debido a la variedad de implementaciones MPI

    Suponer buffering. No asumir que el envío de datos es tipo buffer

    Suponer sincronización de barrera para llamadas colectivas. En MPI, la comunicación colectiva es bloqueante, pero el programa no debe depender del tipo de sincronización (en este caso barrera)

    Ambigüedades en la comunicación. Los mensajes enviados son los que se espera recibir

    edu.red

    Local Area Multiprocesor (LAM) Entorno y sistema de desarrollo para procesamiento en paralelo que trabaja sobre redes formadas por procesadores independientes Utiliza programación estándar de paso de mensajes (MPI) LAM proporciona al usuario una librería API para el paso de mensajes entre diferentes nodos que colaboran para la realización de una aplicación paralela Funciona en una gran cantidad de plataformas UNIX y permite trabajar con diferentes tipos de maquinas mezclados

    edu.red

    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 Local Area Multiprocesor (LAM)

    edu.red

    MPICH y MPICH2 MPICH2 es una implementación (bastante) portable de alta performance del standart MPI (-1 y -2) Principales logros: 1) provee una implementación MPI soportada en una gran variedad de plataformas HETEROGENEAS. Con gran variedad de redes (10Gigabits, Infiniband, Myrinet, Quadrics ) y tiene algunas cosas interesantes para su mejor funcionamiento en sistemas propietarios como BlueGene, Cray, etc

    2) Es fácil de utilizar en otros entornos derivados lo que permite ampliar sus capacidades enormemente. Por ejemplo crear nuestra librería, o Petsc, o scalapack

    edu.red

    Como funcionan? Se debe compilar con las librerias adecuadas.

    mpicc -o s.exe sistema.c -lm

    Se debe ejecutar con las instrucciones adecuadas. En general en maquinas grandes, ese problema no es nuestro problema source /opt/Modules/3.2.6/init/bash module add mvapich2 Mpirun/mpiexec –comm=pmi -np $NP S.exe

    edu.red

    Como funciona MPI? En FORTRAN será vía el llamado a subrutinas: call MPI_ROUTINE (ARGUMENTOS, IERROR)

    En C el uso será de la forma: MPI_Xxxxxx(argumentos) El primer paso será invocar a la biblioteca adecuada (C: mpi.h, F: mpif.h)p.e.: #include “mpi.h” Todo programa MPI tiene que ser inicializado y finalizado (para liberar correctamente los recursos).

    edu.red

    Versión Fortran PROGRAM simple include ’mpif.h’ integer errcode ! Inicializar MPI call MPI_INIT (errcode) ! Parte Principal del Prog… ! Terminar MPI call MPI_FINALIZE (errcode) end Versión C #include “mpi.h” /* Headers */ main(int argc, char **argv) { /* Inicializar MPI */ MPI_Init (&argc, &argv); /* Parte principal del Prog….. */ /* Terminar MPI */ MPI_Finalize (); exit (0); } Un programa MPI: el esquema básico Prog.Basico

    edu.red

    Como funciona MPI? Los siguientes pasos son definir un comunicador, indicar el número total de procesadores en el sistema y el rango de cada uno dentro del conjunto. El comunicador típico es MPI_COMM_WORLD (definido en mpi.h/mpif.h): son todos los nodos requeridos al sistema. (Pueden definirse otros comunicadores si es necesario) Comunicador

    edu.red

    Comunicadores A cada proceso se le asigna un numero (rank) consecutivo empezando desde 0

    Un mismo procesador puede pertenecer a varios comunicadores diferentes, y su ‘rank’ sera diferente en cada uno de ellos

    MPI_COMM_WORLD es un comunicador que engloba a todos los procesos

    Los mensajes se marcan con una etiqueta o tag que sirve para distinguir entre diferentes tipos

    Partes: 1, 2
    Página siguiente