Middleware Avanzado Soporte a Computación Paralela MPI Soporte a Interactividad en Grids

70
Middleware Avanzado Soporte a Computación Paralela MPI Soporte a Interactividad en Grids Dra. Isabel Campos Plasencia Científico Titular del CSIC Instituto de Física de Cantabria

description

Middleware Avanzado Soporte a Computación Paralela MPI Soporte a Interactividad en Grids. Dra . Isabel Campos Plasencia Científico Titular del CSIC Instituto de Física de Cantabria. Temas a tratar. Conceptos básicos de computación Grid ✔ Middleware de gLite ✔ - PowerPoint PPT Presentation

Transcript of Middleware Avanzado Soporte a Computación Paralela MPI Soporte a Interactividad en Grids

Page 1: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Middleware AvanzadoSoporte a Computación Paralela MPI

Soporte a Interactividad en Grids

Dra. Isabel Campos PlasenciaCientífico Titular del CSIC

Instituto de Física de Cantabria

Page 2: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

2

Temas a tratar

• Conceptos básicos de computación Grid ✔• Middleware de gLite ✔• Introducción y estado del arte

– La necesidad de ir más allá de glite• Soporte a MPI en Grids

– Intra-cluster MPI– Inter-cluster MPI

• Interactividad– glogin / i2glogin

• Ejercicios prácticos

Page 3: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Algunas referencias

gLite: http://www.cern.ch/glite

Desarrollo de middleware avanzado sobre glite:http://www.i2g.eu

Page 4: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

4

Soporte a MPI

• Aspectos Generales sobre MPI y computación paralela en

• Soporte a MPI en el Grid• Ejemplos

Page 5: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Grids & e-Science 2009. UIMP. Santander 5

Ejecución batch monoproceso en Grids

Resource Resource

Middleware Middleware

UserInterface

GlobalServices

Job

Inp. files

GridScheduler

Page 6: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Grids & e-Science 2009. UIMP. Santander 6

Resource Resource

Middleware Middleware

UserInterface

GlobalServices

Job

Inp. files

GridScheduler

Ejecución batch monoproceso en Grids

Page 7: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Grids & e-Science 2009. UIMP. Santander 7

Resource Resource

Middleware Middleware

UserInterface

GlobalServices

Job

Inp. files

GridScheduler

Ejecución batch monoproceso en Grids

Page 8: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Grids & e-Science 2009. UIMP. Santander 8

Resource Resource

Middleware Middleware

UserInterface

GlobalServices

GridScheduler

Outputfiles

Ejecución batch monoproceso en Grids

Page 9: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Grids & e-Science 2009. UIMP. Santander 9

Pero…

• Los usuarios necesitan más capacidad de computación

– Usando más de un core por ejecución– Usando más de un site por ejecución incluso

Ejecución paralela de aplicaciones

• Los trabajos paralelos usan más de un core• ¿Cómo usarlos de manera eficiente?

– Shared memory: todos los cores acceden a un área común de la memoria para acceder a los datos

– Message Passing: los cores se intercambian mensajes con los datos

Page 10: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Grids & e-Science 2009. UIMP. Santander 10

Trabajos paralelos

• Los trabajos paralelos usan más de un core• ¿Cómo usarlos de manera eficiente?

– Shared memory: todos los cores acceden a un área común de la memoria para acceder a los datos

– Message Passing: los cores se intercambian mensajes con los datos

– Cómo especificar cores/procesador en los procesadores multicore

• Ejecuciones mixtas MPI/OpenMP

Page 11: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Introducción y Contexto

• High throughput computing (HTC)

– Se utilizan muchos recursos computacionales durante largos periodos de tiempo

• Acceso a mucho tiempo de cpu

promedio durante largos periodos de tiempo (meses)

• Optimizar el número de trabajos ejecutados por unidad de tiempo.

• Computación en modo granja, o procesos independientes

– El Grid se diseñó con la idea de ser una fuente de HTC

• High performance computing (HPC)

– Disponer simultaneamente de una gran cantidad de recursos computacionales

– Lo importante es que la aplicación se ejecute en el menor tiempo posible.

– Para ello es necesario que los procesadores individuales que participan en el cálculo cooperen

¿Cómo hacer que los procesadores cooperen?

Page 12: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Computación paralela

• Ejecución simultánea de una misma tarea• Dividida y adaptada al entorno de computación • Obtener los resultados de una forma más rápida

Page 13: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

¿Cómo hacer que los procesadores cooperen?

• En principio dependerá de la arquitectura del sistema y del procesador

– Cada fabricante de hardware tenía su propia forma• Librerías específicas• Lenguajes específicos: Apesse, Occam, etc…

– Ventajas• Se obtiene el mejor rendimiento posible de cada plataforma

– Inconvenientes• No es portable. Repetir el mismo esfuerzo de programación para cada

arquitectura.• A veces era necesario un conocimiento profundo del hardware de la máquina

Page 14: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Ejemplo INMOSMáquinas basadas en transputers: Occam

WHILE next <> EOF SEQ x := next PAR in ? next out ! x * x

CHAN OF [36]BYTE messageCHAN OF COMPLEX32 imp CHAN OF INT::[]BYTE link

message ! “Hello, World!”link ! len::[buffer FROM start]

Page 15: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Ejemplo ALENIATAO para las máquinas APE

APE100en DESY

Page 16: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Ejemplo ALENIATAO para las máquinas APE

Page 17: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Message Passing Interface (MPI) Forum

En 1992 se creo el MPI Forum para tratar crear una prescripción independiente del sistema y del procesador

• Ver información en http://www.mpi-forum.org• Participan los más representativos fabricantes de hardware (IBM, Intel, HP, AMD,…) junto

con investigadores en ciencia computacional de todo el mundo

• Objetivos del MPI Forum

– Definir un interfaz de programación (API) uniforme– Enfocado a conseguir una comunicación entre procesos lo más eficiente

posible– Asumiendo que el interfaz de comunicación hardware es fiable– Permita la programación en C y en Fortran de forma cómoda para el usuario

Page 18: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Evolución del trabajo del MPI Forum

• 1994 release de MPI 1.0– Release inicial

• 1995 release of MPI 1.1• 1997

– Release de MPI 1.2– Release de MPI 2.0

• Futuro– Hacia el MPI 3.0

Comunicaciones Point-to-point Operaciones Collectiva Topologías Manejo de las tipologías de datos

Input/Output de ficheros Comunicaciones one-sided Extensión de macros para C++ y

F90

MPI - 1 MPI - 2

Page 19: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

¿Qué es MPI ?

• Es la especificación de un interfaz de programación (API): Define la forma del Interfaz y su semántica

• MPI es vendor neutral y (de facto) Standard• MPI lo define el MPI-Forum• MPI especifica la forma de los interfaces para C, C++ y Fortran

70/90• MPI no está acabado. Hay un progreso continuado hacia

nuevas versiones.

Page 20: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

¿Qué NO es MPI ?

• MPI no es Magia

“He instalado XXX-MPI in 4 de mis maquinas y mi aplicación no seejecuta más rápido !?!” (pregunta típica)

• MPI no es una implementación de nada, es sólo un estándar

– OpenMPI, MPICH, LAMMPI son implementaciones del estándar MPI

• MPI no es el Santo Grial

– Hay muchos problemas cuya solución no se adecúa al paradigma de paso de mensajes entre procesos

– Es muy fácil escribir una aplicación MPI cuyo rendimiento sea peor que su versión secuencial

– MPI funciona bien en sistemas de memoria compartida pero, tal vez Open MP es mejor solución, dependiendo del problema

Page 21: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Conceptos básicos• Todas las funciones/símbolos MPI functions/symbols

contienen el prefijo “MPI_”– Para usar MPI en los programa en C hay que incluir mpi.h– Para usar MPI en Fortran hay que incluir mpif.h

• La compilación y linkado es dependiente de la implementación– Las implementaciones más populares de MPI

ofrecen al usuario compiladores preparados• mpicc, mpicxx, mpiCC, mpif70, ....• Cargan automaticamente los flags y las librerías

necesarias• Tipicamente en un Makefile se sustituye el nombre del

compilador– “mpicc” en lugar de “gcc”

Page 22: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

• En el paradigma MPI la ejecución de un binario (ej. una aplicación) se divide en N partes, denominadas procesos– Los procesos a su vez están agrupados en grupos – Cada proceso dentro un grupo está identificado por un número, el rango (rank) del proceso– Rank = 0,…,(N-1)

MPI: Grupos y procesos

Page 23: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

• Notar la diferencia entre Proceso y Procesador

– Un mismo procesador puede ejecutar varios procesos

• Cada proceso puede en principio ejecutar un binario diferente– MIMD (multiple instruction multiple data)

• En general es siempre el mismo binario el que ejecuta código diferente basándose en su rango

• El caso más común es que todos los procesos ejecuten el mismo binarioCPU1 CPU2

CPU3 CPU4

mpirun –np 8 –machinefile hostnames.txt

./miprog

Genera 8 procesos elementalesDistribuídos entre 4 CPUs

Ejemplo: Distribución de 8 procesosen 4 procesadores

MPI: Grupos y Procesos

Page 24: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Grids y e-Ciencia 2008, IFIC Valencia

• Notar la diferencia entre Proceso y Procesador

– Un mismo procesador puede ejecutar varios procesos

• Cada proceso puede en principio ejecutar un binario diferente– MIMD (multiple instruction multiple data)

• En general es siempre el mismo binario el que ejecuta código diferente basándose en su rango

• El caso más común es que todos los procesos ejecuten el mismo binario

0 1 2 3

4 5 6 7

Ejemplo: Distribución de 8 procesosen 4 procesadores

Master

MPI: Procesos

Page 25: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

• Un comunicador es el objeto que sirve para comunicar (~ socket)– Un grupo – Un contexto de comunicación

• Los contextos son únicos• Dividen toda la comunicación MPI en espacios

disjuntos

MPI: Comunicadores

Page 26: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Comunicadores predefinidos• MPI_COMM_WORLD

– Envuelve a todos los procesos de la ejecución MPI

• MPI_COMM_SELF– Envuelve solo a los procesos que

están en un determinado contexto• MPI_COMM_NULL

– Ningún proceso• El usuario puede crear sus propios

comunicadores de acuerdo a las necesidades del programa

Funciones importantes• MPI_comm_size

– Devuelve el número de procesos en el grupo• MPI_comm_rank

– Devuelve el rango del proceso que hace la llamada• MPI_comm_free

– Elimina un comunicador

MPI: Comunicadores predefinidos

Page 27: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

MPI: Hello World

Page 28: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Comentarios• MPI_Init

– Inicializa el sistema MPI– Es necesario llamarlo al principio del programa, antes de invocar ninguna otra función MPI

• MPI_Finalize

– Deshabilita el sistema MPI– Tras esta llamada no se puede llamar a MPI

• Las funciones MPI devuelven siempre un código de error que se puede chequear

MPI: Hello World

Page 29: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Tipos de comunicación: punto-a-punto

• Intercambio de datos entre dos procesos

– Se produce mediante el envío de un mensaje

– El proceso fuente envía el mensaje– El proceso receptor tiene que

recibirlo (activamente)

int MPI_Send(void *buf, int count, MPI_Datatype datatype,int dest, int tag, MPI_Comm comm);

int MPI_Recv(void *buf, int count, MPI_Datatype datatype,int source, int tag, MPI_Comm comm, MPI_Status *status )

Page 30: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Tipos de comunicación: punto-a-punto

• *buf: puntero a los datos a enviar• count: número de elementos a • enviar• datatype: tipo de dato• dest: Identificación del proceso • destino• tag: etiqueta de la comunicación• comm: Identificación del comunicador

• *buf: puntero para la recepción de los datos• count: número de elementos• datatype: tipo de dato• source: Identificación del proceso origen• tag: etiqueta de la comunicación• comm: Identificación del comunicador• *status: puntero para acceso a información

sobre mensaje

Envío: MPI_Send()

Recepción: MPI_Recv()

Page 31: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

MPI_Bcast() Un proceso distribuye un mismo dato al resto de los procesos

MPI_Scather() Un proceso distribuye datos al resto de los procesos particionando

MPI_Gather() Un proceso recoge datos de varios procesos

Tipos de comunicación: Colectivas

Page 32: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Tipos de comunicación: Colectivas

• MPI_ReduceRealiza una operación matemática distribuida y se devuelve el resultado al root de la operación

El programador puede añadir sus propias operaciones

Ejemplos de funciones empleadas en operaciones colectivas:

MPI_MAXMPI_MIN MPI_SUMMPI_PROD MPI_LAND logical AND integer logical MPI_BAND bit-wise AND integer, MPI_BYTE integer, MPI_BYTE MPI_LOR logical OR integer logical MPI_BOR bit-wise OR integer

Page 33: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Char msg[100]; if(my_rank==source) {

sprintf(msg,"\n Esto es un mensaje del proceso %d a todos los demás",source); MPI_Bcast(msg,100,MPI_CHAR,source,MPI_COMM_WORLD);

printf("\n Mensaje enviado a todos desde %d",source); } else { MPI_Bcast(msg,100,MPI_CHAR,source,MPI_COMM_WORLD); printf("\n Mensaje recibido en %d desde %d",my_rank,source); printf(msg); }

Ejemplo MPI_Bcast

Page 34: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

int value; int result;

value = my_rank; MPI_Reduce(&value,&result,1,MPI_INT,MPI_SUM,source,MPI_COMM_WORLD);

if(my_rank==source) { printf("\n Resultado de la suma colectiva %d", result); }

Ejemplo MPI_Reduce

Page 35: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Sistemas, Hardware y MPI

Page 36: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Configuración típica de un cluster

Sw

itch

Nodos secuenciales Nodos Paralelos

Switch

Red Interna Red exterior

Page 37: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Importancia de la intranet en el cluster

Durante el cálculo necesitan intercambiar datos a travésde la red de procesadores que conforma el cluster

¿ Cuánto y con qué Frecuencia necesita el programa comunicar ?

Cantidad Frecuencia

Ancho de Banda Latencia

La respuesta fija los parametros de la RED

que necesitamos

MB/s

?

Page 38: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Alternativas hardware para MPI

I. Gigabit Ethernet (GE) Latencias del orden de los 100 microseg. Ancho de Banda en el rango 50-100 MB/s Precio: 80 € /puerto + Switch ( > 1500 €)

II. Myrinet 2000 Latencias entorno a 10 microseg. Ancho de Banda entorno a 300 MB/s Precio: 1200 € por tarjeta + Switch (~ 12,000 / 32 puertos)

III. Infiniband Latencias entorno a 5 microseg. Ancho de Banda entorno a 1GB/s Precio: ~ 10,000 € / 24 puertos

Page 39: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Red Myrinet• Componentes de una red Myrinet (Myrinet 2000)

Cada nodo tiene una tarjeta PCI-X con una o dos conexiones (490MB/s y 900 MB/s respectivamente)Las tarjetas se conectan con un cable Myrinet (fibra óptica) a un switch multi-puerto (hasta 32 puertos por switch).Para redes mayores: combinaciones de switches (Myrinet Network in a box)

• Software Myrinet (libre) Detecta la red Myrinet presente de manera automática (no hay que configurar el switch)GM: software de paso de mensajes de bajo nivel sobre el que funcionan aplicaciones de alto nivel como MPI

• Myrinet Express (MX) Conectado a un slot PCI-Express

Page 40: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Red Myrinet

Page 41: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Grids & e-Science 2009. UIMP. Santander 41

MareNostrum: Myrinet Express

Page 42: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Red Infiniband

Tecnología que trata de dar respuesta a las necesidades de I/O Compartidas en clusters de ordenadores conectados a Storage

Area Networks desconectar el I/O al exterior, del resto deprocesos de la máquina

Page 43: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Arquitectura de Infiniband

Page 44: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Infiniband

Pentium 4

System Logic

South Bridge

HCA

SwitchIB

SystemBus

HubLink

SlotPCI-X

@ 25Gb/s

@ 8Gb/s

@ 8Gb/s

4X IB@ 20Gb/s

Pentium 4

System Logic

South Bridge

HCA

SwitchIB

@ 25Gb/s

@ 20Gb/s

@ 20Gb/s

4X IB@ 20Gb/s

Pentium 4

System Logic

I/O BridgeCon HCA

SwitchIB

@ 25Gb/s

@ 80 Gb/s

12X IB@ 60Gb/s

PCIExpress

PCIExpress

PCIExpress

Page 45: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Integración de Infiniband

Page 46: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Ejemplo de Hardware Infiniband

Page 47: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Hardware Infiniband

Page 48: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Comparación de latencias entre Infiniband y Gigabit Ethernet

Page 49: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Comparación de Anchura de Banda entre Infiniband y Gigabit Ethernet

Page 50: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Puntos importantes• Los ordenadores paralelos dedicados a un problema

específico han pasado a la historia– La existencia de un hardware de interconexión asequible y de MPI

como protocolo de comunicación independiente del Hardware ha simplificado la situación

• Clusters Linux del orden de 1000 cores con tecnología de intranet tipo infiniband existen en muchos centros de investigación de tamaño medio y grande

• Las aplicaciones MPI se pueden catalogar según la intensidad del uso del switch de intranet. Hay dos límites:

– Aplicaciones MPI modo granja (procesos practicamente desacoplados)

– Aplicaciones MPI intensivas en comunicación

Page 51: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

MPI en el GRID

Grids & e-Science 2009. UIMP. Santander 51

Page 52: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Soporte a MPI en el Grid¿Porqué?

• Muchas áreas de aplicaciones requieren soporte a MPI

– Ciencias de la tierra, fusion, astrofísica, Química Computacional…– Se pueden obtener resultados significativos usando 10s-100s of

CPUs

• Muchos clusters de hecho están listos para usar MPI

– En modo local mediante envío directo– Sistemas de ficheros compartidos, intranets de alto rendimiento

• Es necesario proveer de ese acceso a través del middleware Grid

Page 53: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

• Muchas áreas de aplicaciones requieren soporte a MPI

– Ciencias de la tierra, fusion, astrofísica, Química Computacional…– Se pueden obtener resultados significativos usando 10s-100s of

CPUs

• Muchos clusters de hecho están listos para usar MPI

– En modo local mediante envío directo– Sistemas de ficheros compartidos, intranets de alto rendimiento

• Es necesario proveer de ese acceso a través del middleware Grid

Soporte a MPI en el Grid¿Porqué?

Hay muchos factores a la hora de dar soporte a

trabajos MPI que se han solucionado a nivel de clusters

individuales y SuperComputers, etc… que tienen que ser

reanalizados cuando se quiere implementar MPI

en el Grid

Page 54: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Problemas a resolver

• MPI no establece un standard de cómo iniciar un programa

– No hay una sintaxis común para mpirun

– MPI-2 define mpiexec como mecanismo de lanzamiento, pero el soporte a mpiexec es opcional en todas las implementaciones

– Los Brokers tienen que manejar distintas implementaciones MPI: MPICH, OpenMPI, LAMMPI,

– Schedulers distintos (PBD, SGE,…) y distintas implementaciones MPI en cada site tienen distintas maneras de especificar el fichero machinefile

Sistemas de ficheros no compartidos

Muchos sites no tienen soporte a sistemas de ficheros compartidos

Muchas implementaciones MPI esperan encontrar el ejecutable en el nodo donde se ejecuta el proceso

En general el setup es muy variado

No es un entorno homogéneo

Page 55: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

OpenMPINon-shared dirSGE

MPICH-GMGPFSLoadLeveler

OpenMPI-IBNFS dirsPBS

CE

CE

CE

Workload Management SystemFeed by Grid Info System

JobType=mpich-gm

Situación típica en el Grid

Page 56: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

El lenguaje del Grid Scheduler tiene que ser traducido a la sintaxis del scheduler local

CEWMSUI WN

Loca

l Sch

edul

er

Gen

eral

Grid

Sch

edul

er

Translate?NO

WMS cannot be updatedoften without compromising

the whole job submissionprocedure

Translate?YES, but how?

Translate?NO,Of course!

Page 57: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Ejemplo con Sun Grid Engine

#/bin/sh#$ -o $HOME/mydir/myjob.out#$ -N myjob#$ -pe mpi 4. /etc/profile.sge. /etc/mpi.setup –e mpicd mydirmpirun –np 4 ./myprog

nodo1 1nodo2 1nodo3 1nodo4 1

Executable = “myprog”;Arguments = “arguments”;JobType = “MPI”;ProcNumber = 4;StdOutput = “std.out”;StdError = “std.err”;InputSandBox = {“myprog”};OutputSandBox = {“std.out”, ¨ “std.err”};

Page 58: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Diseño de una capa de software intermedio: Objetivos

MPI-START

• Especificar un interface único a la capa superior de middleware para describir un trabajo MPI

• Ser capaz de dar soporte a implementaciones MPI distintas y nuevas, sin tener que cambiar el middleware del Grid

• Soportar las operaciones básicas de distribución de ficheros• Dar soporte al usuario para manejar sus datos pre- y post-run

Page 59: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Consideraciones de diseño de mpi-start

• Portable– MPI-START debe ser capaz de ejecutarse bajo cualquier sistema operativo que soporte el middleware

• Script en bash• Arquitectura modular y extensible

– Instalable como un Plugin– Independiente de path absolutos para poder adaptarse a las distintas configuraciones locales de los site

• Posibilidad de “inyección remota” con el trabajo– Dar al usuario cierta potencia de trabajo independiente del site

• Opciones de debug remoto avanzadas

Page 60: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Arquitectura de mpi-start

Page 61: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

MPI-Start for users

• Single interface for all parallel jobs:– No need to learn a different command line option every time a MPI

version changes– No need to learn how each scheduler manages the hosts

• Control of process mapping:– One process per host– N processes per host – K total processes

• File distribution– No need to worry (much) about shared or not filesystems

• Customizable with hooks – Compilation– input preparation – management of output

11 Apr 2011 EGI UF, Vilnius 2011 61

Page 62: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

MPI-Start for admins

• Single interface for all parallel jobs:– No need to configure a different Execution

Environment / Run Time Environment for each type of job

• Easy to deploy for admins without much experience:– Default MPI installations paths for SL5(current target

for EMI) installations detected– Yaim module for configuration

• Customizable with hooks for sites with specific requirements

11 Apr 2011 EGI UF, Vilnius 2011 62

Page 63: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

MPI-Start flow

EGI UF. Vilnius, Apr 2011. 63

Do we have a scheduler plugin for the current environment?

Trigger pre-run hooks

Ask Scheduler plugin for a machinefile in default format

Activate MPI Plugin

Start mpirun

Do we have a plugin for the selected MPI?

Prepare mpirun

Trigger post-run hooks

START

EXITDump Env

NO

NO

Scheduler Plugin

Execution Plugin

Hooks Plugins

Page 64: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Using MPI-Start: variables

VARIABLE MEANING

I2G_MPI_APPLICATION The application binary to execute.

I2G_MPI_APPLICATION_ARGS The command line parameters for the application

I2G_MPI_TYPE The name of the MPI implementation to use.

I2G_MPI_VERSION

Specifies the version of the MPI implementation specified by I2G_MPI_TYPE. If not specified the default version will be used.

I2G_MPI_PRE_RUN_HOOK This variable can be set to a script which must define the pre_run_hook function.

I2G_MPI_POST_RUN_HOOK This variable can be set to a script which must define the post_run_hook function

EGI UF. Vilnius, Apr 2011. 64

Page 65: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Using MPI-Start: variables

VARIABLE MEANING

I2G_MPI_START_VERBOSE Set to 1 to turn on the additional output.

I2G_MPI_START_DEBUG Set to 1 to enable debugging output

I2G_MPI_START_TRACE Set to 1 to trace every operation that is performed by mpi-start

I2G_MPI_APPLICATION_STDIN Standard input file to use.

I2G_MPI_APPLICATION_STDOUT

Standard output file to use.

I2G_MPI_APPLICATION_STDERR

Standard error file to use.

I2G_MPI_SINGLE_PROCESS Set it to 1 to start only one process per node.

I2G_MPI_PER_NODE Number of processes to start per node.

I2G_MPI_NP Total number of processes to start.

EGI UF. Vilnius, Apr 2011. 65

Page 66: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

gLite

InformationIndex

ReplicaManager

SERVICES

Roaming AccessServer

CrossBroker

CE

WN

CE

WN

Internet

gLite

MPI-start invocationMigratingDesktop

MPI Job Submission

Plugin

Web serverMatchmaking

MPI-start

Open - MPI

Funcionamiento de MPI-START intra-cluster

Page 67: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

67

MPI inter-cluster: PACX-MPI

• PACX-MPI es un middleware para ejecutar MPI en una red de ordenadores paralelos– Lanza sub-trabajos MPI en cada– Los unifica en un único trabajo MPI (grande)

• PACX sigue el standard de MPI– Las aplicaciones solo necesitan ser recompiladas!

Cluster 1Open MPI (job)

Cluster 2Open MPI (job)

PACX MPI (job)

Application

Page 68: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

68

Pacx MPI comunicación entre procesos

• Pacx-MPI mapea los MPI “ranks” del trabajo grande a los procesos MPI que se ejecutan en cada cluster

• Pacx-MPI mapea dos procesos “ocultos” adicionales en cada cluster que son los usados para comunicar datos entre clusters– Rank 0 del trabajo MPI local es el “out” daemon– Rank 1 del trabajo MPI local es el “in” daemon

CE

Wo

rker

No

des

Wo

rker No

des

CE

35

24

2

3

4

5

Page 69: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

Grids & e-Science 2009. UIMP. Santander 69

Pacx MPI comunicación entre procesos

– Comunicación interna• La comunicación interna entre procesos ejecutandose en el mismo cluster

local se realiza a través de la implementación local MPI (optimizada)

– Comunicación externa• Envía mensaje al “out” daemon usando MPI local• El “out” daemon envía el mensaje al host de destino por la red usando TCP• El “in” daemon recibe el mensaje por TCP y lo envía a su destino usando el

MPI local.

CE

Wo

rker

No

des

Wo

rker No

des

CE

35

24

2

3

4

5

Page 70: Middleware  Avanzado Soporte  a  Computación Paralela  MPI   Soporte  a  Interactividad  en Grids

gLite

InformationIndex

ReplicaManager

SERVICES

Roaming AccessServer

CrossBroker

CE

WN

CE

WN

Internet

gLite

MPI-start invocationMigratingDesktop

MPI Job Submission

Plugin

Web serverStart up server

PACX MPI Coordination

MPI -start MPI-start

Open -MPI Open -MPI

PACX - MPI

Funcionamiento de MPI-START inter-cluster con PACX-MPI