Vous êtes sur la page 1sur 56

GRID Computing CARTIF

06 Junio 2007, Valladolid

Introduccin a MPI
David Rodrguez Gonzlez
Consejo Superior de Investigaciones Cientficas Instituto de Fsica de Cantabria, IFCA (Centro Mixto CSIC-Universidad de Cantabria) Santander ESPAA

Curso Grid Computing CARTIF Valladolid Junio 2006

Contenido
Introduccin
Modelos de computacin: HTC y HPC Computacin paralela Paradigma de paso de mensajes

El estndar MPI
Tipos de comunicacin Funciones bsicas y tipos de datos Algunas implementaciones

Introduccin a la programacin en MPI


Compilar y ejecutar programas MPI con MPICH Obtencin de informacin e intercambio de mensajes

MPICH-G2
Ejecucin de programas en el grid Una aplicacin ms compleja en grid (ANN).

Open MPI

Curso Grid Computing CARTIF Valladolid Junio 2006

INTRODUCCION

Curso Grid Computing CARTIF Valladolid Junio 2006

HTC y HPC
High throughput computing (HTC).
Se utilizan grandes cantidades de recursos computacionales durante largos periodos de tiempo.
Lo importante es conseguir una gran cantidad de tiempo de cpu de media durante mucho tiempo, no la respuesta rpida. Se lanzan muchos trabajos independientes, y se trata de optimizar el nmero de trabajos ejecutados por unidad de tiempo. Colas tipo Condor, PBS, LSF

Ejemplo: simulacin de sucesos en colisionadores de altas energas.

High performance computing (HPC).


Consiste en lograr disponer durante un periodo de tiempo corto de una gran cantidad de recursos computacionales. Lo importante es que la aplicacin se ejecute en el menor tiempo posible. Aplicaciones paralelas. Ejemplo: entrenamiento distribuido de una red neuronal artificial.
Curso Grid Computing CARTIF Valladolid Junio 2006

Computacin paralela
La que se realiza usando procesos separados. Interactan intercambiando informacin. Existen diversos tipos de computacin paralela. Todas usan distintos datos en cada proceso:
Paralelismo en los datos (data-parallel): Mismas operaciones en datos distintos. Tambin llamado SIMD (Single Instruction Multiple Data). Mquinas vectoriales. SPMD: Mismo programa, datos distintos. MIMD: Programas y datos diferentes.

SPMD y MIMD son esencialmente lo mismo porque cualquier programa MIMD puede implementarse como SPMD. MPI se utiliza principalmente para SPMD/MIMD. HPF (High Performance Fortran) es un ejemplo de una interfaz de programacin SIMD.

Curso Grid Computing CARTIF Valladolid Junio 2006

Por qu es necesaria la computacin paralela?


Lmites fsicos en la mejora de las mquinas. Los sistemas de alto rendimiento especializados resultan muy caros.
La computacin paralela en clusters de PCs resulta ms asequible. Y hace ms fcil compartir los recursos (como en el grid).

Muchos problemas pueden ser resueltos mucho ms rpidamente gracias a la paralelizacin. Sin embargo, esta no es siempre una buena solucin, depende mucho del tipo de problema a resolver.

Curso Grid Computing CARTIF Valladolid Junio 2006

Speedup
Speedup: es la medida de la mejora que se consigue al ejecutar un programa o algoritmo en varios procesadores de forma paralela, con respecto a lo que se tarda en un sistema uniprocesador. Entonces el speedup S es el cociente entre el tiempo secuencial ts y el tiempo en n procesadores tn: S = ts/tn Pero hay que tener en cuenta que no todo el cdigo de un programa es paralelizable. Ley Amdahl: da un lmite para el speedup S = (ts + tn)/(ts + tn/n)
Curso Grid Computing CARTIF Valladolid Junio 2006

EL ESTNDAR MPI

Curso Grid Computing CARTIF Valladolid Junio 2006

Paradigma de paso de mensajes


Probablemente ms extendido hoy da en programacin de aplicaciones paralelas. Consiste en una serie de procesos que interactan por medio de mensajes.
Cada proceso puede ejecutar cdigo distinto y sobre diferentes datos. El modelo de paso de mensajes es valido tanto para sistemas de memoria compartida como para sistemas de memoria distribuida (cluster & grid computing).

El intercambio de mensajes es cooperativo: los datos deben ser tanto enviados como recibidos explcitamente.
Esto supone una ventaja en cuanto a que la modificacin en la memoria del proceso es conocida por este.
Curso Grid Computing CARTIF Valladolid Junio 2006

MPI (Message Passing Interface)


Es una interfaz estndar (1993) para la programacin usando el paradigma de paso de mensajes. Sirve tanto para grandes computadores de memoria compartida, como para clusters o redes de ordenadores heterogneos (incluido el grid computing). Definida para C, C++ y FORTRAN. Comprende una gran cantidad de funciones (128), macros, etc. Pero con 6 funciones bsicas se puede empezar a programar usando MPI.
Curso Grid Computing CARTIF Valladolid Junio 2006

Implementaciones de MPI
Existen bastantes implementaciones del estndar MPI. Algunas son debidas a proveedores de hardware que las proporcionan (optimizadas) paras sus mquinas (IBM, HP, SGI), otras son desarrolladas en el mbito acadmico. Algunas implementaciones son:
MPICH (MPICH 2 implementa MPI2)
Disponible para mltiples devices incluido globus2.

LAM/MPI OpenMPI unin de varios proyectos (FT-MPI, LA-MPI, LAM/MPI, y PACX-MPI) . Ms detalles en la charla de Sven Stork el martes.

Curso Grid Computing CARTIF Valladolid Junio 2006

Uso de MPI
Se puede usar MPI para:
Programas paralelos portables. Libreras paralelas. Programas con relaciones entre datos irregulares o dinmicas que no se ajusten a un modelo de paralelismo en los datos.

Cuando no usar MPI:


Si se puede usar HPF o un programa paralelo Fortran 90. Si se pueden usar libreras de ms alto nivel (que pueden haber sido escritas usando MPI). Si no se necesita realmente el paralelismo

Curso Grid Computing CARTIF Valladolid Junio 2006

PROGRAMACIN MPI

Curso Grid Computing CARTIF Valladolid Junio 2006

MPI tipos de datos


Se definen los siguientes tipos de datos MPI:
MPI_CHAR MPI_SHORT MPI_INT MPI_LONG MPI_UNSIGNED_CHAR MPI_UNSIGNED_SHORT MPI_UNSIGNED MPI_UNSIGNED_LONG MPI_FLOAT MPI_DOUBLE MPI_LONG_DOUBLE MPI_BYTE MPI_PACKED

Corresponde a los de C, pero se aaden el tipo byte, y el empaquetado, que permite enviar simultneamente datos de distintos tipos.

Curso Grid Computing CARTIF Valladolid Junio 2006

MPI Funciones bsicas


Funciones bsicas:
MPI_Init => Inicializacin de MPI. MPI_Finalize => Termina MPI. MPI_Comm_size => Para averiguar el nmero de procesos. MPI_Comm_rank => Identifica el proceso. MPI_Send => Enva un mensaje. MPI_Recv => Recibe un mensaje.

Referencia del estndar en


http://www-unix.mcs.anl.gov/mpi/

Curso Grid Computing CARTIF Valladolid Junio 2006

Ejemplo Bsico: Hola Mundo


Escribir y Compilar el programa Hola Mundo usando MPICH. Ejecucin en un cluster. Ejecucin en el grid.

Curso Grid Computing CARTIF Valladolid Junio 2006

MPICH
MPICH es una implementacin gratuita de MPI 1.2
Implementa parte del nuevo estndar MPI-2 MPICH 2 implementa MPI-2

Es una implementacin muy portable:


Supercomputadores de memoria distribuida Sistemas de memoria compartida Clusters Grid

Esta se puede compilar para distintos devices de comunicacin. Consideraremos dos:


MPICH-P4
Device ch-p4 dirigido a redes de ordenadores.

MPICH-G2
Es una implementacin grid de MPICH mediante el device globus2 Completamente rediseada desde la anterior versin MPICH-G http://www3.niu.edu/mpi/

Curso Grid Computing CARTIF Valladolid Junio 2006

Escribiendo programas MPI


De las seis funciones bsicas que mencionamos antes MPI_Init y MPI_Finalize son imprescindibles para que haya un programa MPI. Veamos un ejemplo trivial
#include "mpi.h" #include <stdio.h> int main( int argc, char **argv ) { MPI_Init( &argc, &argv ); printf( "Hola Mundo\n" ); MPI_Finalize(); return 0; }

Curso Grid Computing CARTIF Valladolid Junio 2006

Programas MPI (compilacin)


El programa anterior solo inicializa y termina el entorno MPI. Entre tanto cada proceso imprime un mensaje por pantalla. Para un programa pequeo como este podemos hacer una llamada directamente al comando de compilacin:
mpicc (para programas C) mpif77 (Fortran 77). mpif90 (Fortran 90) mpiCC (C++)

Para aplicaciones ms complicadas conviene usar un Makefile. En nuestro caso anterior (fichero hello.c):
mpicc o hello hello.c
Curso Grid Computing CARTIF Valladolid Junio 2006

Ejecucin de un programa MPI con MPICH


El comando mpirun se usa para ejecutar los programas MPI en MPICH. (esto no es parte del estndar) mpirun admite diversas opciones. Destacaremos las siguientes:
-np N: N indica el nmero de procesos que se quiere en la ejecucin del programa. -p4pg pgfile: indica explcitamente las mquinas en las que se quiere correr y el path del programa y usuario que se usar en cada una de ellas. -machinesfile mfile: fichero de mquinas para correr en lugar del estndar (se usa en combinacin con np).

Digamos que queremos correr nuestro programa en dos mquinas de la lista estndar:
mpirun -np 2 hello
Curso Grid Computing CARTIF Valladolid Junio 2006

Ejemplo pgfile y machinefile


grid079 0 /grid/mpi/marco/Portal/NeuralNetwork/test-nn/ExampleApplication.exe grid079 1 /grid/mpi/marco/Portal/NeuralNetwork/test-nn/ExampleApplication.exe grid006 1 /grid/mpi/marco/Portal/NeuralNetwork/test-nn/ExampleApplication.exe grid007 1 /grid/mpi/marco/Portal/NeuralNetwork/test-nn/ExampleApplication.exe grid008 1 /grid/mpi/marco/Portal/NeuralNetwork/test-nn/ExampleApplication.exe mpi mpi mpi mpi mpi

grid073.ifca.unican.es:2 grid074.ifca.unican.es:2 grid075.ifca.unican.es:2 grid076.ifca.unican.es:2 grid077.ifca.unican.es:2 grid078.ifca.unican.es:2

Curso Grid Computing CARTIF Valladolid Junio 2006

Grupos y Comunicadores
Un grupo es un conjunto ordenado de procesos. Cada proceso de un grupo lleva asociado un identificador entero que se suele denominar rank.

Un comunicador representa una coleccin de procesos que se pueden comunicar entre s.


Es un objeto con cierto nmero de atributos, asociado a algunas funciones para crearlos, usarlos y destruirlos. Especifica un dominio de comunicacin que puede ser usado tanto en las comunicaciones punto-a-punto como en las colectivas (por los procesos que son parte de l). Evitan que exista comunicacin no deseada entre determinados procesos. Contiene un grupo y un contexto

Curso Grid Computing CARTIF Valladolid Junio 2006

Delimitacin del alcance de la comunicacin


Grupos separados de subprocesos trabajando en diferentes subprogramas. Invocacin paralela de libreras paralelas:
Los mensajes propios de la aplicacin deben mantenerse separados de los de la librera.

MPI proporciona grupos de procesos


Inicialmente el grupo all. Se proporcionan rutinas para la administracin de los grupos. Todas las comunicaciones, no solo las colectivas, tienen lugar en grupos. Un grupo (group) y un contexto (context) se combinan en un comunicador (communicator). Fuente y destino en una operacin send o receive se refieren al rank en el grupo asociado con un comunicador dado. Se puede usar MPI_ANY_SOURCE en una operacin receive.

Curso Grid Computing CARTIF Valladolid Junio 2006

MPI tipos de comunicacin


La comunicacin MPI entre procesos puede ser de dos tipos:
Punto a punto: el proceso origen conoce el identificador del proceso destino y enva un mensaje dirigido solo a l. Se usan las funciones MPI_Send y MPI_Recv. Colectiva: Operaciones en las que participan todos los procesos de un operador. Ejemplo:
Broadcast: El proceso origen manda el mensaje a todos los demas (que pertenezcan al mismo comunicador). Esto es tpico de un esquema master-slave. Se usa la funcin MPI_Bcast.

Las funciones MPI de recepcin de datos son por lo general bloqueantes, es decir, un proceso que debe recibir un mensaje espera hasta que de hecho lo ha recibido completo.

Curso Grid Computing CARTIF Valladolid Junio 2006

Obteniendo informacin de MPI


Usaremos ahora dos ms de las seis funciones bsicas: MPI_Comm_size y MPI_Comm_rank. As averiguaremos desde el programa el nmero de procesos que participan y la identificacin de cada uno.
int main( argc, argv ) { int rank, size; MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_size( MPI_COMM_WORLD, &size ); printf( Hola Mundo! Soy el proceso %d de %d\n", rank, size ); MPI_Finalize(); return 0; }
Curso Grid Computing CARTIF Valladolid Junio 2006

Funciones de comunicacin MPI


A continuacin veremos un poco ms en detalle las funciones bsicas de envo y recepcin de mensajes punto a punto y broadcast. MPI_Send MPI_Recv MPI_Bcast MPI_Reduce

Imagen del Tutorial de Gropp

Curso Grid Computing CARTIF Valladolid Junio 2006

Sintaxis de MPI_Send y MPI_Recv


La operacin bsica de envo (bloqueante) es:
MPI_Send( start, count, datatype, dest, tag, comm ) 1. 2. 3. 4. 5. 6. start: puntero a los datos a enviar count: nmero de elementos a enviar datatype: tipo de dato dest: Identificacin del proceso destino tag: etiqueta de la comunicacin comm: Identificacin del comunicador

La operacin bsica de recepcin correspondiente:


MPI_Recv(start, count, datatype, source, tag, comm, status)

1. 2. 3. 4. 5. 6. 7.

start: puntero para la recepcin de los datos count: nmero de elementos datatype: tipo de dato source: Identificacin del proceso origen tag: etiqueta de la comunicacin comm: Identificacin del comunicador status: puntero para acceso a informacin sobre mensaje
Curso Grid Computing CARTIF Valladolid Junio 2006

Ejemplo MPI_Send/MPI_Recv
char msg[100]; if(my_rank==0) { sprintf(msg,"\n\n\t Esto es un mensaje del proceso %d al proceso %d",source,dest); MPI_Send(msg,100,MPI_CHAR,dest,TAG,MPI_COMM_WORLD); printf("\n Mensaje enviado a %d",dest); } else if(my_rank==1) { MPI_Recv(msg,100,MPI_CHAR,source,TAG,MPI_COMM_WORLD,&status); printf("\n Mensaje recibido en %d",dest); printf(msg); }

Curso Grid Computing CARTIF Valladolid Junio 2006

Adquiriendo informacin sobre un mensaje


MPI_TAG y MPI_SOURCE son usados principalmente cuando hay MPI_ANY_TAG y/o MPI_ANY_SOURCE en la llamada MPI_Recv. MPI_Get_count se usa para determinar la cantidad de datos de un tipo dado que se han recibido.

MPI_Status status; MPI_Recv( ..., &status ); ... status.MPI_TAG; ... status.MPI_SOURCE; MPI_Get_count( &status, datatype, &count );

Curso Grid Computing CARTIF Valladolid Junio 2006

Operaciones colectivas
Comunicacin colectiva: envo de un mensaje de uno a muchos. Se hace con MPI_Bcast (Broadcast)
Tpicamente un master enva los mismos datos a sus esclavos. Por ejemplo, en la paralelizacin del entrenamiento de una red neuronal enviamos a todos los esclavos los nuevos pesos al final de cada poca de entrenamiento.

Operaciones colectivas: se realiza una operacin matemtica distribuida y se devuelve el resultado al root de la operacin
Tambin es tpico en un esquema master-slave. En la neura se utiliza por ejemplo en la suma de los errores de todos los esclavos. Operaciones definidas:
Aritmticas: suma, multiplicacin Lgicas: AND, OR
Curso Grid Computing CARTIF Valladolid Junio 2006

Operaciones colectivas

Imagen del Tutorial de Gropp

Curso Grid Computing CARTIF Valladolid Junio 2006

Reduce
MPI_MAX maximum integer, float integer, real, complex MPI_MIN minimum integer, float integer, real, complex MPI_SUM sum integer, float integer, real, complex MPI_PROD product integer, float integer, real, complex 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, MPI_BYTE integer, MPI_BYTE MPI_LXOR logical XOR integer logical MPI_BXOR bit-wise XOR integer, MPI_BYTE integer, MPI_BYTE MPI_MAXLOC max value and location float, double and long double real, complex,double precision MPI_MINLOC min value and location float, double and long double real, complex, double precision
Curso Grid Computing CARTIF Valladolid Junio 2006

Sintaxis de Broadcast y Reduce


Broadcast:
MPI_Bcast(start, count, datatype, root, comm) 1. 2. 3. 4. 5. start: puntero a los datos a enviar count: nmero de elementos a enviar datatype: tipo de dato root: identificacin del proceso origen comm: Identificacin del comunicador

Reduce:
MPI_Reduce(start, result, count, datatype, operation, root, comm) 1. 2. 3. 4. 5. 6. 7. start: puntero a los datos a enviar result: puntero para almacenar el resultado count: nmero de elementos a enviar datatype: tipo de dato operation: identificacin de la operacin colectiva root: identificacin del proceso origen comm: Identificacin del comunicador
Curso Grid Computing CARTIF Valladolid Junio 2006

Reduce
Operaciones predefinidas para MPI_Reduce:
MPI_MAX mximo MPI_MIN mnimo MPI_SUM suma MPI_PROD producto MPI_LAND and lgico MPI_LOR or lgico MPI_LXOR xor lgico MPI_BAND bitwise and MPI_BOR bitwise or MPI_BXOR bitwise xor MPI_MAXLOC mximo e ndice del mximo MPI_MINLOC mnimo e ndice del mnimo

Adems existe un mecanismo para que el usuario cree sus propias funciones para el Reduce.
Curso Grid Computing CARTIF Valladolid Junio 2006

Ejemplo BroadCast
Char msg[100]; if(my_rank==source) { sprintf(msg,"\n Esto es un mensaje del proceso %d a todos los dems",sourc e); 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); }

Curso Grid Computing CARTIF Valladolid Junio 2006

Ejemplo Reduce
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); }

Curso Grid Computing CARTIF Valladolid Junio 2006

Topologas
Una topologa es una estructura virtual de procesos MPI.
Sirve para contestar a la pregunta Quines son mis vecinos? Asocia un esquema de direccionamiento a los procesos de un comunicador.

Una topologa tpica es la cartesiana que consiste en un malla en la que los procesos se identifican mediante dos subndices. Otro tipo es la topologa en grafo que es ms genrica.

Imagen del Tutorial de Gropp

Curso Grid Computing CARTIF Valladolid Junio 2006

Otras caractersticas. Extensiones MPI-2


Parallel I/O.
Varios procesos de un programa paralelo acceden a datos (lectura o escritura) de un fichero comn. Alto rendimiento.

DPM (Dynamic Process Management):


Permite a un job MPI crear nuevos procesos en tiempo de ejecucin y comunicarse con ellos.

One sided operations.


Remote Memory Access. Puede proporcionar mayor rendimiento sobre todo en redes que soportan nativamente este tipo de comunicaciones (InfiniBand y Myrinet).

Curso Grid Computing CARTIF Valladolid Junio 2006

MPICH-G2

Curso Grid Computing CARTIF Valladolid Junio 2006

MPICH-G2 MPI sobre globus2


MPICH-G2 es una implementacin grid enabled del estndar MPI 1.2 Por medio del llamado globus2 device usa los servicios del Globus Toolkit 2 para ejecutar de forma distribuida (en mquinas heterogneas) aplicaciones paralelas programadas usando MPI. La librera de comunicaciones Nexus de globus define una interfaz de comunicacin de bajo nivel que utilizada para dar soporte a un amplio rango de lenguajes y libreras de nivel superior.

Curso Grid Computing CARTIF Valladolid Junio 2006

Usando MPICH-G2
Requisitos:
Certificado de usuario. En cada mquina en que se quiera correr usando mpirun
Hay que tener cuenta Debe estar instalado globus y MPICH-G2 Globus gatekeeper

Compilacin con mpicc, mpif77, etc. Ejecutar la aplicacin usando mpirun:


Bajo el globus2 device esto genera un RSL Se enva a las mquinas del grid

Curso Grid Computing CARTIF Valladolid Junio 2006

TRABAJOS PARALELOS EN GRID

Curso Grid Computing CARTIF Valladolid Junio 2006

MPICH-P4 en grid
UI

RB

CE

WN WN WN WN WN WN WN

Curso Grid Computing CARTIF Valladolid Junio 2006

MPICH-G2 en grid
UI RB WN WN WN WN WN WN WN

CE

CE

WN WN WN WN WN WN WN

CE

WN WN WN WN WN WN WN

Curso Grid Computing CARTIF Valladolid Junio 2006

JDL
Para MPICH P4 Para MPICH G2

Executable = "hello"; JobType = "mpich"; NodeNumber = 8; VirtualOrganisation = "cg"; StdOutput = "std.out"; StdError = "std.err"; InputSandbox = {"hello"}; OutputSandbox = {"std.out","std.err"};

Executable = "hello.g2"; JobType = "mpich-g2"; NodeNumber = 2; VirtualOrganisation = "cg"; StdOutput = "std.out"; StdError = "std.err"; InputSandbox = {"hello.g2"}; OutputSandbox = {"std.out","std.err"}; Rank = other.GlueCEStateFreeCPUs;

Curso Grid Computing CARTIF Valladolid Junio 2006

OPEN MPI

Curso Grid Computing CARTIF Valladolid Junio 2006

Origen
Open MPI es un proyecto que combina los esfuerzos de diversos proyectos anteriores (FT-MPI, LA-MPI, LAM/MPI, y PACX-MPI) para crear la mejor librera MPI.
En 2003 se tom la decisin de colaborar En 2004 empez la fase de diseo e implementacin La primera versin se hizo pblico en 2005

Es una implementacin de MPI-2 totalmente nueva. Se desarrolla como cdigo abierto por un consorcio de socios de diversos mbitos (investigacin, educacin e industria) Pgina web del proyecto: http://www.openmpi.org/
Curso Grid Computing CARTIF Valladolid Junio 2006

Objetivos
Arquitectura modular Fragmentacin y recreacin de mensajes Diseado para entornos heterogneos:
Varias redes Varias arquitecturas de los nodos

Deteccin automtica de errores y retransmisin Portable y con un buen rendimiento


Clusters Mainframes Grid

Tres capas
OMPI : Open MPI ORTE : Open Runtime Environment OPAL : Open Hardware Abstraction layer
Curso Grid Computing CARTIF Valladolid Junio 2006

Instalacin
Open MPI usa autotools:
./configure make make install

Opciones:
Compilacin como librera compartida o esttica Permitir o no el soporte de threads

Los ficheros binarios y libreras deben ser localizables por el sistema


$(PREFIX)/bin -> $PATH $(PREFIX)/lib -> $LD_LIBRARY_PATH

Curso Grid Computing CARTIF Valladolid Junio 2006

Startup
Open MPI soporta mpirun and mpiexec ORTE soporta varios mecanismos de arranque de forma nativa
rsh/ssh PBS/Torque SLURM Xgrid

El mecanismo de arranque puede ser seleccionado

Curso Grid Computing CARTIF Valladolid Junio 2006

Requisitos
Los demonios de orte necesitan un puerto TCP/IP de entrada abierto ssh necesita poder conectarse sin password (public keys) Open MPI debe estar instalado tanto en el Head Node como en los Computing Nodes

Curso Grid Computing CARTIF Valladolid Junio 2006

PACX MPI

Curso Grid Computing CARTIF Valladolid Junio 2006

Introduccin
Middleware para ejecutar aplicaciones MPI en una red de computadores paralelos
Desarrolla originalmente en 1995 (Vector + MPP)

Implementacin optimizada de MPI que cumple con el estndar.


Las aplicaciones solo necesitan ser recompiladas.

PACX-MPI usa las implementaciones locales optimizadas para las comunicaciones el cluster

Curso Grid Computing CARTIF Valladolid Junio 2006

Diseo
PACX-MPI arranca un trabajo MPI en cada cluster Se encarga de controlar estos trabajos creando transparentemente un trabajo MPI mayor. PACX-MPI transforma el rank de este job mayor a los rank de los procesos MPI de los clusters Arranca dos procesos MPI adicionales ocultos para las comunicaciones con el exterior:
El rank 0 local es el demonio de comunicacin hacia fuera (out_daemon) El rank 1 local es el demonio de comunicacin hacia dentro (in_daemon)

Curso Grid Computing CARTIF Valladolid Junio 2006

Bibliografa MPI
Pacheco, P.S. Parallel Programming with MPI. Morgan Kaufmann Publishers, 1997. Snir, M. et al. MPI - The Complete Reference. Volume 1, The MPI Core. The MIT Press, 1998. Gropp, W., Lusk, E. y Skjellum, A. Using MPI, Portable Parallel Programming with the MessagePassing Interface. The MIT Press, 1994.

Curso Grid Computing CARTIF Valladolid Junio 2006

Ms sobre MPI
Tutorial en HLRS:
On-line: http://www.hlrs.de/organization/par/par_prog_ws/

Otros recursos en el Web:


MPI Forum: http://www.mpi-forum.org/ MPI en Argonne: http://www-unix.mcs.anl.gov/mpi/
MPICH 1: http://www-unix.mcs.anl.gov/mpi/mpich1/ MPICH 2 http://www-unix.mcs.anl.gov/mpi/mpich2/

OpenMPI: http://www.open-mpi.org/ LAM/MPI: http://www.lam-mpi.org/ PACX MPI: http://www.hlrs.de/organization/amt/projects/pacx-mpi/

Curso Grid Computing CARTIF Valladolid Junio 2006

Vous aimerez peut-être aussi