Je suis en train d'essayer de comprendre quelle est la différence entre SLURM de l' srun
et sbatch
des commandes. Je serai heureux avec une explication générale, plutôt que des réponses aux questions suivantes, mais voici quelques points particuliers de la confusion qui peut être un point de départ et de donner une idée de ce que je suis à la recherche pour.
Selon la documentation, srun
est pour l'envoi de tâches, et sbatch
est pour l'envoi de tâches pour exécution ultérieure, mais en pratique, la différence est claire pour moi, et leur comportement semble être le même. Par exemple, j'ai un cluster avec 2 nœuds, chacun avec 2 Processeurs). Si j'exécute srun testjob.sh &
5x de suite, il faudra bien la queue de la cinquième jusqu'à ce qu'un CPU devient disponible, tout comme l'exécution d' sbatch testjob.sh
.
Pour rendre la question plus concrète, je pense qu'un bon endroit pour commencer peut-être: Quelles sont les choses que je peux faire avec celui que j'ai ne peut pas faire avec les autres, et pourquoi?
La plupart des arguments pour les deux commandes sont les mêmes. Celles qui semblent les plus pertinentes sont --ntasks
, --nodes
, --cpus-per-task
, --ntasks-per-node
. Comment sont-ils liés les uns aux autres, et en quoi elles diffèrent pour srun
vs sbatch
?
Une différence particulière est qu' srun
entraînera une erreur, si testjob.sh
n'ont pas d'exécutable, c'est à dire l'autorisation chmod +x testjob.sh
alors qu' sbatch
seront heureux de vous exécuter. Ce qui se passe "sous le capot" qui provoque ce le cas?
La documentation mentionne également qu' srun
est couramment utilisé à l'intérieur de l' sbatch
scripts. Cela conduit à la question: Comment ils interagissent les uns avec les autres, et qu'est-ce que le "canonique" cas d'utilisation pour chacun d'eux? Plus précisément, j'ai jamais utiliser srun
par soi-même?