wiki:tutoGANGACmdLine

GANGA en mode ligne de commande

Ce tutoriel montre le principe de fonctionnement de GANGA. Le job exécuté est celui de l'exemple de soumission de job avec LCG2.
Pour lancer un job, vous avez besoin du fichier de script job.sh qui va être exécuté sur la machine distante (le WN)

  • Lancement de GANGA

    L'exécutable GANGA se trouve sous $GANGA_INSTALL_DIR/install/X.Y.Z/bin où X.Y.Z est la version de GANGA.
    Pour plus de facilité, mettez à jour votre variable d'environnement $PATH avec le chemin vers l'executable. Pour lacer GANGA il suffit de taper la commande ganga.
    [lambert@lpsc-ui ~]$ ganga
    
    *** Welcome to Ganga ***
    Version: Ganga-5-0-4
    Documentation and support: http://cern.ch/ganga
    Type help() or help('index') for online help.
    
    This is free software (GPL), and you are welcome to redistribute it
    under certain conditions; type license() for details.
    
    
    ATLAS User Support is provided by the Hypernews Forum Ganga User and Developers
    You find the forum at https://hypernews.cern.ch/HyperNews/Atlas/get/GANGAUserDeveloper.html
    or you can send an email to hn-atlas-GANGAUserDeveloper@cern.ch
    
    GangaAtlas                         : INFO     Tasks read from file
    Ganga.GPIDev.Lib.JobRegistry       : INFO     Found 1 jobs in "jobs", completed in 0 seconds
    Ganga.GPIDev.Lib.JobRegistry       : INFO     Found 1 jobs in "templates", completed in 0 seconds
    
    
    In []:
    
    
    PS: Si il s'agit de votre première session, GANGA peut vous demander votre passphrase afin de créer un proxy VOMS à partir de votre certificat. Ce proxy sera utiliser par l'application lors de la soumission de job.
  • Définir un objet Job

    L'objet Job représente votre job, vous allez ensuite renseigner certains de ses attributs avant de le soumettre en utilisant ses fonctionnalités.
    Après le lancement de GANGA, vous obtenez un prompt, pour définir l'objet Job tapez la commande suivante.
    In []:j=Job()
    
    j designe maintenant pour GANGA une instance d'un objet de type Job en mémoire.
  • Définir les paramètres du Job

    Notre job prend deux arguments en entrée. Nous l'indiquons à notre instance de job de la façon suivante :
    In []:j.application = Executable(exe = File('~/TestGrid/edg3/job.sh'), args=['girafe','flipflap'])
    
  • Soumission de job

    Pour soumettre le job, il faut utiliser la fonctionnalité submit de l'instance.
    In []:j.submit()
    Ganga.GPIDev.Lib.Job               : INFO     submitting job 18
    Ganga.GPIDev.Adapters              : WARNING  file /atlas/lambert/TestGrid/edg3/job.sh is not executable, overriding executable permissions in the input sandbox
    Ganga.GPIDev.Adapters              : INFO     submitting job 18 to Local backend
    Ganga.GPIDev.Lib.Job               : INFO     job 18 status changed to "submitted"
    Out[3]: 1
    
  • Obtenir l'ID du job

    Avec GANGA les jobs ont leur propre ID. Pour l'obtenir exécutez les commande suivante
    In []:print j.id
    18
    Ganga.GPIDev.Lib.Job               : INFO     job 18 status changed to "running"
    Ganga.GPIDev.Lib.Job               : INFO     job 18 status changed to "completed"
    
    PS: En cas de changements de statut du job, les changements apparaissent quand vous appuyer sur la touche return.
  • Obtenir le statut du job
    In []:j.status  
    Out[]: completed
    
  • Obtenir une description complete du job

    Rien de plus simple, tapez j (la variable qui représente l'instance du Job) :
    In []:j
    Out[]: Job (
     status = 'completed' ,
     name = '' ,
     inputdir = '/atlas/lambert/gangadir/workspace/lambert/LocalAMGA/18/input/' ,
     outputdir = '/atlas/lambert/gangadir/workspace/lambert/LocalAMGA/18/output/' ,
     outputsandbox = [] ,
     id = 18 ,
     info = JobInfo (
        submit_counter = 1 
        ) ,
     inputdata = None ,
     merger = None ,
     inputsandbox = [] ,
     application = Executable (
        exe = File(name='/atlas/lambert/TestGrid/edg3/job.sh',subdir='.') ,
        env = {} ,
        args = ['girafe', 'flipflap'] 
        ) ,
     outputdata = None ,
     splitter = None ,
     subjobs = 'Job slice:  jobs(18).subjobs (0 jobs)
    ' ,
     backend = Local (
        actualCE = 'lpsc-ui.in2p3.fr' ,
        workdir = '/tmp/tmptrit10' ,
        id = 2126 ,
        exitcode = 0 
        ) 
     ) 
    
  • Récupérer la sortie du job

    Les sortie du job sont stockées dans le répertoire indiqué dans le paramètre outputdir (voir ci-dessus)
    Il y a deux façon de lire une sortie de job; En utilisant directement les commandes shell avec un '!' devant
    In []:!ls $j.outputdir
    __jobstatus__  stderr  stdout  __syslog__
    
    In []:!cat $j.outputdir/stdout
    Comment t'appelles tu girafe ?
    Je m'appelle flipflap !
    
    ou alors en définnissant un objet fichier et en utilisant ses fonctionnalités
    In []:outfile = file(j.outputdir+'stdout')
    
    In []:print outfile.read()
    Comment t'appelles tu girafe ?
    Je m'appelle flipflap !
    
    une autre variante consiste à ouvrir le fichier avec le programme associé à son extension (nécessite d'avoir un service X11 qui tourne)
    In []:j.peek('stdout')
    
    dans notre cas, le fichier est ouvert avec vi dans une nouvelle fenêtre



  • Obtenir la liste des jobs lancés dans GANGA
    GANGA conserve la liste des jobs qui ont été lancés ainsi que leur statut, du moins jusqu'à ce que le job soit 'effacé'.
    La commande qui permet d'obtenir la liste des jobs est jobs
    In []:jobs
    Out[]: 
    Job slice:  jobs (3 jobs)
    --------------
    # fqid      status        name   subjobs      application          backend                               backend.actualCE  
    #   14   completed   testGanga                 Executable              LCG     lpsc-ce.in2p3.fr:2119/jobmanager-pbs-atlas  
    #   17         new                             Executable            Local                                                 
    #   18   completed                             Executable            Local                               lpsc-ui.in2p3.fr  
    
  • Effacer un job de GANGA
    In [21]:jobs(18).remove()
    Ganga.GPIDev.Lib.Job               : INFO     removing job 18
    Ganga.Core.FileWorkspace           : WARNING  Cannot delete /atlas/lambert/gangadir/workspace/lambert/LocalAMGA/18/ after 6 retries due to:  exceptions.OSError:[Errno 16] Device or resource busy: '/atlas/lambert/gangadir/workspace/lambert/LocalAMGA/18/output/.nfs004466b00000000c' (there might some AFS/NSF lock files left over)
    
    In [22]:jobs
    Out[22]: 
    Job slice:  jobs (2 jobs)
    --------------
    # fqid      status        name   subjobs      application          backend                               backend.actualCE  
    #   14   completed   testGanga                 Executable              LCG     lpsc-ce.in2p3.fr:2119/jobmanager-pbs-atlas  
    #   17         new                             Executable            Local                                                 
    

up

Last modified 16 years ago Last modified on 26/08/2008 14:56:58

Attachments (2)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.