Motivations et fonctionnalités

  • APCScheduler a pour but de simplifier la soumission de jobs sur la grille de calcul configurée en gLite/WMS (ie commandes commençant par 'glite-wms-...') et de suppléer aux difficultés suivantes d'utilisation :
    • taux de réussite d'un job moins important que sur un cluster :
      • re−soumission de jobs submit NOK, Aborted ou ne passant jamais en mode RUNNING.
    • absence d'installation sur les Compute Element (CE) de librairies spécifiques à un exécutable:
      • technique du parachute et tarball automatique copiant les librairies présentes sur l'User Interface (UI) nécessaires à l'exécutable
    • un CE ne peut pas écrire les fichiers résultats directement sur espace disque local à l'UI:
    • Syntaxe JDL
      • génération automatique du fichier JDL
  • APCScheduler simplifie l'utilisation des Storage Element pour les manipulations les plus courantes grâce à des commandes proches de celles utilisées en UNIX
    • apcgrid−ls
    • apcgrid−mkdir
    • apcgrid−cp, récursive option -r et filtrage par expression régulière option -e
    • apcgrid−rm, récursive option -r et filtrage par expression régulière option -e

La Virtual Organisation (VO), le SE et le catalogue sont stockées dans un fichier de configuration créé par la procédure apcgrid-init. Ces informations n'apparaissent pas explicitement dans les commandes apcgrid-xxx pour ne pas alourdir la syntaxe. Ainsi la commande apcgrid−ls peut être appelé sans argument et le répertoire par défaut est la racine du catalogue:

apcui01:~>apcgrid−ls
drwxrwxr−x   0 75    10539 0 Dec 18 2007 atelier
drwxrwxr−x   5 155   10539 0 Apr 29 11:58 colley
drwxrwxr−x 11 68     10539 0 Jul 08 2008 generated
drwxrwxr−x   5 71    10539 0 Jan 18 15:57 public

apcui01:~>apcgrid−cp temp se:colley/test −r −e '.*.ps'
cp temp/Res_CorFunc.ps
cp temp/Res_ModArg.ps
cp temp/Res_Mod.ps
cp temp/Res_ReIm.ps
cp temp/simuplanck.ps

apcui01:~>apcgrid−ls colley/test
−rw−rw−r−−   1 155     10539     897971 Apr 29 13:11 Res_CorFunc.ps
−rw−rw−r−−   1 155     10539     560021 Apr 29 13:11 Res_Mod.ps
−rw−rw−r−−   1 155     10539     555922 Apr 29 13:11 Res_ModArg.ps
−rw−rw−r−−   1 155     10539     823566 Apr 29 13:11 Res_ReIm.ps
−rw−rw−r−−   1 155     10539     263809 Apr 29 13:11 simuplanck.ps

apcui01:~>apcgrid−rm  colley/test −e '.*Mod.*'
rm colley/test/Res_Mod.ps
rm colley/test/Res_ModArg.ps

apcui01:~>apcgrid−ls  colley/test
−rw−rw−r−−   1 155      10539                897971 Apr 29 13:11 Res_CorFunc.ps
−rw−rw−r−−   1 155      10539                823566 Apr 29 13:11 Res_ReIm.ps
−rw−rw−r−−   1 155      10539                263809 Apr 29 13:11 simuplanck.ps

  • APCScheduler permet de soumettre un job sur la grille en une ligne avec la commande apcgrid-run qui distingue 3 sortes d'applications:
    • exécutable, apcgrid-run mettra en place la techinque du parachute
    • tarball sur un SE, voir paragraphe "'Parachute Method' avec APCScheduler"
    • simple script comme un déclencheur de parachute, exemple avec la commande echo affichant le nom du Compute Element de la grille sur lequel il y a été exécuté :
apcui01:~>apcgrid-run echo -p 'Hello from $HOSTNAME'

Submit echo_7HlqC4 on wms ipngrid28.in2p3.fr is ok.
echo_7HlqC4 status is Waiting
echo_7HlqC4 status is Waiting
echo_7HlqC4 status is Scheduled
echo_7HlqC4 status is Running
echo_7HlqC4 status is Running
echo_7HlqC4 status is Running
echo_7HlqC4 status is Running
echo_7HlqC4 status is Done
Hello from polgrid132.in2p3.fr
apcui01:~>
  • APCScheduler permet aussi de soumettre des jobs sur le cluster du CCIN2P3 via Grid Engine
    • Détermination de la classe séquentielle ou parallèle suivant les options MPI renseignées
    • Vérification que les ressources demandées correspondantes à une classe existante (sinon GE laisse le job en attente sans avertir l'utilisateur)
  • APCScheduler permet aussi de soumettre des jobs en local (le job est un simple process UNIX).
    • en vue qu'une utilisation sur son ordinateur personnel ou sur un noeud de calcul pour réaliser une chaine de traitement de données
  • APCScheduler propose pour tous les sites (grille gLite, cluster CCIN2P3, local) un mécanisme de soumission et de surveillance d'un ensemble de jobs de manière régulée afin de ménager les ressources systèmes, voir paragraphe 'Exemple de code APCScheduler du type Monte-Carlo' de ce wiki.

'Parachute Method' avec APCScheduler

APCScheduler permet de créer automatique un tarball afin de mettre en place la technique du parachute. Le 'déclenchement du parachute' s'effectue de manière transparente pour l'utilisateur. La commande apcgrid-tarball crée un tarball à partir d'un exécutable compilé sur l'User Interface (UI).

apcui01:~/Grid/demo>apcgrid-dotarball -h
usage: apcgrid-dotarball executable -t se:user/myTarBall [options]

Help:
apcgrid-dotarball -h

Comment:
apcgrid-dotarball do a tarball can be call by apcgrid-run

Example, do tarball with 'testConvolFFT' binary executable,used 'script_loop.sh' to call 
it and save it on SE 'user/tarballtest' 
apcgrid-dotarball testConvolFFT -t se:user/tarballtest -s script_loop.sh 

options:
  -h, --help            show this help message and exit
  -t TARBALL, --tarball-name=TARBALL
                        Mandatory. tarball name on SE, exemple:
                        se:user/tardir/tarballAppli .
  -l LIBPATH, --lib-path=LIBPATH
                        Library path for exe. Alternative LD_LIBRARY_PATH
                        solution
  -s MAINSCRIPT, --main-script=MAINSCRIPT
                        Instead call exe, apcgrid will call this script. This
                        script can do a loop on exe and copy at the end output
                        in toUI directory
  -i INPUT              Input file and directory for tarball. Used "" for
                        several inputs. Example : -i "/data/maps/mask
                        /data/maps" 
  --se_out=SE_OUTDIR    Storage element output directory, like
                        'user/exe_output'.
  -v VERBOSE, --verbose=VERBOSE
                        Verbosity level [0..20]
  -k                    Keep tarball in current directory
  --se=SE               Storage Element name, like 'node12.datagrid.cea.fr'.

L'environnement sur le Compute Element (CE) étant le même que sur l'UI, l'exécutable est utilisable sur un CE. Il faut cependant importé les librairies non système utilisées, pour exemple :
apcui01:~/Grid/demo>ldd testConvolFFT
    libtoto.so => /home/colley/Grid/install/src/lib/libtoto.so (0x00002b9c257b6000)
    libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000031fe400000)
    libm.so.6 => /lib64/libm.so.6 (0x000000392e800000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000031fdc00000)
    libc.so.6 => /lib64/libc.so.6 (0x000000392dc00000)
    libfftw3.so.3 => /home/colley/Grid/install/fftw-3.2.1/.libs/libfftw3.so.3 (0x00002b9c258eb000)
    /lib64/ld-linux-x86-64.so.2 (0x000000392d800000)

testConvolFFT utilise libtoto.so et libfftw3.so.3.
Des fichiers ou répertoires contenant des données doivent aussi être inclus au tarball, par exemple un répertoire data
apcui01:~/Grid/demo>ls data
F_tables_old.txt  HeraldEventsAllReduced.txt  pdg_table.txt    Probas1Mpc.txt  Ptrues.txt         sigmaPions.txt
F_tables.txt      MyIntLength.txt             Probas10Mpc.txt  Probas.txt      RadioNuclides.txt

La commande apcgrid-dotarball permet de créer ce tarball et de le copier sur un Storage Element (SE)
apcui01:~/Grid/demo> apcgrid-dotarball testConvolFFT -t se:user/MyTarBall -k -i data
guid:4d733285-efe7-4697-bfb8-864407cc7ca5

Visualisation du tarball créé
apcui01:~/Grid/demo>mkdir tarball/
apcui01:~/Grid/demo>tar -xzf testConvolFFT_ckRyCs.tar.gz -C tarball/
apcui01:~/Grid/demo>tree tarball/
tarball/
|-- data
|   |-- F_tables.txt
|   |-- F_tables_old.txt
|   |-- HeraldEventsAllReduced.txt
|   |-- MyIntLength.txt
|   |-- Probas.txt
|   |-- Probas10Mpc.txt
|   |-- Probas1Mpc.txt
|   |-- Ptrues.txt
|   |-- RadioNuclides.txt
|   |-- pdg_table.txt
|   `-- sigmaPions.txt
|-- lib
|   |-- libfftw3.so.3
|   `-- libtoto.so
|-- python
|   `-- APCScheduler.py
|-- tarballScript.py
|-- testConvolFFT
|-- toSE
`-- toUI

Dans le répertoire lib, on trouve les 2 librairies non système, le répertoire data a été entièrement copié. Les 2 répertoires toUI et toSE dit "boite aux lettres" permettent le rappatriement des fichiers vers l'UI ou le SE, pour plus d'information voir documentation APCScheduler. Ce tarball est utilisable par apcgrid-run ou un script python APCScheduler, comme dans l'exemple suivant.

Exemple de code APCScheduler du type Monte-Carlo

Voici un exemple de code APCScheduler python lancant 1000 jobs avec des paramètres différents de manière régulée pas plus de 200 jobs running à la fois. Dans cet exemple APCScheduler répartit lui-même les jobs sur les workers disponibles, et exclura le WMS grid25.xxx.in2p3.fr. L'exécutable est défini par un tarball 'se:dupont/TarExeTest' construit avec la commande UNIX apcgrid-tarball. Les fichiers resultats présents dans le répertoire toUI du tarball de chaque CE seront copiés automatiquement vers le répertoire de travail de l'UI /home/dupont/Grid/Run/test/24. Lorsque tous les jobs seront terminés un mail résumé sera envoyé à l'utilisateur.

#! /usr/bin/python

from APCScheduler import *

# work directory
setRepository('/home/dupont/Grid/Run/test/24')
setVerboseLevel(1)

# specifie my gLite scheduler
MyGLITE = SchedulerGLITE()
MyGLITE.loadBalancingCE()
MyGLITE.excludeWMS('grid25.xxx.in2p3.fr')

# define a run ie a set of job 
Run = MultiJobsClass('Monte-Carlo test')

for i in range(1000):    
    MyExe = AppliParachute('se:dupont/TarExeTest', label='test_%d'%i)
    MyExe.setArg('%d'%i) 
    Job = JobClass(MyExe, MyGLITE)   
    Run.append(Job)

Run.submitAndWaitAll(MaxRunning=200)
Run.sendMailResult()

Les informations concernant la Virtual Organisation (VO), le Storage Element sur lequel transite les fichiers à destination de l'UI sont stockées dans un fichier de configuration créé par la procédure UNIX apcgrid-init. Si ces informations ne sont pas explicitement déclarées dans le script python, APCSheduler consultera le fichier de configuration, ce qui allège l'écriture du script et le rend plus portable.