La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Aitor Viana Sánchez Octavio Hombrados Juan F. Ramos Jesús López Bustos

Presentaciones similares


Presentación del tema: "Aitor Viana Sánchez Octavio Hombrados Juan F. Ramos Jesús López Bustos"— Transcripción de la presentación:

1 Aitor Viana Sánchez Octavio Hombrados Juan F. Ramos Jesús López Bustos
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

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 local Proceso LAM Booting LAM
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 Esquema de aplicación
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 comando lamclean, 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


Descargar ppt "Aitor Viana Sánchez Octavio Hombrados Juan F. Ramos Jesús López Bustos"

Presentaciones similares


Anuncios Google