FP62004Infrastructures6-SSA-026409 E-infrastructure shared between Europe and Latin America Jobs...

Preview:

Citation preview

FP6−2004−Infrastructures−6-SSA-026409

www.eu-eela.org

E-infrastructure shared between Europe and Latin America

Jobs Especiales

Moisés Hernández Duarte

UNAM FES CuautitlánTutorial en grid, visualización, y cómputo de alto rendimientoCiudad de México, Octubre 23 al 26 de 2007Basada en la presentación de Claudio Cherubino en el 4º Tutorial EELA

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 2

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Agenda

• Jobs MPI en gLite

• DAG (Directed Acyclic Graph)

• Colección de Jobs

• Jobs Paramétricos

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 3

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Un vistazo a MPI

• La ejecución de jobs paralelos es una característica esencial para las aplicaciones informáticas modernas.

• La biblioteca mas utilizada para soportar jobs paralelos es MPI (Message Passing Interface)

• En la actualidad, los jobs paralelos pueden ser ejecutados sólo en un Computing Element (CE) específico; – Aún cuando existen varios proyectos relacionados con la

posibilidad de ejecutar jobs paralelos en Worker Nodes (WN’s) que pertenezcan a diferentes CE’s.

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 4

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Requerimientos & configuraciones

• Para garantizar que el job MPI pueda ejecutarse, deben satisfacerse los requerimientos siguientes:– El software MPICH debe estar instalado y colocado en la

variable de ambiente PATH de cada WN perteneciente al CE.

– Para su ejecución, algunas aplicaciones MPI requieren un sistema de archivos compartido entre los WN’s.

La variable VO_<name_of_VO>_SW_DIR deberá contener el nombre de un directorio en caso de sistema de arhcivos compartido (SHARED).

La variable VO_<name_of_VO>_SW_DIR deberá contener “.” si no hay sistema de archivos compartido (NO SHARED).

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 5

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

• Desde el punto de vista del usuario, los jobs que serán ejecutados como MPI se especifican estableciendo el atributo JDL JobType en MPICH además de especificar el atributo NodeNumber.

Ejem.:

JobType = “MPICH”;

NodeNumber = 4;

Este atributo define el número de CPU’s requerido para la aplicación

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 6

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

• Cuando se incluyen los dos atributos previos en el archivo JDL, la User Interface (UI) automaticamente agrega la siguiente expresión:

a la expresión Requirements del archivo JDL con la intensión de encontrar el mejor recurso donde el job pueda ser ejecutado.

(other.GlueCEInfoTotalCPUs >= NodeNumber) &&

Member (“MPICH”,other.GlueHostApplicationSoftwareRunTimeEnvironment)

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 7

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Crear el archivo “mpi-test.jdl” dentro de $HOME/gLite/Other y colocar el siguiente código dentro del archivo:

[

Type = "Job";

JobType = "MPICH";

Executable = “cpi";

NodeNumber = 2;

StdOutput = “cpi.out";

StdError = “cpi.err";

InputSandbox = {"cpi"};

OutputSandbox = {“cpi.err",“cpi.out"};

RetryCount = 0;

]

Ejercicio MPI

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 8

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Envío de jobs MPI

[glite-tutor] /home/jmoises > glite-job-submit -o id mpi-test.jdl

Selected Virtual Organisation name (from proxy certificate extension): gilda

Connecting to host glite-rb.ct.infn.it, port 7772Logging to host glite-rb.ct.infn.it, port 9002

========== glite-job-submit Success ====================== The job has been successfully submitted to the Network

Server. Use glite-job-status command to check job current status.

Your job identifier is:

- https://glite-rb.ct.infn.it:9000/bsrbbzbcXZWSzU3iUYlm6g

The job identifier has been saved in the following file: /home/jmoises/id==========================================================

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 9

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Estado y Salida MPI

Consultar el estado del job ejecutando el comando siguiente:

[glite-tutor] /home/jmoises > glite-job-status -i id

…………………………………………….

Cuando el estado del job es “DONE”, puedes obtener la salida con el comando siguiente:

[glite-tutor] /home/jmoises > glite-job-output -i id

……………………………………………

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 10

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

• LCG-2 User Guide Manuals Series– https://edms.cern.ch/file/454439/LCG-2-UserGuide.pdf

• http://oscinfo.osc.edu/training/

• http://www.netlib.org/mpi/index.html

• http://www-unix.mcs.anl.gov/mpi/learning.html

• http://www.ncsa.uiuc.edu/

MPI en la web…

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 11

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Workload Manager Proxy

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 12

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Un vistazo a WMProxy

• WMProxy (Workload Manager Proxy) – Es un servicio nuevo que brinda acceso a la funcionalidad

Workload Management System (WMS) de gLite a través de una interfaz simple basada en Web Services.

– Ha sido diseñada para manejar eficientemente un gran número de peticiones para envío y control de jobs en el WMS.

– La interfaz del servicio cumple con los estándares de Web Services y la arquitectura SOA, en particular se apega al WS-I desarrollado en C++ utilizando gsoap 2.7.6b.

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 13

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Nuevos tipos de petición

• El soporte para nuevos tipos descansa fuertemente en convertidores JDL, recientemente desarrolados y en el soporte de envío DAG– Todas las conversiones JDL se realizan en el servidor– Un único envío para varios jobs

• Todos los nuevos tipos de petición pueden ser monitoreados y controlados a través de un sólo manejador (el id de la petición)– Sin embargo a cada sub-job se le puede controlar y hacer seguimiento

en forma independiente a través de su propio id.

• Comandos/API’s de cliente WMS más “Inteligentes” – Permite envíos de DAGs, colecciones de jobs y jobs paramétricos

explotando el concepto de “cajón compartido”– Permite generación y envío automático de colecciones y DAG’s desde

conjuntos de archivos JDL localizados en directorios especificados por el usuario en la UI

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 14

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

WMProxy : envío & monitoreo

• Para el envío de jobs con WMProxy, es obligatorio delegar credenciales:

• Los comandos de envío/monitoreo son ligeramente diferentes, pero la mayoría de las “viejas” opciones están soportadas

glite-wms-job-delegate-proxy -d del_ID

glite-wms-job-submit -d del_ID collection.jdl

glite-wms-job-status jobID

glite-wms-job-output \

https://glite-rb.ct.infn.it:9000/LHIIGaCVdl7Olm

sz0jpI_g

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 15

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

El job DAG

• Un job DAG es un conjunto de jobs donde la entrada, salida o ejecución de uno o más jobs puede depender de otros jobs

• Las dependencias están representadas a través de Directed Acyclic Graphs, donde los nodos son jobs, y las flechas identifican las dependencias

nodeA

nodeB nodeC NodeF

nodeD

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 16

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Estructura JDL

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 17

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Atributo: Nodes

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 18

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Atributo: Dependencies

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 19

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

DAG jdl[ type = "dag"; max_nodes_running = 4; nodes = [ nodeA = [ file ="nodes/nodeA.jdl" ; ]; nodeB = [ file ="nodes/nodeB.jdl" ; ]; nodeC = [ file ="nodes/nodeC.jdl" ; ]; nodeD = [ file ="nodes/nodeD.jdl"; ]; dependencies = { {nodeA, nodeB}, {nodeA, nodeC}, { {nodeB,nodeC}, nodeD } } ];]

La descripción del nodo también puede hacerse

aquí, en lugar de utilizar archivos

separados

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 20

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Colección de Job

• Una colección de jobs es un conjunto independiente de éstos, que el usuario desea enviar y monitorear a través de una sóla petición

• Los jobs de una colección se envían como nodos DAG sin dependencias

• El JDL es una lista que describe los sub-jobs

[ Type = "collection"; VirtualOrganisation = “gilda";

nodes = { [ <job descr 1 >], [ <job descr 2 >], …};

]

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 21

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

‘Scattered’ Input Sandboxes

• El Cajón de entrada (Input Sandbox) puede contener– Rutas de archivo en la máquina UI– URI apuntando archivos en un servidor gridFTP/HTTPS remoto

InputSandbox = {"gsiftp://neo.datamat.it:2811/var/prg/sim.exe","https://ghemon.cnaf.infn.it:8443/data/idat_1","file:///home/pacio/myconf“ };

• También se puede especificar una URI básica que se aplique a todos los archivos sandbox

InputSandboxBaseURI = "gsiftp://matrix.datamat.it:2811/var";

• Sólo los archivos locales (file://) se suben al nodo WMS• Los archivos apuntados por las URI’s son directamente

descargados en el WN por el JobWrapper justo antes de iniciar el job

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 22

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

‘Scattered’ Output Sandboxes

• El JDL ha sido enriquecido con nuevos atributos para especificar los destinos de los archivos listados en la lista de atributos de la OutputSandboxOutputSandbox = { "jobOutput",

"run1/event1","jobError" };

OutputSandboxDestURI = {"gsiftp://matrix.datamat.it/var/jobOutput","https://grid003.ct.infn.it:8443/home/cms/event1",

"gsiftp://matrix.datamat.it/var/jobError" };

• También se puede definir una URI básica que se aplique a todos los archivos sandbox files

OutputSandboxBaseDestURI = "gsiftp://neo.datamat.it/home/run1/";

• Los archivos son copiados por el JobWrapper al destino especificado, cuando el job completa su ejecución, sin transitar por el nodo WMS

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 23

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Job collection example

[ type = "collection"; InputSandbox = {"date.sh"}; RetryCount = 0; nodes = { [ file ="jobs/job1.jdl" ; ], [ [

Executable = "/bin/sh"; Arguments = "date.sh"; Stdoutput = "date.out"; StdError = "date.err"; OutputSandbox ={"date.out", "date.err"};]

], [ file ="jobs/job3.jdl" ; ] };]

Todos los nodos compartirán esta Input Sandbox

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 24

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Jobs Paramétricos

• Un job paramétrico es aquel en el que uno o mas de sus atributos son parametrizados

• El valor de los atributos varía de acuerdo al parámetro

• El monitoreo/manejo del Job se realiza siempre a través de un jobID único, como si el job fuera sencillo

[ JobType = "Parametric"; Executable = "/bin/sh"; Arguments = "md5.sh input_PARAM_.txt"; InputSandbox = {"md5.sh", "input_PARAM_.txt"}; StdOutput = "out_PARAM_.txt"; StdError = "err_PARAM_.txt"; Parameters = 4; ParameterStart = 1; ParameterStep = 1; OutputSandbox = {"out_PARAM_.txt", "err_PARAM_.txt"};]

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 25

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Jobs Paramétricos / 2

• El parámetro puede ser también una lista de cadenas• InputSandbox (si existe) debe ser coherent con los

parámetros[ui-test] /home/giorgio/param > cat param2.jdl[ JobType = "Parametric";

Executable = “/bin/cat"; Arguments = “input_PARAM_.txt”;

InputSandbox = "input_PARAM_.txt"; StdOutput = "myoutput_PARAM_.txt"; StdError = "myerror_PARAM_.txt"; Parameters = {earth,moon,mars}; OutputSandbox = {“myoutput_PARAM_.txt”};

]

[ui-test] /home/giorgio/param > ls

inputEARTH.txt inputMARS.txt inputMOON.txt param2.jdl

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 26

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Referencias

• JDL attributes specification for WM proxy– https://edms.cern.ch/document/590869/1

• WMProxy quickstart– http://egee-jra1-wm.mi.infn.it/egee-jra1-wm/wmproxy_client_quickstart.shtml

• WMS user guides– https://edms.cern.ch/document/572489/1

Tutorial para Usuarios, Ciudad de México, 23 y 24 de Octubre de 2007 27

E-infrastructure shared between Europe and Latin America

FP6−2004−Infrastructures−6-SSA-026409

Gracias . . . !