Lancer de nombreux jobs (plus de 1000)

Bonjour à tous,

Je cherche à lancer un sbatch avec une configuration --array=1-4284 (mon analyse est composée de 4284 jobs). Lorsque que je lance la commande, je reçois l'erreur suivante : sbatch: error: Batch job submission failed: Invalid job array specification. Après exploration, la commande passe lorsque la taille de l'array ne dépasse pas 1000.

Existe-t-il une autre solution que la fractionnement (1-1000, puis 1001-2000, etc)? Peut-on augmenter ponctuellement ce nombre au prix de la performance (un run lancé sur la nuit par exemple)?

Je vous remercie pour votre aide ! Et merci pour ce super cluster !

Bonjour,
en parcourant la présentation d'une formation sur le cluster (https://www.france-bioinformatique.fr/sites/default/files/formation_cluster_v5.5_light_slurm.pdf), je suis tombé sur cette commande:
--array=1-50000%100
lance 100 jobs at the time
peut être que ça peut t'aider!

J'ai eu la même démarche et j'ai essayé.
Ça n'a pas fonctionné...
Je vais relancer un essai. On ne sait jamais.
Merci pour la réponse.

en effet la limite de Slurm par défaut semble être 1000

System Administration

A new configuration parameter has been added to control the maximum job array size: MaxArraySize . The smallest index that can be specified by a user is zero and the maximum index is MaxArraySize minus one. The default value of MaxArraySize is 1001. The maximum MaxArraySize supported in Slurm is 4000001. Be mindful about the value of MaxArraySize as job arrays offer an easy way for users to submit large numbers of jobs very quickly.

si les tâches sont complètement indépendantes, tu devrais pouvoir lancer 5 jobs au total, 4 de 1000 et 1 de 284 (c'est vrai que ce n'est pas le plus commode!)

Bonjour,

En effet, c'est bien ce paramètre qui limite la taille du job array.
Nous sommes en train de regarder pour augmenter cette limite, et on reviens vers vous dès que possible.

PS: J'ai eu le même réflexe et tester en limitant le nombre simultané de running tasks avec "%" mais ça ne suffit pas. Ceci dit, c'est plutôt une bonne pratique de contrôler le nombre de job tournant simultanément (grâce au "%"), cela permets de contrôler la charge demandé.

Salutations

1 « J'aime »

Bonjour @dbenaben @team.ifbcorecluster,

Je rebondi sur une vieille conversation mais je pense avoir un problème en rapport

J'ai un batch dont l'array inclu des ID au dela de 1000 (2079, etc...). L'array en lui même contient 250 échantillons.

J'ai l'impression que le MaxArraySize=1001 limite surtout les ID en eux même non ?

Est il possible de modifier cette valeur ?

Merci d'avance pour votre retour

Cordialement

Guillaume Beinse

Bonjour,

Oui j'ai l'impression que c'est le même problème. Ma solution a été de faire des fichiers de 1000 runs et de lancer à la suite. Je ne sais pas si depuis ça été corrigé.

Cordialement,

Thomas Denecker

Bonjour

Merci du retour ! En fait je n'ai que 250 fastq à passer... mais avec des noms de fichiers en 0-1000, 1000..., 2000..., 3000..., 4000..., 5000...!

J'ai un peu triché en écrivant des arrays en incluant le chiffre des milliers dans les noms de fichiers

par exemple
--array=1,2,3,4
[...] 1{SLURM_ARRAY}.fastq.gz
pour les fichiers en 11 12 13 14
--array=1,2,3,4
[...] 10{SLURM_ARRAY}.fastq.gz
pour les fichiers en 101 102 103 104
--array=1,2,3,4
[...] 100{SLURM_ARRAY}.fastq.gz
pour les fichiers en 1001 1002 1003 1004

etc

ça a marché même si un peu rébarbatif car il faut faire x scripts et donc batch

si une meilleure solution est proposée je suis preneur !

Merci et à bientôt

Bien cordialement

Guillaume

Nous avons ce cookbook, si ça peut aider : https://ifb-elixirfr.gitlab.io/cluster/doc/slurm_cookbook/#how-to-launch-the-same-software-on-all-my-fastq-files

Ou avec awk

INPUTS=$(ls *.fastq.gz)
INPUT=$(echo $INPUTS | awk "NR==$SLURM_ARRAY_TASK_ID {print $2}")
  • La première ligne va créé une variable avec tous les *.fastq.gz présent dans un répertoire donné.
  • La second va prendre la Nième ligne (et donc nom de fastq) dans cette variable.

Bonjour,

Pour info (cf Meilleure manière de lancer de nombreux jobs - #3 par dbenaben), la limitations MaxArraySize a été augmenté (x10): MaxArraySize=10001

Ce qui devrait permettre de lancer les jobs array plus aisément (tout en maîtrisant le nombre de jobs simultanés avec %).

Bonne journée

1 « J'aime »