2017-05-12 3 views
1

Y at-il un moyen dans bash/slurm pour que le script sache sur quel nœud il s'exécute? Donc je sbatch un script bash appelé wrapCode.sh, et je surveille l'heure du script ainsi que le nœud sur lequel il s'exécute. Je sais comment surveiller l'heure du script, mais y a-t-il un moyen de faire écho à la fin du nœud sur lequel je me trouvais? Sstat fait cela, mais j'ai besoin de savoir quel est mon identifiant de travail, que le script ne semble pas connaître lui aussi (ou du moins je n'ai pas réussi à le trouver).Travail Slurm, sachant sur quel nœud il se trouve

Répondre

1

Un simple, mais efficace, et souvent utilisé, façon d'écrire dans la sortie du travail sur lequel noeud a couru est d'ajouter

srun hostname 

à lui. L'ID du travail est également disponible depuis le script du travail via la variable d'environnement SLURM_JOB_ID; donc vous pouvez utiliser

sstat -j $SLURM_JOB_ID 

dans votre script slurm pour obtenir l'information que vous voulez.

1

Lorsque vous soumettez un travail à la grille, vous obtenez toujours un message indiquant le JobID. Si vous le faites de manière interactive, vous verrez quelque chose comme ceci:

$ sbatch wrapCode.sh 
Submitted batch job 106 

Par conséquent, vous pouvez écrire un script bash simple wrapper pour faire la présentation de l'emploi et obtenir le JobID pour vous. Après cela, vous pouvez utiliser la commande scontrol pour obtenir des informations détaillées sur le travail (y compris le nœud) comme voir ci-dessous:

#!/bin/bash 

    Command="sbatch wrapCode.sh" 
    Submit_Output="$($Command 2>&1)" 
    JobId=`echo $Submit_Output | grep 'Submitted batch job' | awk '{print $4}'` 
    echo $JobId 

    # --> Sleep here for a few seconds to wait until the job is actually launched 
    Host=`scontrol show job $JobId | grep ' NodeList' | awk -F'=' '{print $2}'` 
    echo $Host 
1

Le jobid pour votre travail peut être trouvé dans la variable d'environnement SLURM_JOBID. Cette variable est automatiquement définie par SLURM lors de la soumission de votre travail.

Pour trouver le nom du noeud exécutant votre travail, vous pouvez le trouver dans la variable d'environnement SLURMD_NOMENAME.

La variable SLURM_NODELIST vous donnera une liste de nœuds alloués à un travail (sauf si vous exécutez un travail sur plusieurs nœuds, cela ne contiendra qu'un seul nom).

Il y a beaucoup de variables qui contiennent des informations sur votre travail, voir https://slurm.schedmd.com/sbatch.html#lbAH