Vous êtes sur la page 1sur 40

Arquitecturas Avanzadas

Sistemas LAM/MPI
(Local Area Multicomputer /
Message Passing Interface)
Aitor Viana Snchez
Octavio Hombrados
Juan F. Ramos
Jess Lpez Bustos

Contenido
1.
2.
3.
4.
5.
6.
7.
8.
9.

Introduccin
Qu es MPI?
Caractersticas de MPI
Cundo usar MPI?
Portabilidad de los programas
Qu es LAM? (Local Area Multicomputer)
Caractersticas de LAM
Local Area Multiprocesor (LAM)
Arquitectura de LAM

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

Contenido
10. Depurado en LAM
11. Implementacin MPI
12. Comunicadores
13. Algunos conceptos
14. Estructura genrica de programa MPI
15. Clases de llamadas MPI
16. Comunicacin punto a punto
17. Comunicacin colectiva
18. Comandos LAM

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

1. Introduccin
Actualmente surge la necesidad de resolver problemas
cada vez ms complejos, que son inabordables con la
tecnologa y capacidad de computadores actual
La solucin?
Programacin distribuida

De qu tecnologas disponemos?
Llamadas a procedimientos remotos (RPC)
Invocacin de mtodos remotos (RMI)
Paso de mensajes (MPI)
Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

1. Introduccin
Uno de los mtodos tradicionales y usuales es el paso de
mensajes (MPI)
Se basa, como todos los anteriores en la posibilidad
descomposicin de los problemas en problemas ms
pequeos
Dos tipos de descomposicin:
descomposicin de dominio
descomposicin funcional

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

2. Qu es MPI?
Es una implementacin de un estndar del modelo de
paso de mensajes
Atiende a una estructura SIMD
Imgenes del programa en cada mquina
Datos locales a cada maquina

Los datos se comparten por medio del paso de mensajes


Consiste en una serie de libreras C
Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

3. Caractersticas de MPI
Principalmente dirigido a proveer portabilidad del cdigo
fuente. No esta totalmente alcanzado todava
Ofrece gran funcionalidad
Diferentes tipos de comunicaciones
Soporta gran cantidad de tipo de datos
Soporta datos definidos por el usuario

Manejo de diferentes topologas

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

4. Cundo usar MPI?


Necesidad de crear aplicaciones que necesiten una gran
potencia de clculo
Abordar problemas inabordables con un solo procesador
Escribir cdigo paralelo portable
Alcanzar alto desarrollo de programacin paralela

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

5. Portabilidad de los programas


MPI se escribi con algunos puntos un poco perdidos
En teora las aplicaciones MPI se pueden compilar con cualquier
implementacin MPI existente, pero es posible que el
comportamiento sea ligeramente diferente

Necesidad de recursos que no estn garantizados por la


implementacin MPI

Como conclusin, no es totalmente portable

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

5. Portabilidad de los programas II


Aspectos a considerar debido a la variedad de
implementaciones MPI
Suponer buffering. No asumir que el envo de datos es tipo
buffer
Suponer sincronizacin de barrera para llamadas colectivas. En
MPI, la comunicacin colectiva es bloqueante, pero el programa
no debe depender del tipo de sincronizacin (en este caso
barrera)

Ambigedades en la comunicacin. Los mensajes enviados son


los que se espera recibir
Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

10

6. Qu es LAM? (Local Area Multicomputer)


Entorno de desarrollo de procesamiento paralelo
Pensado para redes de trabajo con computadores
independientes
Es una implementacin de la programacin estndar de
paso de mensajes (MPI)
LAM slo corre sobre mquinas UNIX conectadas a
travs de una LAN
Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

11

7. Caractersticas de LAM
Completa implementacin del estndar MPI
Extensas herramientas de monitorizacin y depuracin
Aadido y borrado de nodos
Mltiples protocolos de comunicacin (TCP, UDP)

Deteccin de fallo y recuperacin de nodo

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

12

8. Local Area Multiprocesor (LAM)


Entorno y sistema de desarrollo para procesamiento en
paralelo que trabaja sobre redes formadas por
procesadores independientes
Utiliza programacin estndar de paso de mensajes
(MPI)
LAM proporciona al usuario una librera API para el paso
de mensajes entre diferentes nodos que colaboran para
la realizacin de una aplicacin 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, Jess Lpez, Juan F. Ramos

13

8. Local Area Multiprocesor (LAM)


Las diferentes mquinas pueden conectarse a travs de
una red de rea local o a travs de Internet
Caractersticas:
Completa implementacin del estndar 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 libreras adicionales MPI para la programacin LAM
Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

14

8. Local Area Multiprocesor (LAM)


La comunicacin entre las aplicaciones se realiza de
forma directa

Soporta diversos protocolos para realizar esta


comunicacin
Objetos bsicos que forman un multicomputador LAM:
Los computadores fsicos 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, Jess Lpez, Juan F. Ramos

15

9. Arquitectura de LAM
En cada mquina 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, Jess Lpez, Juan F. Ramos

16

9. Arquitectura de LAM
Arrancar y cerrar LAM slo es necesario una vez por
sesin.
La compilacin 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, Jess Lpez, Juan F. Ramos

17

10. Depurado en LAM


Desde cualquier mquina que forme parte del entorno
LAM es posible:
Ejecutar, detener y reanudar programas residentes en cualquier
otra maquina
Monitorizar mensajes
Manipular el tamao de los buffers
Observar retardos y tiempos de ejecucin

Estos servicios se pueden llevar a cabo mediante libreras


o mediante aplicaciones que funcionan en cualquier shell

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

18

11. Implementacin MPI


Sincronizacin 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 cdigo de usuario

Los programas MPI desarrollados con LAM son portables


a cualquier otra plataforma que soporte MPI
Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

19

12. Comunicadores
Proveen toda la informacin necesaria para el paso de
mensajes
Al enviar y recibir los comunicadores deben coincidir para
que tenga lugar la comunicacin
Son un argumento necesario para comunicaciones punto
a punto o colectivas
Con MPI una aplicacin ve su entorno como un grupo
esttico de procesos (world group)
Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

20

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, Jess Lpez, Juan F. Ramos

21

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 aade 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, Jess Lpez, Juan F. Ramos

22

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, Jess Lpez, Juan F. Ramos

23

13. Algunos Conceptos


Boot schema
Descripcin de un multicomputador donde se va a lanzar LAM
Lista de nombres de host en los que se portar LAM

Esquema de aplicacin
Conjunto de aplicaciones que sern 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 semforos

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

24

14. Estructura genrica de programa MPI


Incluir ficheros de cabecera MPI
Definiciones y prototipos de funciones especficas de MPI

Definir variables
Inicializar entorno MPI
Cada procesador llama a rutina MPI de inicializacin
MPI_Init (int *argc, char **argv[]);

Funciones generales, llamadas a comunicaciones MPI


Cerrar comunicacin MPI
Cada procesador llama a rutina MPI de finalizacin
MPI_Finalice (void);

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

25

15. Clases de llamadas MPI


Inicializar, dirigir y finalizar comunicacin
Iniciar y finalizar comunicacin
Identificar nmero de procesos, qu proceso corre en cada
procesador y crear subgrupos de procesadores
MPI_Init, MPI_Finalice

Comunicacin punto a punto


MPI_Send, MPI_Recv

Comunicacin colectiva
MPI_Bcast, MPI_Scatter, MPI_Gather, MPI_Reduce

Creacin de tipos de datos


MPI_Type_struct

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

26

16. Comunicacin punto a punto


Un procesador enva y otro recibe
Comunicacin elemental en MPI
Dos modos de comunicacin
Bloqueante: La rutina de enviar o recibir no termina hasta que
la operacin se ha completado. Asegura que los datos llegan
al receptor sin error.
No bloqueante: La funcin enva o recibe inmediatamente. El
procesador puede hacer otras tareas durante el envo

Cuatro procedimientos para transmitir mensajes


Estndar, sncrono, buffered y ready

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

27

16. Comunicacin 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: localizacin en memoria de los datos
count: Nmero de datos del tipo indicado enviados o recibidos
dtype: tipo de datos enviados o recibidos
dest/source: procesador destino/fuente
tag: etiqueta de comunicacin
comm: comunicador de envo o recepcin
status: cdigo de retorno de la operacin de recepcin

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

28

17. Comunicacin 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

Cdigo fuente ms fcil de leer


Simplifica depuracin y mantenimiento

Normalmente, la rutina colectiva es ms rpida


Est ms optimizada que su equivalente expresada por medio
de rutinas punto a punto

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

29

17. Comunicacin colectiva


Operacin broadcast
Un nico proceso enva 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: localizacin en memoria de los datos
count: Nmero de datos del tipo indicado enviados
dtype: tipo de datos enviados
root: procesador fuente
comm: comunicador de envo

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

30

17. Comunicacin colectiva


Operacin reduction
Un nico proceso recoge datos de todos los procesos de un
grupo y los combina segn una operacin aritmtica
MPI_Reduce (void *sendbuf, void *recvbuf, int count,
MPI_Datatype dtype, MPI_Op op, int root, MPI_Comm com);
sendbuf: localizacin en memoria de los datos
recvbuf: buffer donde se combinan los datos recibidos
count: nmero de datos del tipo indicado recibidos
dtype: tipo de datos recibidos
op: operacin aritmtica que se aplica a los datos recibidos
root: procesador destino
com: comunicador de recepcin

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

31

17. Comunicacin colectiva


Operacin scatter
Los datos de un procesador se dividen en N bloques (N n de
procesos), y se envan a cada proceso segn orden de rank
MPI_Scatter (void *sendbuf, int sendcount, MPI_Datatype
sendtype, void *recvbuf, int recvcount, MPI_Datatype
recvtype, int root, MPI_Comm comm);

Operacin gather
Paso inverso, se agrupan los datos de todos los procesos y se
envan 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, Jess Lpez, Juan F. Ramos

32

18. Referencia de comandos LAM


Debemos establecer ciertas variables de entorno y
caminos de bsqueda para el Shell, antes de correr LAM
Aadimos :
Setenv LAMHOME <directorio instalacin LAM>
Set path = ($path $LAMHOME/bin)

Hay que tener en cuenta que el directorio donde estn


los ejecutables de LAM necesitan estar en el path de
todas la mquinas donde se vaya a usar LAM
Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

33

18. Referencia de comandos LAM


Crear fichero donde se listan las mquinas que participan
en el cluster
A cada mquina se le da un nodo identificador (nodeid),
que empieza con 0 para la primera mquina 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, Jess Lpez, Juan F. Ramos

34

18. Referencia de comandos LAM


La herramienta lamboot inicializa LAM en el cluster
especificado. La opcin 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, Jess Lpez, Juan F. Ramos

35

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, libreras y enlaces implcitos de LAM. La librera
MPI se enlaza explcitamente:
% hcc o progama programa.c -lmpi

Iniciamos una aplicacin MPI invocando al comando

mpirun.

Este comando provee la informacin sobre los nodos e


identificadores de proceso necesarios para que los procesos se
localicen entre si.
Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

36

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 opcin, LAM buscar el programa en el mismo nodo
donde correr.
<nodeids> son los nodos donde se ejecutar el programa. Sin
esta opcin, LAM usar todos los nodos.
-c <#> indica el nmero de procesos que se crearn.
Programa es el fichero ejecutable (incluido el path para llegar
hasta el)
Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

37

18. Referencia de comandos LAM


Podemos monitorizar cierta informacin de los
procesos MPI, en tiempo de ejecucin, mediante
los comandos:
Mpitask visualiza informacin sobre los procesos
MPI, tal como los ranks (identificadores) de la fuente y
el destino, el comunicador, y la funcin que se esta
ejecutando

Mpimsg proporciona informacin sobre los mensajes


que se envan, as como la cantidad y tipo de datos
Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

38

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 mquinas que estamos
utilizando.
% wipe v <boot schema>
Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

39

Gracias por vuestra atencin

Sistemas LAM/MPI

Aitor Viana, Octavio Hombrados, Jess Lpez, Juan F. Ramos

40