Paper - indico in2p3
Transcription
Paper - indico in2p3
Exercices 2ième partie Modification et édition des fichiers JDL Nous allons maintenant utiliser les sandbox pour importer et exporter des données. 1) Modifier le fichier HelloWorld.jdl pour qu'il n'utilise plus /bin/echo mais les script HelloWorldScript.sh pour cela : la ligne Executable doit être HelloWorldScript.sh, la ligne Argument peut rester avec Hello World. Vous devez définir le paramètre InputSandbox pour transférer le script du job. InputSandbox = {"HelloWorldScript.sh"}; Le job HelloWorld-2.jdl vous donne la solution. A quoi sert l'inputSanbox ? Excécuter le job et vérifiez que tout fonctionne Remarque: On peut utiliser n'importe quel script (perl, python,bash ...) cependant le shell utilisé par le script (indiqué par la ligne “#!”) doit exister dans le worker node 2) Pour voir un exemple de récupération d'output par l'output sandbox, on va utiliser le job Output.jdl et le script Output.sh Comprendre Requirement et Rank Requirement glite-wms-job-list-match helloWorld.jdl L'attribut Requirement permet de passer au WMS un ensemble de conditions que rempliront les sites sélectionnés. Par exemple ajoutez l'expression suivante dans le fichier HelloWorld.jdl pour sélectionnez les sites qui permettent d'avoir plus de 1h de CPU. Requirements = (other.GlueCEPolicyMaxCPUTime >60); L'attribut requirement peut être précisé pour l'ensemble des informations que publie un site (Version OS,librairie disponible ...) Par exemple pour choisir des sites spécifiques on peut utiliser le nom de la ressource comme pré-requis. Pour choisir des sites in2p3, changez la valeur de Requirements comme suit: Requirements = RegExp(“.*\.in2p3.fr:.*”,other.GlueCEUniqueID); Combien de sites avez vous trouvez. Modifiez la ligne Requirements pour avoir un site in2p3 et plus de 1h de CPU. Vous pouvez aussi modifiez le Requirement pour tourner au CPPM.(ou sur le site de votre choix). Rank L'attribut Rank permet de définir la règle qui sera appliquée pour classer les sites qui répondent aux conditions des pré-requis. Par exemple pour utiliser la ressource avec le plus de CPU libre, on utilise Rank = other.GuCEStateFreeCPUs Environnement sur le Worker Node Chaque utilisateur de la grille est mappé dans un compte local sur chaque site a) Générez un jdl permettant de voir sous quelle machine tourne le job (solution Hostname.jdl) Lancez le job et récupérez l'output. Regardez le fichier std.out. Sur quel compte êtes vous mappé? Comparez avec vos voisins. b) Visualisez le contenu du script Printenv.jdl. Soumettez un job qui lance ce script dans la grille . Regardez la liste des variables. Soumission d'un job MPI Beaucoup de disciplines utilisent des jobs parallèles. MPI(Message Passing Interface) est un protocole qui permet la communication entre les taches parallèles. Regardez dans le fichier MPI.jdl MPI.sh (les adeptes de MPI peuvent aussi regarder hello.c) Il y a 2 paramètres spéciaux pour les jobs MPI: JobType et Node Number.Le NodeNumber est le nombre de CPUs réellement utilisés par le job. Regardez le script MPI.sh. Le script permet la compilation du code MPI, la vérification de l'existence de la liste des machines et le lancement du job en parallèle. Vérifiez combien de sites sont suceptible de répondre Utilisation des nouvelles options du WMS Soumission de collections de jobs Objectif: soumettre plusieurs jobs en les gérant comme un seul. Regardez les jobs qui se trouvent dans le répertoire Jobcollection, on retrouve le job HelloWorld, un job qui excecute hostname et un dernier qui fait pwd. Depuis le répertoire Jobcollection; glite-wms-job-submit --collection . -o jobid -d delID avec delID obtenu avec glite-wms-job-delegate-proxy -d delID glite-wms-job-status -i jobid Quand le job est fini on récupère les sorties. glite-wms-job-output –dir result -i jobid Notez la présence des 3 répertoires correspondant au 3 jobs. On peut aussi construire un jdl plutot que de mettre les jobs dans un répertoire. Voir JobCollection.jdl Soumission de jobs multiparamètres Parfois seul le jeu de paramètres d'un job change, plutôt que d'envoyer x jobs pour couvrir x jeux de paramètres et donc gérer x jobs, on peut envoyer/gérer un seul job. Ouvrez le job JobPara.jdl et essayez de comprendre ce qu'il doit faire. Soumettez le glite-wms-job-submit --o jobid -d delID JobPara.jdl –dir result