Changes between Version 58 and Version 59 of Tutorial/JobSubm


Ignore:
Timestamp:
Jun 11, 2008, 9:23:22 PM (16 years ago)
Author:
jouvin
Comment:

Cosmetic changes

Legend:

Unmodified
Added
Removed
Modified
  • Tutorial/JobSubm

    v58 v59  
    270270Les commandes glite-wms-job-cancel et glite-wms-job-logging-info s'appliquent également sur les collections.
    271271
     272=== Les jobs paramétriques ===
     273
     274Pour soumettre des jobs identiques en tous points sauf pour un seul paramètre d'exécution, on peut utiliser un job paramétrique : plutôt que de créer un .jdl par job, on crée un seul fichier .jdl dont la soumission va générer automatiquement la collection de jobs. C'est une variante des collections de job décrites précédemment.
     275
     276Les attribut JDL suivants sont utilisés pour définir un job paramétrique :
     277
     278 * Parameters : une liste d'éléments (ex: {a, b, c}, {2, 7, 20}) ou un entier représentant la valeur maximale du paramètre
     279 * ParameterStart : un entier représentant la valeur minimale du paramètre
     280 * ParameterStep : un entier représentant l'incrément du paramètre
     281
     282Si `Parameters` est un entier, le nombre de jobs générés est :
     283{{{
     284 N = (Parameters - ParameterStart) / ParameterStep
     285}}}
     286
     287Pour que tous les jobs tournent sur le même CE, mettre la ligne suivante dans le .jdl :
     288{{{
     289NodesCollocation = true;
     290}}}
     291
     292__Exemple 1__ : un programme exécuté avec 4 fichiers différents `Input1.txt`, `Input2.txt`, `Input3.txt`, `Input4.txt`. 
     293
     294 * Créer le script correspondant au programme :
     295{{{
     296[diarra@ipngrid01 ParametricJobs]$ cat ParametricNum.sh
     297#!/bin/sh
     298MyParam=$1
     299echo "Debut execution du programme"
     300echo "Parametre = ${MyParam}"
     301# On peut travailler sur le fichier de Input et de Output
     302# cat Input${MyParam}.txt  > Output${MyParam}.txt
     303}}}
     304
     305 * Créer le JDL suivant (_PARAM_ vaudra successivement 1, 2, 3 puis 4) :
     306{{{
     307[diarra@ipngrid01 ParametricJobs]$ cat ParametricNum.jdl
     308JobType = "Parametric";
     309Executable    = "ParametricNum.sh";
     310Arguments     = "_PARAM_";
     311StdOutput     = "std.out";
     312StdError      = "std.err";
     313InputSandbox = {"ParametricNum.sh", "Input_PARAM_.txt"};
     314OutputSandbox = {"std.out", "std.err", "Output_PARAM_.txt" };
     315MyProxyServer = "myproxy.grif.fr";
     316Parameters = 5;
     317ParameterStart = 1;
     318ParameterStep = 1;
     319#NodesCollocation = true;
     320#Requirements = RegExp("ipngrid12.*\.fr:2119/jobmanager.*ipno$", other.GlueCEUniqueID);
     321}}}
     322
     323 * Soumettre le job :
     324{{{
     325[diarra@ipngrid01 ParametricJobs]$ glite-wms-job-submit -a -o jid ParametricNum.jdl
     326}}}
     327
     328 * Vérifier le status du job et l'existence de 4 sous-jobs :
     329{{{
     330[diarra@ipngrid01 ParametricJobs]$ glite-wms-job-status -i jid
     331
     332*************************************************************
     333BOOKKEEPING INFORMATION:
     334Status info for the Job : https://grid02.lal.in2p3.fr:9000/7X5T_8XEcxUjDeng1q92Wg
     335Current Status:     Running
     336Submitted:          Fri Jun  6 16:31:52 2008 CEST
     337*************************************************************
     338- Nodes information for:
     339    Status info for the Job : https://grid02.lal.in2p3.fr:9000/6zsSfE0nVOVyrWCQPga6fw
     340    Current Status:     Running
     341    Status Reason:      Job successfully submitted to Globus
     342    Destination:        ipngrid12.in2p3.fr:2119/jobmanager-pbs-ipno
     343    Submitted:          Fri Jun  6 16:31:52 2008 CEST
     344*************************************************************
     345    Status info for the Job : https://grid02.lal.in2p3.fr:9000/DFqOECrwMEWmmpZs65oG3Q
     346    Current Status:     Running
     347    Status Reason:      Job successfully submitted to Globus
     348    Destination:        ipngrid12.in2p3.fr:2119/jobmanager-pbs-ipno
     349    Submitted:          Fri Jun  6 16:31:52 2008 CEST
     350*************************************************************
     351    Status info for the Job : https://grid02.lal.in2p3.fr:9000/Ez2DyOUSDxCof9Sh0pQPog
     352    Current Status:     Running
     353    Status Reason:      Job successfully submitted to Globus
     354    Destination:        ipngrid12.in2p3.fr:2119/jobmanager-pbs-ipno
     355    Submitted:          Fri Jun  6 16:31:52 2008 CEST
     356*************************************************************
     357    Status info for the Job : https://grid02.lal.in2p3.fr:9000/FxUda1Mz5DyB7SglhMDBEw
     358    Current Status:     Scheduled
     359    Status Reason:      Job successfully submitted to Globus
     360   Destination:        ipngrid12.in2p3.fr:2119/jobmanager-pbs-ipno
     361    Submitted:          Fri Jun  6 16:31:52 2008 CEST
     362*************************************************************
     363}}}
     364
     365 * Quand le status de la collection de jobs est `Done`, récupérer l'output des différents jobs en utilisant la procédure habituelle. Comme dans toutes les collections de job, il y a un répertoire par sous-job et le fichier `ids_nodes.map` indique le nom du répertoire associé à chaque sous-job :
     366{{{
     367[diarra@ipngrid01 ParametricJobs]$ glite-wms-job-output  -i jid
     368
     369Connecting to the service https://grid09.lal.in2p3.fr:7443/glite_wms_wmproxy_server
     370================================================================================
     371                        JOB GET OUTPUT OUTCOME
     372
     373Output sandbox files for the DAG/Collection :
     374https://grid02.lal.in2p3.fr:9000/7X5T_8XEcxUjDeng1q92Wg
     375have been successfully retrieved and stored in the directory:
     376/home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg
     377================================================================================
     378}}}
     379
     380 * Visualiser l'output du 3ème job et vérifier qu'il a bien reçu la valeur `3` en paramètre :
     381{{{
     382[diarra@ipngrid01 ParametricJobs]$ cat /home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg/Node_3/std.out
     383Debut execution du programme
     384Parametre = 3
     385}}}
     386
     387
     388__ Exemple 2__ : un programme de simulation; `my_sim.exe` doit faire trois simulations `alpha`, `beta` et `gamma`. Dans ce cas on n'utilise que l'attribut `Parameters` et le JDL sera :
     389{{{
     390JobType = "Parametric";
     391Executable = "my_sim.exe";
     392Arguments = "_PARAM_";
     393Parameters = {alpha, beta, gamma};
     394InputSandbox = {"my_sim.exe", ...};
     395...
     396}}}
     397
     398''Note : il ne faut pas mettre de "" autour des éléments contenus dans `Parameters`.''
     399
     400
    272401=== Examen en temps réel des fichiers de sortie : Job Perusal ===
    273402
     
    343472Enfin l'option `--unset` de `glite-wms-job-perusal` permet de désactiver le Job Perusal :
    344473
    345 === Les jobs paramétriques ===
    346 
    347 Pour soumettre des jobs identiques à tous points sauf pour un seul paramètre d'exécution, on peut utiliser un job paramétrique. En d'autres termes, plutôt que de créer un .jdl par job, on crée un seul fichier .jdl dont la soumission
    348 va générer automatiquement la collection de jobs.
    349 
    350 On se sert des attribut JDL suivants :
    351 
    352  * Parameters : un entier ou une liste d'éléments (ex: {a, b, c}, {2, 7, 20})
    353  * ParameterStart : un entier
    354  * ParameterStep : un entier
    355 
    356 Si Parameters est un entier, le nombre de jobs généré est :
    357 
    358 {{{
    359  N = (Parameters - ParameterStart) / ParameterStep
    360 }}}
    361 Si on veut que tous les jobs tournent sur le même CE, on peut mettre la ligne
    362 suivante dans le .jdl :
    363 
    364 {{{
    365 NodesCollocation = true;
    366 }}}
    367 Prenoms un exemple. Nous avons un programme qui doit tourner avec 4 fichiers Input1.txt, Input2.txt, Input3.txt, Input4.txt. Plutôt que de créer 4 .jdl, on peut créer le job paramétrique que voici :
    368 
    369 {{{
    370 [diarra@ipngrid01 ParametricJobs]$ cat ParametricNum.jdl
    371 JobType = "Parametric";
    372 Executable    = "ParametricNum.sh";
    373 Arguments     = "_PARAM_";
    374 StdOutput     = "std.out";
    375 StdError      = "std.err";
    376 InputSandbox = {"ParametricNum.sh", "Input_PARAM_.txt"};
    377 OutputSandbox = {"std.out", "std.err", "Output_PARAM.txt" };
    378 MyProxyServer = "myproxy.grif.fr";
    379 Parameters = 5;
    380 ParameterStart = 1;
    381 ParameterStep = 1;
    382 #NodesCollocation = true;
    383 #Requirements = RegExp("ipngrid12.*\.fr:2119/jobmanager.*ipno$", other.GlueCEUniqueID);
    384 }}}
    385 
    386 {{{
    387 [diarra@ipngrid01 ParametricJobs]$ cat ParametricNum.sh
    388 #!/bin/sh
    389 MyParam=$1
    390 echo "Debut execution du programme"
    391 echo "Parametre = ${MyParam}"
    392 # On peut travailler sur le fichier de Input et de Output
    393 # cat Input${MyParam}.txt  > Output${MyParam}.txt
    394 }}}
    395 
    396 Les explications :
    397 
    398  * ParameterStart : c'est la valeur de départ du paramètre
    399  * ParameterStep : c'est la valeur de l'incrément
    400  * Parameters : c'est la valeur maximale (N.B.: si Parameters=N, les valeurs utilisées sont <=N-1).
    401 
    402 Dans le .jdl le paramètre courant est contenu dans _PARAM_ . On peut ainsi le
    403 transmettre comme argument ou dans le nom des fichiers comme dans notre exemple.
    404 
    405 Dans notre exemple, _PARAM_ vaudra donc successivement 1, 2, 3 puis 4.
    406 
    407 Soumettons le job :
    408 
    409 {{{
    410 [diarra@ipngrid01 ParametricJobs]$ glite-wms-job-submit -a -o jid ParametricNum.jdl
    411 
    412 Connecting to the service https://grid09.lal.in2p3.fr:7443/glite_wms_wmproxy_server
    413 ====================== glite-wms-job-submit Success ======================
    414 The job has been successfully submitted to the WMProxy
    415 Your job identifier is:
    416 
    417 https://grid02.lal.in2p3.fr:9000/7X5T_8XEcxUjDeng1q92Wg
    418 The job identifier has been saved in the following file:
    419 /home/diarra/work/ParametricJobs/jid
    420 ==========================================================================
    421 }}}
    422 
    423 Quattres jobs sont soumis en parrallèle comme le montre la commande glite-wms-job-status :
    424 
    425 {{{
    426 [diarra@ipngrid01 ParametricJobs]$ glite-wms-job-status -i jid
    427 
    428 *************************************************************
    429 BOOKKEEPING INFORMATION:
    430 Status info for the Job : https://grid02.lal.in2p3.fr:9000/7X5T_8XEcxUjDeng1q92Wg
    431 Current Status:     Running
    432 Submitted:          Fri Jun  6 16:31:52 2008 CEST
    433 *************************************************************
    434 - Nodes information for:
    435     Status info for the Job : https://grid02.lal.in2p3.fr:9000/6zsSfE0nVOVyrWCQPga6fw
    436     Current Status:     Running
    437     Status Reason:      Job successfully submitted to Globus
    438     Destination:        ipngrid12.in2p3.fr:2119/jobmanager-pbs-ipno
    439     Submitted:          Fri Jun  6 16:31:52 2008 CEST
    440 *************************************************************
    441     Status info for the Job : https://grid02.lal.in2p3.fr:9000/DFqOECrwMEWmmpZs65oG3Q
    442     Current Status:     Running
    443     Status Reason:      Job successfully submitted to Globus
    444     Destination:        ipngrid12.in2p3.fr:2119/jobmanager-pbs-ipno
    445     Submitted:          Fri Jun  6 16:31:52 2008 CEST
    446 *************************************************************
    447     Status info for the Job : https://grid02.lal.in2p3.fr:9000/Ez2DyOUSDxCof9Sh0pQPog
    448     Current Status:     Running
    449     Status Reason:      Job successfully submitted to Globus
    450     Destination:        ipngrid12.in2p3.fr:2119/jobmanager-pbs-ipno
    451     Submitted:          Fri Jun  6 16:31:52 2008 CEST
    452 *************************************************************
    453     Status info for the Job : https://grid02.lal.in2p3.fr:9000/FxUda1Mz5DyB7SglhMDBEw
    454     Current Status:     Scheduled
    455     Status Reason:      Job successfully submitted to Globus
    456    Destination:        ipngrid12.in2p3.fr:2119/jobmanager-pbs-ipno
    457     Submitted:          Fri Jun  6 16:31:52 2008 CEST
    458 *************************************************************
    459 }}}
    460 
    461 A la fin de l'exécution des jobs, quand le status des jobs est "Done", on peut
    462 récupérer les résulat de la collection.
    463 
    464 {{{
    465 [diarra@ipngrid01 ParametricJobs]$ glite-wms-job-status -i jid
    466 
    467 *************************************************************
    468 BOOKKEEPING INFORMATION:
    469 Status info for the Job : https://grid02.lal.in2p3.fr:9000/7X5T_8XEcxUjDeng1q92Wg
    470 Current Status:     Done (Success)
    471 Exit code:          0
    472 Submitted:          Fri Jun  6 16:31:52 2008 CEST
    473 *************************************************************
    474 ...
    475 }}}
    476 
    477 On récupère les résultats :
    478 
    479 {{{
    480 [diarra@ipngrid01 ParametricJobs]$ glite-wms-job-output  -i jid
    481 
    482 Connecting to the service https://grid09.lal.in2p3.fr:7443/glite_wms_wmproxy_server
    483 ================================================================================
    484                         JOB GET OUTPUT OUTCOME
    485 
    486 Output sandbox files for the DAG/Collection :
    487 https://grid02.lal.in2p3.fr:9000/7X5T_8XEcxUjDeng1q92Wg
    488 have been successfully retrieved and stored in the directory:
    489 /home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg
    490 ================================================================================
    491 }}}
    492 
    493 
    494 {{{
    495 [diarra@ipngrid01 ParametricJobs]$ ls -l /home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg/*
    496 -rw-r--r--  1 diarra sii  735 Jun  6 16:40 /home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg/ids_nodes.map
    497 
    498 /home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg/Node_1:
    499 total 0
    500 -rw-r--r--  1 diarra sii  0 Jun  6 16:40 std.err
    501 -rw-r--r--  1 diarra sii 43 Jun  6 16:40 std.out
    502 
    503 /home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg/Node_2:
    504 total 0
    505 -rw-r--r--  1 diarra sii  0 Jun  6 16:40 std.err
    506 -rw-r--r--  1 diarra sii 43 Jun  6 16:40 std.out
    507 
    508 /home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg/Node_3:
    509 total 0
    510 -rw-r--r--  1 diarra sii  0 Jun  6 16:40 std.err
    511 -rw-r--r--  1 diarra sii 43 Jun  6 16:40 std.out
    512 
    513 /home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg/Node_4:
    514 total 0
    515 -rw-r--r--  1 diarra sii  0 Jun  6 16:40 std.err
    516 -rw-r--r--  1 diarra sii 43 Jun  6 16:40 std.out
    517 }}}
    518 
    519 Pour le 3ème job par exemple on a bien utilisé 3 comme valeur du paramètre
    520 conformement au paramétrage de notre .jdl :
    521 
    522 {{{
    523 [diarra@ipngrid01 ParametricJobs]$ cat /home/diarra/JobOutput/diarra_7X5T_8XEcxUjDeng1q92Wg/Node_3/std.out
    524 Debut execution du programme
    525 Parametre = 3
    526 }}}
    527 
    528 Si Parameters est une liste, les paramètres ParameterStart et ParameterStep ne sont pas nécessaires.
    529 
    530 N.B.: il ne faut pas mettre de "" autour des éléments contenus dans Parameters.
    531 
    532 Si nous avons un exécutable my_sim.exe qui doit faire trois simulations alpha, beta et gamma, le .jdl peut contenir les lignes :
    533 
    534 {{{
    535 JobType = "Parametric";
    536 Executable = "my_sim.exe";
    537 Arguments = "_PARAM_";
    538 Parameters = {alpha, beta, gamma};
    539 InputSandbox = {"my_sim.exe", ...};
    540 ...
    541 }}}
    542 
    543 En soumettant ce job, une collection de 3 jobs sera générée et chaque job fera
    544 une simulation avec un des paramètres contenu dans Parameters.
    545 
    546