Changes between Version 53 and Version 54 of Tutorial/JobSubm


Ignore:
Timestamp:
Jun 9, 2008, 4:58:20 PM (17 years ago)
Author:
/C=FR/O=CNRS/OU=UMR8608/CN=Christophe Diarra/emailAddress=diarra@…
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Tutorial/JobSubm

    v53 v54  
    343343Enfin l'option `--unset` de `glite-wms-job-perusal` permet de désactiver le Job Perusal :
    344344
     345=== Les jobs paramétriques ===
     346
     347Pour soumettre des jobs identiques à tous points sauf pour un seul paramètres
     348d'exécution, on peut utiliser un job paramétrique. En d'autres termes, plutôt
     349que de créer un .jdl par job, on crée un seul fichier .jdl dont la soumission
     350va générer automatiquement la collection de jobs.
     351
     352On se sert des attribut JDL suivants :
     353
     354 * Parameters : un entier ou une liste d'éléments (ex: {a, b, c}, {2, 7, 20})
     355 * ParameterStart : un entier
     356 * ParameterStep : un entier
     357
     358Si Parameters est un entier, le nombre de jobs généré est :
     359
     360{{{
     361 N = (Parameters - ParameterStart) / ParameterStep
     362}}}
     363Si on veut que tous les jobs tournent sur le même CE, on peut mettre la ligne
     364suivante dans le .jdl :
     365
     366{{{
     367NodesCollocation = true;
     368}}}
     369Prenoms un exemple. Nous avons un programme qui doit tourner avec 4 fichiers Input1.txt, Input3.txt, Input4.txt. Plutôt que de créer 4 .jdl, on peut créer le job paramétrique que voici :
     370
     371{{{
     372[diarra@ipngrid01 ParametricJobs]$ cat ParametricNum.jdl
     373JobType = "Parametric";
     374Executable    = "ParametricNum.sh";
     375Arguments     = "_PARAM_";
     376StdOutput     = "std.out";
     377StdError      = "std.err";
     378InputSandbox = {"ParametricNum.sh", "Input_PARAM_.txt"};
     379OutputSandbox = {"std.out", "std.err", "Output_PARAM.txt" };
     380MyProxyServer = "myproxy.grif.fr";
     381Parameters = 5;
     382ParameterStart = 1;
     383ParameterStep = 1;
     384#NodesCollocation = true;
     385#Requirements = RegExp("ipngrid12.*\.fr:2119/jobmanager.*ipno$", other.GlueCEUniqueID);
     386}}}
     387
     388{{{
     389[diarra@ipngrid01 ParametricJobs]$ cat ParametricNum.sh
     390#!/bin/sh
     391MyParam=$1
     392echo "Debut execution du programme"
     393echo "Parametre = ${MyParam}"
     394# On peut travailler sur le fichier de Input et de Output
     395# cat Input${MyParam}.txt  > Output${MyParam}.txt
     396}}}
     397
     398Les explications :
     399
     400 * ParameterStart : c'est la valeur de départ du paramètre
     401 * ParameterStep : c'est la valeur de l'incrément
     402 * Parameters : c'est la valeur maximale
     403
     404Dans le .jdl le paramètre courant est contenu dans _PARAM_ . On peut ainsi le
     405transmettre comme argument ou dans le nom des fichiers comme dans notre exemple.
     406Dans notre exemple ci-dessus, _PARAM_ vaudra donc successivement 1, 2, 3 puis 4.
     407
     408Soumettons le job :
     409
     410{{{
     411[diarra@ipngrid01 ParametricJobs]$ glite-wms-job-submit -a -o jid ParametricNum.jdl
     412
     413Connecting to the service https://grid09.lal.in2p3.fr:7443/glite_wms_wmproxy_server
     414====================== glite-wms-job-submit Success ======================
     415The job has been successfully submitted to the WMProxy
     416Your job identifier is:
     417
     418https://grid02.lal.in2p3.fr:9000/7X5T_8XEcxUjDeng1q92Wg
     419The job identifier has been saved in the following file:
     420/home/diarra/work/ParametricJobs/jid
     421==========================================================================
     422}}}
     423
     424Quattres jobs sont soumis en parrallèle comme le montre la commande glite-wms-job-status :
     425
     426{{{
     427[diarra@ipngrid01 ParametricJobs]$ glite-wms-job-status -i jid
     428
     429*************************************************************
     430BOOKKEEPING INFORMATION:
     431Status info for the Job : https://grid02.lal.in2p3.fr:9000/7X5T_8XEcxUjDeng1q92Wg
     432Current Status:     Running
     433Submitted:          Fri Jun  6 16:31:52 2008 CEST
     434*************************************************************
     435- Nodes information for:
     436    Status info for the Job : https://grid02.lal.in2p3.fr:9000/6zsSfE0nVOVyrWCQPga6fw
     437    Current Status:     Running
     438    Status Reason:      Job successfully submitted to Globus
     439    Destination:        ipngrid12.in2p3.fr:2119/jobmanager-pbs-ipno
     440    Submitted:          Fri Jun  6 16:31:52 2008 CEST
     441*************************************************************
     442    Status info for the Job : https://grid02.lal.in2p3.fr:9000/DFqOECrwMEWmmpZs65oG3Q
     443    Current Status:     Running
     444    Status Reason:      Job successfully submitted to Globus
     445    Destination:        ipngrid12.in2p3.fr:2119/jobmanager-pbs-ipno
     446    Submitted:          Fri Jun  6 16:31:52 2008 CEST
     447*************************************************************
     448    Status info for the Job : https://grid02.lal.in2p3.fr:9000/Ez2DyOUSDxCof9Sh0pQPog
     449    Current Status:     Running
     450    Status Reason:      Job successfully submitted to Globus
     451    Destination:        ipngrid12.in2p3.fr:2119/jobmanager-pbs-ipno
     452    Submitted:          Fri Jun  6 16:31:52 2008 CEST
     453*************************************************************
     454    Status info for the Job : https://grid02.lal.in2p3.fr:9000/FxUda1Mz5DyB7SglhMDBEw
     455    Current Status:     Scheduled
     456    Status Reason:      Job successfully submitted to Globus
     457   Destination:        ipngrid12.in2p3.fr:2119/jobmanager-pbs-ipno
     458    Submitted:          Fri Jun  6 16:31:52 2008 CEST
     459*************************************************************
     460}}}
     461
     462A la fin de l'exécution des jobs, quand le status des jobs est "Done", on peut
     463récupérer les résulat de la collection.
     464
     465{{{
     466[diarra@ipngrid01 ParametricJobs]$ glite-wms-job-status -i jid
     467
     468*************************************************************
     469BOOKKEEPING INFORMATION:
     470Status info for the Job : https://grid02.lal.in2p3.fr:9000/7X5T_8XEcxUjDeng1q92Wg
     471Current Status:     Done (Success)
     472Exit code:          0
     473Submitted:          Fri Jun  6 16:31:52 2008 CEST
     474*************************************************************
     475...
     476}}}
     477
     478On récupère les résultats :
     479
     480{{{
     481[diarra@ipngrid01 ParametricJobs]$ glite-wms-job-output  -i jid
     482
     483Connecting to the service https://grid09.lal.in2p3.fr:7443/glite_wms_wmproxy_server
     484================================================================================
     485                        JOB GET OUTPUT OUTCOME
     486
     487Output sandbox files for the DAG/Collection :
     488https://grid02.lal.in2p3.fr:9000/7X5T_8XEcxUjDeng1q92Wg
     489have been successfully retrieved and stored in the directory:
     490/home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg
     491================================================================================
     492}}}
     493
     494On voit que le paramètre _PARAM_ a bien été utilisé :
     495
     496{{{
     497[diarra@ipngrid01 ParametricJobs]$ ls -l /home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg/*
     498-rw-r--r--  1 diarra sii  735 Jun  6 16:40 /home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg/ids_nodes.map
     499
     500/home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg/Node_1:
     501total 0
     502-rw-r--r--  1 diarra sii  0 Jun  6 16:40 std.err
     503-rw-r--r--  1 diarra sii 43 Jun  6 16:40 std.out
     504
     505/home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg/Node_2:
     506total 0
     507-rw-r--r--  1 diarra sii  0 Jun  6 16:40 std.err
     508-rw-r--r--  1 diarra sii 43 Jun  6 16:40 std.out
     509
     510/home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg/Node_3:
     511total 0
     512-rw-r--r--  1 diarra sii  0 Jun  6 16:40 std.err
     513-rw-r--r--  1 diarra sii 43 Jun  6 16:40 std.out
     514
     515/home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg/Node_4:
     516total 0
     517-rw-r--r--  1 diarra sii  0 Jun  6 16:40 std.err
     518-rw-r--r--  1 diarra sii 43 Jun  6 16:40 std.out
     519}}}
     520
     521Pour le 3ème job par exemple on a bien utilisé 3 comme valeur du paramètre
     522conformement au paramétrage de notre .jdl :
     523
     524{{{
     525[diarra@ipngrid01 ParametricJobs]$ cat /home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg/Node_3/std.out
     526Debut execution du programme
     527Parametre = 3
     528}}}
     529
     530Si Parameters est une liste, les paramètres ParameterStart et ParameterStep ne sont pas nécessaires.
     531
     532N.B.: il ne faut pas mettre de "" autour des éléments contenus dans Parameters.
     533
     534Si nous avons un exécutable my_sim.exe qui doit faire trois simulations alpha, beta et gamma, le .jdl peut contenir les lignes :
     535
     536{{{
     537JobType = "Parametric";
     538Executable = "my_sim.exe";
     539Arguments = "_PARAM_";
     540Parameters = {alpha, beta, gamma};
     541InputSandbox = {"my_sim.exe", ...};
     542...
     543}}}
     544
     545En soumettant ce job, une collection de 3 jobs sera générée et chaque job fera
     546une simulation avec un des paramètres contenu dans Parameters.
     547
     548