2017-08-02 1 views
1

Le scénario est celui-ci, j'allouent ressources (2 nœuds, 64 CPU) au travail avec salloc:Liste de attente de travail étapes

salloc -N 1-2 -n 64 -c 1 -w cluster-node[2-3] -m cyclic -t 5 
salloc: Granted job allocation 1720 

Ensuite, j'utilise srun pour créer des étapes à mon travail:

for i in (seq 70) 
    srun --exclusive -N 1 -n 1 --jobid=1720 sleep 60 & 
end 

Parce que j'ai créé plus de pas que de processeurs disponibles pour mon travail, les étapes sont "en attente" jusqu'à ce qu'une CPU libre.

Lorsque j'utilise squeue avec l'option -s pour répertorier les étapes, je ne peux afficher que celles en cours d'exécution.

squeue -s -O stepid:12,stepname:10,stepstate:9 
1720.0  sleep  RUNNING 
[...] 
1720.63  sleep  RUNNING 

Ma question est, ne pas avoir un statut différent de RUNNING comme les emplois, et si oui, est-il possible de voir ceux qui squeue (ou une autre commande)?

Répondre

1

Je ne suis pas certain que Slurm puisse offrir cette information. Une alternative consisterait à utiliser GNU Parallel pour que les étapes de travail ne démarrent pas du tout jusqu'à ce qu'un processeur soit disponible. Dans le réglage actuel, tous les travaux sont démarrés à la fois et ceux qui n'ont pas de CPU disponibles sont en attente.

Donc, avec la même allocation que vous utilisez, remplacez

for i in (seq 70) 
    srun --exclusive -N 1 -n 1 --jobid=1720 sleep 60 & 
end 

avec

parallel -P $SLURM_NTASKS srun --exclusive -N 1 -n 1 --jobid=1720 sleep 60 

Ensuite, la sortie doit squeue liste RUNNING et étapes continuées.

N.B. Je ne suis pas sûr que l'option --jobid= est nécessaire ici BTW

+0

Merci pour votre réponse, mon objectif réel était de trouver un moyen d'utiliser la distribution cyclique de la tâche pour équilibrer la charge de travail sur les nœuds. Après une plongée en profondeur dans le manuel, j'ai finalement trouvé l'option LLD dans la configuration qui fonctionne très bien. Merci pour la pointe parallèle, je suis un grand fan de cette commande! – Beuss