1 / 40

Arquitecturas Avanzadas Sistemas LAM/MPI (Local Area Multicomputer / Message Passing Interface)

Arquitecturas Avanzadas Sistemas LAM/MPI (Local Area Multicomputer / Message Passing Interface). Aitor Viana Sánchez Octavio Hombrados Juan F. Ramos Jesús López Bustos. Contenido. Introducción ¿Qué es MPI? Características de MPI ¿Cuándo usar MPI? Portabilidad de los programas

hachi
Download Presentation

Arquitecturas Avanzadas Sistemas LAM/MPI (Local Area Multicomputer / Message Passing Interface)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arquitecturas AvanzadasSistemas LAM/MPI(Local Area Multicomputer /Message Passing Interface) Aitor Viana Sánchez Octavio Hombrados Juan F. Ramos Jesús López Bustos

  2. Contenido • Introducción • ¿Qué es MPI? • Características de MPI • ¿Cuándo usar MPI? • Portabilidad de los programas • ¿Qué es LAM? (Local Area Multicomputer) • Características de LAM • Local Area Multiprocesor (LAM) • Arquitectura de LAM Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  3. Contenido 10. Depurado en LAM 11. Implementación MPI 12. Comunicadores 13. Algunos conceptos 14. Estructura genérica de programa MPI 15. Clases de llamadas MPI 16. Comunicación punto a punto 17. Comunicación colectiva 18. Comandos LAM Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  4. 1. Introducción • Actualmente surge la necesidad de resolver problemas cada vez más complejos, que son inabordables con la tecnología y capacidad de computadores actual • ¿La solución? • Programación distribuida • ¿De qué tecnologías disponemos? • Llamadas a procedimientos remotos (RPC) • Invocación de métodos remotos (RMI) • Paso de mensajes (MPI) Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  5. 1. Introducción • Uno de los métodos tradicionales y usuales es el paso de mensajes (MPI) • Se basa, como todos los anteriores en la posibilidad descomposición de los problemas en problemas más pequeños • Dos tipos de descomposición: • descomposición de dominio • descomposición funcional Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  6. 2. ¿Qué es MPI? • Es una implementación de un estándar del modelo de paso de mensajes • Atiende a una estructura SIMD • Imágenes del programa en cada máquina • Datos locales a cada maquina • Los datos se comparten por medio del paso de mensajes • Consiste en una serie de librerías C Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  7. 3. 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 Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  8. 4. ¿Cuándo usar MPI? • Necesidad de crear aplicaciones que necesiten una gran potencia de cálculo • Abordar problemas inabordables con un solo procesador • Escribir código paralelo portable • Alcanzar alto desarrollo de programación paralela Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  9. 5. Portabilidad de los programas • 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 • Como conclusión, no es totalmente portable Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  10. 5. Portabilidad de los programas II • 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 Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  11. 6. ¿Qué es LAM? (Local Area Multicomputer) • Entorno de desarrollo de procesamiento paralelo • Pensado para redes de trabajo con computadores independientes • Es una implementación de la programación estándar de paso de mensajes (MPI) • LAM sólo corre sobre máquinas UNIX conectadas a través de una LAN Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  12. 7. Características de LAM • Completa implementación del estándar MPI • Extensas herramientas de monitorización y depuración • Añadido y borrado de nodos • Múltiples protocolos de comunicación (TCP, UDP) • Detección de fallo y recuperación de nodo Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  13. 8. 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 Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  14. 8. Local Area Multiprocesor (LAM) • 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 Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  15. 8. Local Area Multiprocesor (LAM) • La comunicación entre las aplicaciones se realiza de forma directa • Soporta diversos protocolos para realizar esta comunicación • Objetos básicos que forman un multicomputador LAM: • Los computadores físicos o nodos • Procesos, que identifican a las diferentes copias del programa que se ejecutan en cada procesador • Los mensajes, que son los datos que se transmiten entre los procesos de diferentes procesadores Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  16. 9. Arquitectura de LAM • En cada máquina que compone la red LAM debe estar arrancado un demonio • Proceso: • ‘lamboot’ porta LAM a todos los nodos • ‘mpirum’ para ejecutar los programas MPI • ‘lamclean’ para limpiar el entorno. Comando opcional • ‘wipe’ cierra LAM • Cada usuario debe abrir una cuenta en cada una de las maquinas y arrancar en ella un demonio Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  17. 9. Arquitectura de LAM • Arrancar y cerrar LAM sólo es necesario una vez por sesión. • La compilación de un programa puede hacerse independientemente del entorno LAM • Cada demonio funciona como un nano-kernel que proporciona paso de mensajes entre los procesos Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  18. 10. Depurado en LAM • Desde cualquier máquina que forme parte del entorno LAM es posible: • Ejecutar, detener y reanudar programas residentes en cualquier otra maquina • Monitorizar mensajes • Manipular el tamaño de los buffers • Observar retardos y tiempos de ejecución • Estos servicios se pueden llevar a cabo mediante librerías o mediante aplicaciones que funcionan en cualquier shell Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  19. 11. Implementación MPI • Sincronización mediante las variables: • context • tag • source rank • destination rank • mpirun sincroniza el lanzamiento de todos los procesos MPI para que se localicen unos a otros antes de que se introduzca el código de usuario • Los programas MPI desarrollados con LAM son portables a cualquier otra plataforma que soporte MPI Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  20. 12. Comunicadores • Proveen toda la información necesaria para el paso de mensajes • Al enviar y recibir los comunicadores deben coincidir para que tenga lugar la comunicación • Son un argumento necesario para comunicaciones punto a punto o colectivas • Con MPI una aplicación ve su entorno como un grupo estático de procesos (world group) Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  21. 12. 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 Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  22. 12. Comunicadores • Para recibir un mensaje no siempre es necesario especificar el ‘rank’ de la fuente aunque si lo es para enviarlo • ‘context’ sirve para evitar conflictos entre el codigo de diferentes programadores. Se añade automaticamente • MPI_COMM_SELF es un comunicador que solo engloba a un solo miembro • MPI_COMM_PARENT engloba los grupos de un proceso y de su proceso padre Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  23. 13. Algunos Conceptos • Nodo origen • Nodo desde el que se invoca lamboot para portar LAM a todos los procesadores • Nodo local • Nodo desde el que se invoca un comando • Proceso LAM • Proceso enganchado al demonio LAM • Booting LAM • Lanzar demonios de control de proceso, control de entorno y paso de mensajes en cada nodo para crear entorno LAM/MPI antes de usar aplicaciones MPI Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  24. 13. Algunos Conceptos • Boot schema • Descripción de un multicomputador donde se va a lanzar LAM • Lista de nombres de host en los que se portará LAM • Esquema de aplicación • Conjunto de aplicaciones que serán lanzadas en cada nodo del multicomputador • Request Progression Interface (RPI) • Forma en que un mensaje progresa desde la fuente al destino • Tres maneras: TCP/IP, TCP/IP con memoria compartida con cerrojos y TCP/IP con SYSV con semáforos Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  25. 14. Estructura genérica de programa MPI • Incluir ficheros de cabecera MPI • Definiciones y prototipos de funciones específicas de MPI • Definir variables • Inicializar entorno MPI • Cada procesador llama a rutina MPI de inicialización • MPI_Init (int *argc, char **argv[]); • Funciones generales, llamadas a comunicaciones MPI • Cerrar comunicación MPI • Cada procesador llama a rutina MPI de finalización • MPI_Finalice (void); Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  26. 15. Clases de llamadas MPI • Inicializar, dirigir y finalizar comunicación • Iniciar y finalizar comunicación • Identificar número de procesos, qué proceso corre en cada procesador y crear subgrupos de procesadores • MPI_Init, MPI_Finalice • Comunicación punto a punto • MPI_Send, MPI_Recv • Comunicación colectiva • MPI_Bcast, MPI_Scatter, MPI_Gather, MPI_Reduce • Creación de tipos de datos • MPI_Type_struct Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  27. 16. Comunicación punto a punto • Un procesador envía y otro recibe • Comunicación elemental en MPI • Dos modos de comunicación • Bloqueante: La rutina de enviar o recibir no termina hasta que la operación se ha completado. Asegura que los datos llegan al receptor sin error. • No bloqueante: La función envía o recibe inmediatamente. El procesador puede hacer otras tareas durante el envío • Cuatro procedimientos para transmitir mensajes • Estándar, síncrono, buffered y ready Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  28. 16. 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 Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  29. 17. Comunicación colectiva • Comunicaciones de un procesador a varios y de varios procesadores a uno • Se reduce la posibilidad de error • Una llamada a una rutina colectiva reemplaza a varias llamadas a rutinas punto a punto • Código fuente más fácil de leer • Simplifica depuración y mantenimiento • Normalmente, la rutina colectiva es más rápida • Está más optimizada que su equivalente expresada por medio de rutinas punto a punto Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  30. 17. 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); • buf: localización en memoria de los datos • count: Número de datos del tipo indicado enviados • dtype: tipo de datos enviados • root: procesador fuente • comm: comunicador de envío Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  31. 17. Comunicación colectiva • Operación reduction • Un único proceso recoge datos de todos los procesos de un grupo y los combina según una operación aritmética • MPI_Reduce (void *sendbuf, void *recvbuf, int count, MPI_Datatype dtype, MPI_Op op, int root, MPI_Comm com); • sendbuf: localización en memoria de los datos • recvbuf: buffer donde se combinan los datos recibidos • count: número de datos del tipo indicado recibidos • dtype: tipo de datos recibidos • op: operación aritmética que se aplica a los datos recibidos • root: procesador destino • com: comunicador de recepción Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  32. 17. Comunicación colectiva • Operación scatter • Los datos de un procesador se dividen en N bloques (N nº de procesos), y se envían a cada proceso según orden de rank • MPI_Scatter (void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm); • Operación gather • Paso inverso, se agrupan los datos de todos los procesos y se envían a uno solo • MPI_Gather (void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm); Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  33. 18. Referencia de comandos LAM • Debemos establecer ciertas variables de entorno y caminos de búsqueda para el Shell, antes de correr LAM • Añadimos : • Setenv LAMHOME <directorio instalación LAM> • Set path = ($path $LAMHOME/bin) • Hay que tener en cuenta que el directorio donde estén los ejecutables de LAM necesitan estar en el path de todas la máquinas donde se vaya a usar LAM Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  34. 18. Referencia de comandos LAM • Crear fichero donde se listan las máquinas que participan en el cluster • A cada máquina se le da un nodo identificador (nodeid), que empieza con 0 para la primera máquina de la lista, 1 para la segunda, etc... • La herramienta reconv verifica los nodos del cluster • % reconv –v <boot schema> Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  35. 18. Referencia de comandos LAM • La herramienta lamboot inicializa LAM en el cluster especificado. La opción –v permite imprimir mensajes antes de cada paso dado. • % lamboot –v <boot schema> • Para comprobar que LAM está corriendo normalmente en el cluster: • % tping –c1 N Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  36. 18. Referencia de comandos LAM • La herramienta hcc invoca al compilador de C nativo (por ejemplo cc) y provee el path de los ficheros de cabecera, librerías y enlaces implícitos de LAM.La librería MPI se enlaza explícitamente: • % hcc –o progama programa.c -lmpi • Iniciamos una aplicación MPI invocando al comando mpirun. • Este comando provee la información sobre los nodos e identificadores de proceso necesarios para que los procesos se localicen entre si. Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  37. 18. Referencia de comandos LAM • La sintaxis para el comando mpirun es la siguiente • %mpirun –s <nodeid> <nodeids> -c<#> Programa • -s <nodeid> es el nodo donde se encuentra el ejecutable. Sin esta opción, LAM buscará el programa en el mismo nodo donde correrá. • <nodeids> son los nodos donde se ejecutará el programa. Sin esta opción, LAM usará todos los nodos. • -c <#> indica el número de procesos que se crearán. • Programa es el fichero ejecutable (incluido el path para llegar hasta el) Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  38. 18. Referencia de comandos LAM • Podemos monitorizar cierta información de los procesos MPI, en tiempo de ejecución, mediante los comandos: • Mpitask visualiza información sobre los procesos MPI, tal como los ranks (identificadores) de la fuente y el destino, el comunicador, y la función que se esta ejecutando • Mpimsg proporciona información sobre los mensajes que se envían, así como la cantidad y tipo de datos Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  39. 18. Referencia de comandos LAM • Mediante el comandolamclean, podemos eliminar todos los procesos y mensajes sin necesidad de abortar MPI. • % lamclean –v • Por último, la orden wipe elimina todos los procesos y demonios de LAM en las máquinas que estamos utilizando. • % wipe –v <boot schema> Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

  40. Gracias por vuestra atención ? Sistemas LAM/MPI Aitor Viana, Octavio Hombrados, Jesús López, Juan F. Ramos

More Related