Changes between Version 22 and Version 23 of Tutorial/JobSubm
- Timestamp:
- Oct 18, 2007, 4:16:37 PM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Tutorial/JobSubm
v22 v23 17 17 1. Lorsque le job est terminé ("Done(Success)"), récupérez les données générées à l'aide de la commande '''edg-job-get-output'''. Le répertoire utilisé pour stocker les résultats dépend de la configuration du site. Au LAL, le répertoire est ''~/JobOutput/''. Ce répertoire doit exister; créez-le si nécessaire. 18 18 * '''{{{edg-job-get-output <jobid> }}}''' La réponse indique le répertoire qui contient les résultats du job. 19 1. Vérifiez que tout s'est déroulé correctement en consultant les fichiers ''std.out'' et ''std.err''. Le fichier ''std.err'' doit être vide et ''std.out'' doit avoir "Hello World". Cette procédure simple est utilisée pour le suivi de tous les jobs. Il est possible d'utiliser les options "-o", "-i", et "-noint" qui permettent degérer un plus grand nombre de jobs avec les commandes '''edg-job-*'''. Regardez les informations avec l'option "-help" ou la commande '''man'''. Il existe également des APIs (java, c, c++) qui permettent la gestiondes jobs vers un programme compilé. Ce tutorial ne couvre pas cesAPIs.19 1. Vérifiez que tout s'est déroulé correctement en consultant les fichiers ''std.out'' et ''std.err''. Le fichier ''std.err'' doit être vide et ''std.out'' doit avoir "Hello World". Cette procédure simple est utilisée pour le suivi de tous les jobs. Il est possible d'utiliser les options "-o", "-i", et "-noint" qui permettent de gérer un plus grand nombre de jobs avec les commandes '''edg-job-*'''. Regardez les informations avec l'option "-help" ou la commande '''man'''. Il existe également des APIs (java, c, c++) qui permettent la gestion des jobs vers un programme compilé. Ce tutorial ne couvre pas cesAPIs. 20 20 21 21 === Fichier JDL : modification et édition === … … 25 25 * 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 : 26 26 * '''{{{InputSandbox = "HelloWorldScript.sh"; }}}''' 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 shell utilisé par le script (indiqué dans la ligne "#!") doit exister dans le "Worker Node". 27 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 faut modifier la ligne "InputSandbox". Exécutez le job et vérifiez que tout fonctionne. Sur quel ordinateur a tourné votre job?28 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?27 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 faut modifier la ligne "InputSandbox". Exécutez le job et vérifiez que tout fonctionne. Sur quel ordinateur a tourné votre job? 28 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-il tourné sur le même ordinateur que précédemment? 29 29 30 30 ''Note : si la VO que vous utilisez est acceptée par plusieurs CE, il peut être utile d'ajouter la ligne suivante dans votre JDL pour forcer le job à aller sur un CE particulier (au LAL dans l'exemple) :'' … … 35 35 === Pour comprendre les "Requirements" and "Rank" === 36 36 37 Il y a deux mots-clés très importants dans les fichiers JDL : `Requirements` et `Rank . Leurs valeurs sont des expressions. Ces 2 mot-clés servent à s electionner le CE auxquelsera envoyé le job.37 Il y a deux mots-clés très importants dans les fichiers JDL : `Requirements` et `Rank . Leurs valeurs sont des expressions. Ces 2 mot-clés servent à sélectionner le CE auxquels sera envoyé le job. 38 38 * `Requirements` : ce mot-clé permet de sélectionner les CE qui ont les ressources requises pour exécuter le job. L'expression des ressources peut porter sur n'importe quelle information publié dans le système d'information (BDII). En particulier, le nombre de CPUs libres, le temps d'exécution minimum, la quantité de mémoire... La valeur est une condition logique utilisant une syntaxe assez habituelle (proche de celle du langage C). On peut utiliser des ''regular expressions'' avec les chaines de caractères, en utilisant la fonction `RegExp("pattern",attribut)`. Par exemple, pour sélectionner un CE appartenant au domaine `lal.in2p3.fr`, on pourra utiliser l'expression : 39 39 {{{ … … 67 67 1. Que se passe-t-il si on utilise `Rank = 1;`? 68 68 69 ''Note : 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 de données. La technique avec other.GlueCEUniqueID est plus flexibleet plus sûre.''69 ''Note : 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 de données. La technique avec other.GlueCEUniqueID est plus flexible et plus sûre.'' 70 70 71 71 Pour plus d'information, consulter la liste des [http://server11.infn.it/workload-grid/docs/DataGrid-01-NOT-0101-0_6-Note.pdf attributs] JDL valides. … … 73 73 === L'environnent d'exécution sur le Worker Node === 74 74 75 Chaque utilisateur de la grille est mappé dans un compte local pour chaque 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.lal.in2p3.fr".75 Chaque utilisateur de la grille est mappé dans un compte local pour chaque 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.lal.in2p3.fr". 76 76 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é? 77 77 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? … … 90 90 Après avoir fait le `voms-proxy-init` et avant de soumettre le job, il faut exécuter la commande `myproxy-init`, comme suit : 91 91 {{{ 92 myproxy-init -d grid02.lal.in2p3.fr92 myproxy-init -d -s grid02.lal.in2p3.fr 93 93 }}} 94 94 95 La configuration d'un serveur MyProxy détermine les resource brokers autorisés à utiliser le service pour renouvel ler des proxies. Le serveur MyProxy de GRIF, `grid02.lal.in2p3.fr`, accepte les demandes de renouvellement en provenance du RB de GRIF, `grid09.lal.in2p3.fr`.95 La configuration d'un serveur MyProxy détermine les resource brokers autorisés à utiliser le service pour renouveler des proxies. Le serveur MyProxy de GRIF, `grid02.lal.in2p3.fr`, accepte les demandes de renouvellement en provenance du RB de GRIF, `grid09.lal.in2p3.fr`. 96 96 97 97 On peut voir la liste des proxies valides avec la commande `myproxy-info` et on peut mettre fin au renouvellement du proxy (avant ou pendant l'exécution du job) avec la commande `myproxy-destroy`. '''L'option "-d" doit être toujours être utilisée avec l'ensemble des commandes myproxy-*.''' … … 100 100 101 101 === Soumission d'un job MPI === 102 Beaucoup 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.grid facilite l'utilisation du MPI dans la grille. L'utilisateur peut définir :102 Beaucoup 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.grid facilite l'utilisation du MPI dans la grille. L'utilisateur peut définir : 103 103 1. Un script à exécuter avant le binaire MPI (par exemple pour compiler le programme), 104 104 1. Le programme lui-même, et 105 105 1. Un script à exécuter après le binaire MPI (par exemple pour enregistrer les résultats dans un SE). 106 Le fichier ''mpi-hooks.sh'' définit les scripts à exécuter avant et après le binaire MPI. Le fichier JDL définit les paramètres comme des nombres de CPUpour le job.106 Le fichier ''mpi-hooks.sh'' définit les scripts à exécuter avant et après le binaire MPI. Le fichier JDL définit les paramètres comme des nombres de CPU pour le job. 107 107 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: 108 108 * '''{{{Hello world! from processor 3 out of 8 }}}''' 109 109 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? 110 La grille supporte les jobs MPI sur un seul site. MPI avec esclaves sur plusieurs 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.110 La grille supporte les jobs MPI sur un seul site. MPI avec esclaves sur plusieurs sites n'est pas supporté. Le support du MPI évolue très rapidement dans la grille en ce moment. Ceci va se stabiliser dans quelques mois.