===== Présentation des clusters et des règles d'usage ===== ### Actuellement, nous avons deux clusters de calculs, dénommés respectivement Hades et Lucifier pour les technologies Intel et AMD, dont en voici les principales caractéristiques techniques:\\ - cluster Intel\\ - master: hades.lbt.ibpc.fr\\ - 356 coeurs de calculs\\ - 1248GB de RAM\\ - cluster AMD\\ - master: lucifer.lbt.ibpc.fr\\ - 976 coeurs de calculs\\ - 1152GB de RAM\\ - ressources communes:\\ - 25TB utiles de stockage, répliqués au fil de l'eau sur les deux clusters et dédiés aux utilisateurs (/home) moyennant quota de projets\\ - 98TB utiles servant d'espace de travail pour les jobs parallèles (/workdir), 49TB par cluster\\ - environ 56TB utiles totalisés servant d'espace de travail pour les jobs mono-noeuds\\ - 112TB d'archive dédiés à un usage uniquement d'archivage et moyennant quota de projets (l'utilisation de fichiers compressés (.tar.gz) serait grandement apprécié)\\ Chaque compte utilisateur est rattaché à un groupe qui possède chacun trois types de quotas: quota d'espace disque, quota de fichiers et quota de temps de calculs. Si vous souhaitez davantage d'information concernant votre quota, veuillez contacter votre responsable de projet (votre encadrant).\\ Pour permettre à tout un chacun de travailler de manière collégiale sans alterer les performances globales, je vous saurais gré de respecter, dans vos scripts, les règles d'écritures suivantes: * si vous utilisez plus de 1 noeuds de calculs, veuillez privilégier dans la mesure du possible l'utilisation du volume partagé /scratch-dfs à /workdir pour traiter vos données -d'autant plus si la taille du transfert des données est faible- pour éviter de surcharger la volumétrie principale qu'est /wovrkdir * si vous utilisez moins de 1 noeuds de calculs, veuillez utilisez le volume local (/scratch) pour traiter vos données. Des synchronisations en cours de traitement sont tolérées à la condition que l'intervalle de temps entre chaque synchronisation soit conséquent (exemple: toutes les 10 minutes, ou davantage) Pour l'utilisation des espaces de travail temporaires dans le /scratch de chaque noeud de calculs ou dans l'espace partagé /scratch-dfs, veuillez respecter l'arborescence suivantes /scratch[-dfs]// sans quoi vos données seraient détruites lors du nettoyage automatique.\\ Pour les jobs mono-nodes, n'oubliez pas de récupérer vos données à la fin de vos jobs, sans quoi vos données seraient là-également détruites.\\ \\ De plus, l'ensemble des noeuds de calculs étant "stateless" (le système d'exploitation n'est pas installé sur les noeuds), ne stoquez pas de données sur les noeuds (exemple: dans le /tmp) car elles seraient irrémédiablement perdues lors du prochain redémarrage.\\ \\ Les clusters Hades (Intel) comme Lucifer (AMD) sont tous deux gérés par le gestionnaire de travaux Torque (fork d'OpenPBS) conjointement au scheduler Maui et un gestionnaire d'allocations (i.e. quota) Gold.\\ \\ Vous trouverez des scripts d'introduction vous permettant de mettre en oeuvre facilement, et dans le respect des règles/politiques d'utilisation, vos travaux dans le répertoire /shared/scripts/ accessibles des deux masters. Ces scripts portent le suffix "ADMIN_".\\ \\ ### **__NOTE: N'UTILISEZ PAS LES COMMANDES (BASH BUILTINGS & BINARIES) DE TYPE NOHUP, DISOWN, ETC. QUI MAINTIENDRAIENT EN VIE VOS JOBS SUR LES CLUSTERS.__**\\ ### Cela aurait pour effet de vous permettre d'utilisez les ressources en toute discression (aucun décompte de temps, etc.) mais casserait le fonctionnement du cluster (performance, etc.).\\ Si d'aventure cela était remarqué sur les clusters -la tricherie n'étant pas admise- vos comptes seraient désactivés et seuls vos supérieurs hiérarchiques (ou le directeur du laboratoire) seraient habilités à m'en demander leur réouverture.\\ ### \\ ===== Commandes utiles -en bref- pour la gestion des jobs ===== **Lancer un job décrit dans le script **\\ qsub \\ \\ **Lancer une session interactive sur le cluster**\\ qsub -I -A \\ \\ **Consulter la liste des jobs soumis:**\\ qstat\\ \\ **Supprimer un job:**\\ qdel \\ \\ **Obtenir des informations sur un job soumis:**\\ checkjob \\ \\ **Visualiser graphiquement les ressources (disponibles et/ou utilisées, etc.)**\\ pbstop\\ \\ **Obtenir des informations sur un job en cours**\\ checkjob -vv \\ \\ **Obtenir les statistiques (au sens résumé) d'utilisation du cluster pour un projet donné**\\ gusage -s 20140101 -h -p simlab_project\\ \\ **Obtenir la liste des jobs qui ont été exécuté sur une période donnée (par exemple, du 01/01/2014 à maintenant)**\\ gstatement -s 20140101 -h -p simlab_project\\ **__NB :__** l'option --summarize permet de résumer cette liste.\\ \\ **Connaitre l'état de ses allocations de temps de calculs**\\ mybalance -h\\ \\ **Afficher les ressources disponibles (autrement qu'avec pbstop)**\\ showbf\\ \\ **Connaitre/estimer le démarrage d'un job mis en queue**\\ showstart \\ \\ **Lister les jobs actuellement en queue**\\ showq\\ ### **__NB :__** bien sur, l'ensemble de ces commandes permettent un ensemble de dérivées au gré des paramètres saisis; n'hésitez donc pas à utiliser les man ou l'aide (--help) pour en savoir davantage.\\ ### \\ ==== Exemple de script pour un job sequentiel ==== #!/bin/sh ############################# # les directives PBS vont ici: # your job shell environment #PBS -S /bin/bash # Your job name (displayed by the queue) #PBS -N helloWorld # Your job outputs (standard output & error) #PBS -o helloWorld.out #PBS -e helloWorkd.err # Specify the working directory #PBS -d . # walltime (hh:mm::ss) #PBS -l walltime=00:10:00 # needed ressources (here 1 node and 32cores per node) #PBS -l nodes=1:ppn=32 # Allocation source #PBS -A admin_project # To be aware about execution progress # abe: to be aware about aborting, beginning and/or ending execution #PBS -m abe #PBS -M geoffrey.letessier@ibpc.fr # fin des directives PBS ############################# # modules environment module load torque # useful informations to print echo "#############################" echo "User:" $USER echo "Date:" `date` echo "Host:" `hostname` echo "Directory:" `pwd` echo "PBS_JOBID:" $PBS_JOBID echo "PBS_O_WORKDIR:" $PBS_O_WORKDIR echo "PBS_NODEFILE: " `cat $PBS_NODEFILE | uniq | sort` echo "#############################" ############################# # What you actually want to run echo "Hello World" sleep 30 # fake # all done echo "Job finished" En supposant que le script ci-dessus soit enregistré dans un fichier dénommé test.sh, vous pouvez le soumettre au gestionnaire de travaux :\\ qsub test.sh\\ ### **__NB :__** afin d'être correctement lues et prises en compte par Torque, les directives PBS (#PBS) doivent impérativement se situées au début du script, avant toute directive de type shell. Dans le cas contraire elles seront ignorées (les détails sont fournis dans la documentation Torque de qsub).\\ **__NB :__** si vous n'aviez pas spécifié les directives de redirection des flux de sortie et d'erreur standard, ces derniers auraient été créés dans le répertoire courant sous la nomenclature suivante :\\ stdout: .o\\ stderr: .e\\ \\ \\ ### ===== Demande de ressources ===== ### Afin de permettre un fonctionnement normal du gestionnaire de travaux, vous êtes obligés de spécifier les ressources dont vous avez besoin pour votre calcul. Dans le cas où vous omettez de les spécifier, une valeur par défaut est prise telle que décrite ci-dessous.\\ Les paramètres "ressources" importantes: - walltime: le nombre d'heures pendant lequel votre calcul est autorisé a tourner. Au delà, le job serait tué par le système. Valeur par défaut: 1 heure. - nodes: le nombre de noeuds sur lesquels vous souhaitez voir s'exécuter votre job. - ppn: nombre de processeurs: votre calcul aura à disposition, par noeud, le nombre de processeurs désigné. Vous pouvez demander un certain nombre de noeuds (défaut: 1) ainsi qu'un certain nombre de processeurs par noeuds (défaut: 1) \\ ### **__Exemples__** :\\ \\ L'ajout d'options à la commande qsub n'est utile que si ces options ne sont pas déjà spécifiées dans le script du job (