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

Post on 01-Jan-2016

47 views 1 download

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

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

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

Algunas referencias

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

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

4

Soporte a MPI

• Aspectos Generales sobre MPI y computación paralela en

• Soporte a MPI en el Grid• Ejemplos

Grids & e-Science 2009. UIMP. Santander 5

Ejecución batch monoproceso en Grids

Resource Resource

Middleware Middleware

UserInterface

GlobalServices

Job

Inp. files

GridScheduler

Grids & e-Science 2009. UIMP. Santander 6

Resource Resource

Middleware Middleware

UserInterface

GlobalServices

Job

Inp. files

GridScheduler

Ejecución batch monoproceso 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

Grids & e-Science 2009. UIMP. Santander 8

Resource Resource

Middleware Middleware

UserInterface

GlobalServices

GridScheduler

Outputfiles

Ejecución batch monoproceso 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

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

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?

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

¿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

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]

Ejemplo ALENIATAO para las máquinas APE

APE100en DESY

Ejemplo ALENIATAO para las máquinas APE

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

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

¿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.

¿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

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”

• 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

• 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

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

• 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

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

MPI: Hello World

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

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 )

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()

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

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

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

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

Sistemas, Hardware y MPI

Configuración típica de un cluster

Sw

itch

Nodos secuenciales Nodos Paralelos

Switch

Red Interna Red exterior

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

?

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

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

Red Myrinet

Grids & e-Science 2009. UIMP. Santander 41

MareNostrum: Myrinet Express

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

Arquitectura de Infiniband

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

Integración de Infiniband

Ejemplo de Hardware Infiniband

Hardware Infiniband

Comparación de latencias entre Infiniband y Gigabit Ethernet

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

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

MPI en el GRID

Grids & e-Science 2009. UIMP. Santander 51

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

• 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

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

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

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!

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”};

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

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

Arquitectura de mpi-start

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

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

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

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

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

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

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

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

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

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