2017-09-29 2 views
1

Voici trois sbatch scripts qui produisent des résultats à peu près semblables.questions sur d'autres façons d'exécuter 4 emplois parallèles

(je montre que les parties où les scripts diffèrent, le préfixe ## indique la sortie obtenue en soumettant les scripts à sbatch.)

Script 0

#SBATCH -n 4 


srun -l hostname -s 


## ==> slurm-7613732.out <== 
## 0: node-73 
## 1: node-73 
## 2: node-73 
## 3: node-73 

Script 1

#SBATCH -n 1 
#SBATCH -a 1-4 

srun hostname -s 


## ==> slurm-7613733_1.out <== 
## node-72 
## 
## ==> slurm-7613733_2.out <== 
## node-73 
## 
## ==> slurm-7613733_3.out <== 
## node-72 
## 
## ==> slurm-7613733_4.out <== 
## node-73 

Script 2

#SBATCH -N 4 


srun -l -n 4 hostname -s 

## ==> slurm-7613738.out <== 
## 0: node-74 
## 2: node-76 
## 1: node-75 
## 3: node-77 

Q: Pourquoi choisirait-on une telle approche par rapport aux autres?

(je vois que les travaux générés dynamiquement par script 0 coururent tous sur le même nœud, mais je ne peux pas dire si cela est une coïncidence.)


En outre, la variante suivante de Script 2 (la seule différence étant -N 2 au lieu de -N 4) échoue:

Script 3

#SBATCH -N 2 


srun -l -n 4 hostname -s 


## ==> slurm-7614825.out <== 
## srun: error: Unable to create job step: More processors requested than permitted 

Idem pour la variante suivante de Script 2 (la seule différence entre ceci et Script 3 est que ici srun a aussi le drapeau -c 2):

Script 4

#SBATCH -N 2 


srun -l -n 4 -c 2 hostname -s 


## ==> slurm-7614827.out <== 
## srun: error: Unable to create job step: More processors requested than permitted 

Qs: sont les erreurs que je reçois avec Script 3 et Script 4 en raison de la syntaxe mal, mal sémantique, ou configs spécifiques au site? IOW, y a-t-il quelque chose de fondamentalement faux avec ces scripts (qui les ferait échouer sous n'importe quelle instance de SLURM), ou les erreurs sont-elles seulement dues à des violations de restrictions imposées par l'instance particulière de SLURM? Si c'est le cas, comment puis-je localiser les configs responsables de l'erreur?

Répondre

1

Q: Pourquoi choisirait-on une telle approche par rapport aux autres?

Script 0: vous demandez 4 tâches à attribuer en même temps à un seul emploi, sans autre spécification à la façon dont ces tâches doivent être attribuées aux nœuds. Utilisation typique: un MPI program.

Script 1: vous avez besoin de 4 tâches, chacune avec 1 tâche. Les travaux seront programmés indépendamment les uns des autres. Emploi typique: Embarrassingly parallel emplois.

Script 2: vous demandez 4 nœuds, avec une tâche par nœud. Il est similaire au script 0, sauf que vous demandez que les tâches soient affectées à quatre nœuds distincts. Utilisation typique: programme MPI avec beaucoup d'E/S sur des disques locaux par exemple.Le fait que toutes les tâches aient reçu le même premier nœud est dû au fait que Slurm alloue toujours les nœuds dans le même ordre et que vous exécutez probablement tous les tests les uns après les autres, de sorte que l'autre a démarré sur les ressources précédentes. un juste libéré.

Script 3: Vous demandez deux nœuds, avec implicitement, une tâche par nœud, deux tâches sont donc attribuées, mais vous essayez d'utiliser 4 tâches avec srun. Vous devez changer pour

#SBATCH -N 2 
#SBATCH --tasks-per-node 2 

srun -l -n 4 hostname -s 

deux demande deux tâches par nœud, ou

#SBATCH -N 2 
#SBATCH -n 4 

srun -l -n 4 hostname -s 

pour demander quatre tâches, sans contrainte supplémentaire sur la répartition des tâches entre les nœuds.

Script 4: Vous demandez deux nœuds, avec implicitement, 1 tâche par nœud, et, implicitement, une unité centrale de traitement par tâche, vous est attribué deux unités centrales, mais vous essayez d'utiliser 4 tâches avec srun, chacun avec 2 CPUS donc 8 au total. Vous devez changer pour

#SBATCH -N 2 
#SBATCH --tasks-per-node 2 
#SBATCH --cpus-per-task 2  

srun -l -n 4 -c 2 hostname -s 

ou,

#SBATCH -N 2 
#SBATCH -n 4 
#SBATCH --cpus-per-task 2  

srun -l -n 4 -c 2 hostname -s 

La ligne de fond: dans le script de soumission, vous demander des ressources avec les #SBATCH directives, et vous ne pouvez pas utiliser plus de ressources que que dans les appels suivants à .