middleware avanzado soporte a computación paralela mpi soporte a interactividad en grids
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 PresentationTRANSCRIPT
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