Post on 14-Apr-2015
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 . . . !