Changes between Version 4 and Version 5 of Tutorial/JobSubm


Ignore:
Timestamp:
Feb 7, 2007, 2:15:46 PM (19 years ago)
Author:
manyong
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Tutorial/JobSubm

    v4 v5  
    2222 1. Modifiez le fichier ''HelloWorld.jdl'' de manière à ce  qu'il n'appelle plus '''/bin/echo''' mais le script ''HelloWorldScript.sh''.  Pour cela :
    2323  * ''' la ligne "Executable" doit être "HelloWorldScript.sh",
    24   *  la ligne ``Argument'' peut rester avec "Hello World",
     24  *  la ligne "Argument" peut rester avec "Hello World",
    2525  *  vous devez de plus définir le paramètre "InputSandbox". Tous les fichiers listés dans "InputSandbox" sont transfèrés avec le job. La syntaxe de cette ligne est : 
    2626  * ‘‘‘InputSandbox = "HelloWorldScript.sh"; ‘‘‘
    27 Si vous soumettez plusieurs jobs avec les mêmes fichiersd'entrée, une nouvelle copie de chaque fichier est créée.   Exécutez le job et vérifiez que tout fonctionne.On peut utiliser n'importe quel script, cependant le shellutilisé par le script (indiqué dans la ligne "#!"") doit exister dans le "Worker Node".
    28  1.  Modifier de nouveau ''HelloWorld.jdl'' de manière à ce  qu'il appelle cette fois l'exécutable  ''myhostname''.  Vous  pouvez visualiser la source de cet exécutable, qui est un  programme C :  ''myhostname.c''. Vous n'avez cette fois pas besoin de définir d'argument.  Il fautmodifier la ligne "InputSandbox".  Exécutez le job et vérifiez que tout fonctionne.  Sur quel ordinateura tourné votre job?
     27Si vous soumettez plusieurs jobs avec les mêmes fichiersd'entrée, une nouvelle copie de chaque fichier est créée.   Exécutez le job et vérifiez que tout fonctionne.On peut utiliser n'importe quel script, cependant le shell utilisé par le script (indiqué dans la ligne "#!") doit exister dans le "Worker Node".
     28 1.  Modifier de nouveau ''HelloWorld.jdl'' de manière à ce  qu'il appelle cette fois l'exécutable  ''myhostname''.  Vous  pouvez visualiser la source de cet exécutable, qui est un  programme C :  ''myhostname.c''. Vous n'avez cette fois pas besoin de définir d'argument.  Il fautmodifier la ligne "InputSandbox".  Exécutez le job et vérifiez que tout fonctionne.  Sur quel ordinateur a tourné votre job?
    2929 1.  L'exécution d'un programme en C compilé n'est pas  forcément pratique : l'exécutable peut être d'une grande  taille, dépendre de plusieurs fichiers, ou dépendre d'un  environnement d'exécution particulier.Une solution consiste à compiler le programme directement sur le CE. Modifier une nouvelle fois ''HelloWorld.jdl'' de manière à ce  qu'il appelle le script ''buildandrun.sh'', avec pour argument  "myhostname".  Testez ce script seul pour comprendre l'argument nécessaire.Exécutez le job et vérifiez qu'il fonctionne toujours.  Votre job a-t-iltourné sur le même ordinateur que précédemment?
    3030
    3131=== Pour comprendre les "Requirements" and "Rank" ===
    32 Il y a deux clés très importantes dans les fichiers JDL :"Requirements" et "Rank".  Les valeurs pour les clés Requirementset Rank sont des expressions.  Votre job va tourner uniquement sur uneressource qui a une valeur "true" pour l'expression Requirements. S'il y a plusieurs ressources qui ont une valeur "true", le systèmeutilise l'expression Rank pour choisir la meilleure ressource. La ressource qui a la plus grande valeur est choisie. S'il y a plusieurs ressources avec la même valeur Rank, la ressource utilisée est choisie aléatoirement entre ces ressources de même valeur Rank.On utilise la VO "dteam" ici pour voir plus de ressources. La VO vo.u-psud.fr est autorisée uniquement sur les deux sites de la GRIF. Réinitialisez votre proxy avecla commande '''voms-proxy-init''' mais ''n'utilisez pas" l'option "--voms".
    33  1. Plusieurs valeurs peuvent être utilisées pour définir  les expressions Requirements et Rank\@.  Par exemple, ajoutez  l'expression ci-dessous dans le fichier  ‘‘HelloWorld.jdl pour  choisir tous les sites qui permettent à un job d'utiliser plus d'une  heure de temps CPU\@.   * ‘‘‘Requirements = (other.GlueCEPolicyMaxCPUTime > 60); ‘‘‘Pour voir la liste des ressources acceptables utilisez la commande ‘‘‘edg-job-list-match et l'option ``-vo dteam''.  Combien de ressources autorisent les jobs qui utilisentplus d'une heure de temps CPU?  Plus de deux heures?  Plus de 10000minutes?  1.  Pour choisir des sites spécifiques, on peut utiliser le nom de la  ressource.  Pour choisir tous les sites en France, changez la valeur  de Requirements comme suit :  * ‘‘‘Requirements = RegExp(".*\.fr:.*",other.GlueCEUniqueID); ‘‘‘Le premier argument est une expression régulière.  Combien y a-t-il desites en France?  Combien de sites en France autorisentles jobs qui utilisent plus d'une heure de temps CPUs?  Modifiez laligne Requirements pour choisir une ressource.  Trouvez lasyntaxe correcte pour exclure un site.Une option ``-r'' existe pour la commande  ‘‘‘edg-job-submit quipermet de choisir une ressource spécifique.  Cependant cette option évitetous le processus ``MatchMaking'' de Resource Broker et n'ajoute pasle fichier nécessaire (le fichier ``BrokerInfo'') pour la gestion dedonnées.  La technique avec other.GlueCEUniqueID est plus flexibleet plus sûre. 1.  Ajoutez les lignes suivantes pour utiliser la  ressource avec le plus grand nombre des CPUs libres:  * ‘‘‘Rank = other.GlueCEStateFreeCPUs; ‘‘‘Utilisez la commande  ‘‘‘edg-job-list-match pour visualiser lerésultat. (L'ordre indique le Rank\@.  La ressource la plus intéressante est lapremière). Si on utilise le valeur ``-other.GlueCEStateFreeCPUs'', quelleressource le Broker va t-il choisir?Que fait le RB si on utilise le valeur ``Rank = 1''?=== L'environnent d'exécution sur le Worker NodeChaque utilisateur de la grille est mappé dans un compte local pourchaque site.  Maintenant l'accès aux ressources locales est contrôlépar les droits de ce compte.Réinitialisez votre proxy avec l'option ``--voms  vo.u-psud.fr ''. 1.  Visualisez le contenu du fichier JDL  ‘‘whoami.jdl.Lancez le job et récupérez l'output.  Visualisez le fichier ‘‘std.out.  Sur quel compte êtes-vous mappé? 1.  Visualisez le contenu du script  ‘‘envvar.jdl.  Soumettez un  job qui lance ce script dans la grille.  Regardez la liste des  variables.  Combien de variables concernent la grille? 1.  Ecrivez un job qui liste les versions des logiciels disponibles  dans le ``Worker Node''.  On peut utiliser la commande  ‘‘‘rpm  pour le faire.=== Soumission d'une job MPIBeaucoup de disciplines utilisent des jobs parallèles. MPI (Message PassingInterface) est un protocole qui permet la communication entres les tâchesparallèles. Les jobs MPIs sont supportés dans la grille. La grille supporte deuxinstallations différentes du MPI : LAM, et OpenMPI\@. Le support de MPICH etMPICH2 seront bientôt disponibles.Le logiciel  ‘‘‘mpi-start\ développé par le projet européen int.eu.gridfacilite l'utilisation du MPI dans la grille. L'utilisateur peut définir : 1.  Un script à exécuter avant le binaire MPI (par exemple pour compiler le programme), 1.  Le programme lui-même, et 1.  Un script à exécuter après le binaire MPI (par exemple pour enregistrerles résultats dans un SE).Le fichier  ‘‘mpi-hooks.sh définit les scripts à exécuter avant et aprèsle binaire MPI\@. Le fichier JDL définit les paramètres comme des nombres de CPUpour le job. 1.  Lancez un job avec  ‘‘mpi-start-lam.jdl. Regardez la sortie du job. S'il a fonctionné correctement, on pourra lire des lignes telles que:  * ‘‘‘Hello world! from processor 3 out of 8 ‘‘‘ 1.  Changez le nombre de CPUs utilisé par le job. Vérifiez que le job marchetoujours.  Fonctionne t-il aussi si vous spécifiez 1000 CPU ?La grille supporte les jobs MPI sur un seul site. MPI avec esclaves surplusieurs sites n'est pas supporté. Le support du MPI évolue très rapidementdans la grille en ce moment. Ceci va se stabiliser dans quelques mois.
     32Il y a deux clés très importantes dans les fichiers JDL :"Requirements" et "Rank".  Les valeurs pour les clés Requirementset Rank sont des expressions.  Votre job va tourner uniquement sur uneressource qui a une valeur "true" pour l'expression Requirements. S'il y a plusieurs ressources qui ont une valeur "true", le système utilise l'expression Rank pour choisir la meilleure ressource. La ressource qui a la plus grande valeur est choisie. S'il y a plusieurs ressources avec la même valeur Rank, la ressource utilisée est choisie aléatoirement entre ces ressources de même valeur Rank. On utilise la VO "dteam" ici pour voir plus de ressources. La VO vo.u-psud.fr est autorisée uniquement sur les deux sites de la GRIF. Réinitialisez votre proxy avecla commande '''voms-proxy-init''' mais ''n'utilisez pas'' l'option "--voms".
     33 1. Plusieurs valeurs peuvent être utilisées pour définir  les expressions Requirements et Rank.  Par exemple, ajoutez  l'expression ci-dessous dans le fichier  ''HelloWorld.jdl'' pour  choisir tous les sites qui permettent à un job d'utiliser plus d'une  heure de temps CPU.   
     34  * ‘‘‘Requirements = (other.GlueCEPolicyMaxCPUTime > 60); ‘‘‘ Pour voir la liste des ressources acceptables utilisez la commande '''edg-job-list-match''' et l'option "-vo dteam".  Combien de ressources autorisent les jobs qui utilisentplus d'une heure de temps CPU?  Plus de deux heures?  Plus de 10000minutes?
     35 1. Pour choisir des sites spécifiques, on peut utiliser le nom de la  ressource.  Pour choisir tous les sites en France, changez la valeur  de Requirements comme suit :
     36  * ‘‘‘Requirements = RegExp(".*\.fr:.*",other.GlueCEUniqueID); ‘‘‘ Le premier argument est une expression régulière. Combien y a-t-il de sites en France?  Combien de sites en France autorisent les jobs qui utilisent plus d'une heure de temps CPUs?  Modifiez la ligne Requirements pour choisir une ressource. Trouvez la syntaxe correcte pour exclure un site. Une option "-r" existe pour la commande  '''edg-job-submit''' qui permet de choisir une ressource spécifique. Cependant cette option évite tous le processus "MatchMaking" de Resource Broker et n'ajoute pasle fichier nécessaire (le fichier "BrokerInfo") pour la gestion dedonnées. La technique avec other.GlueCEUniqueID est plus flexibleet plus sûre.
     37 1. Ajoutez les lignes suivantes pour utiliser la ressource avec le plus grand nombre des CPUs libres:
     38  * ‘‘‘Rank = other.GlueCEStateFreeCPUs; ‘‘‘ Utilisez la commande '''edg-job-list-match''' pour visualiser lerésultat. (L'ordre indique le Rank. La ressource la plus intéressante est la première). Si on utilise la valeur "-other.GlueCEStateFreeCPUs", quelle ressource le Broker va t-il choisir? Que fait le RB si on utilise le valeur "Rank = 1"?
     39
     40=== L'environnent d'exécution sur le Worker Node ===
     41Chaque utilisateur de la grille est mappé dans un compte local pourchaque site. Maintenant l'accès aux ressources locales est contrôlé par les droits de ce compte. Réinitialisez votre proxy avec l'option "--voms  vo.u-psud.fr".
     42 1. Visualisez le contenu du fichier JDL ''whoami.jdl.'' Lancez le job et récupérez l'output. Visualisez le fichier ''std.out''. Sur quel compte êtes-vous mappé?
     43 1. Visualisez le contenu du script ''envvar.jdl''. Soumettez un  job qui lance ce script dans la grille. Regardez la liste des  variables.  Combien de variables concernent la grille?
     44 1. Ecrivez un job qui liste les versions des logiciels disponibles  dans le "Worker Node". On peut utiliser la commande '''rpm'''  pour le faire.
     45
     46=== Soumission d'un job MPI ===
     47Beaucoup de disciplines utilisent des jobs parallèles. MPI (Message PassingInterface) est un protocole qui permet la communication entre les tâches parallèles. Les jobs MPIs sont supportés dans la grille. La grille supporte deux installations différentes du MPI : LAM, et OpenMPI. Le support de MPICH et MPICH2 seront bientôt disponibles. Le logiciel '''mpi-start''' développé par le projet européen int.eu.gridfacilite l'utilisation du MPI dans la grille. L'utilisateur peut définir :
     48 1. Un script à exécuter avant le binaire MPI (par exemple pour compiler le programme),
     49 1. Le programme lui-même, et
     50 1. Un script à exécuter après le binaire MPI (par exemple pour enregistrer les résultats dans un SE).
     51Le fichier ''mpi-hooks.sh'' définit les scripts à exécuter avant et aprèsle binaire MPI. Le fichier JDL définit les paramètres comme des nombres de CPUpour le job.
     52 1. Lancez un job avec ''mpi-start-lam.jdl.'' Regardez la sortie du job. S'il a fonctionné correctement, on pourra lire des lignes telles que: 
     53  * ‘‘‘Hello world! from processor 3 out of 8 ‘‘‘
     54 1. Changez le nombre de CPUs utilisé par le job. Vérifiez que le job marche toujours. Fonctionne t-il aussi si vous spécifiez 1000 CPU?
     55La grille supporte les jobs MPI sur un seul site. MPI avec esclaves surplusieurs sites n'est pas supporté. Le support du MPI évolue très rapidementdans la grille en ce moment. Ceci va se stabiliser dans quelques mois.