Job ARRAY Slurm_id assignation Perl

Bonjour,

J'aurais voulu savoir si quelqu'un peut m'aider à reconfigurer un job array en perl, sacahant que mon script perl fonctionne très bien sous MUSE qui lui m^me est configuré en Slurm.

Dans mon script perl , je prends mes deux fichiers R1 et R2 et les associe à mon SLURM_ARRAY_TASK_ID.

Voici un bout de mon script en perl.

opendir(CWD, "$directory_in") or die("Cannot open current directory: $directory_in\n");
my @files = grep { m/.$extension$/ } readdir(CWD);
closedir(CWD);

my %hash_file;
my $i=0;
my $j=1;
foreach my $file (sort( {$a cmp $b} @files)) {
if ($j%2 != 0) {
$hash_file{$i}=$file;
} else {
$hash_file{$i}.= "-" . $file;
$i++;
}
$j++;

}
print (Dumper([%hash_file]) . "\n");

#relative file path
my $slurm_id = $ENV{'SLURM_ARRAY_TASK_ID'};
print("$slurm_id\n");

Quand je le lance en sbatch sous IFB ; voici le code :

Requirements

#SBATCH --partition=bigmem
#SBATCH --array=10%5
#SBATCH --cpus-per-task=16
#SBATCH --mem=50G
#SBATCH --nodes=1

Je ne comprends pas pourquoi il ne m'assigne pas correctement mon slurm_id.

Preneuse si vous avez une idée.

Cathy

Bonjour Cathy,

Lors de la définition du job array il faut préciser un index de départ (0, 1, ou tout nombre inférieur à 10 dans votre cas).

Dans votre fichier contenant les instructions sbatch, cela doit donc ressembler à:

#SBATCH --partition=bigmem
#SBATCH --array=0-10%5
#SBATCH --cpus-per-task=16
#SBATCH --mem=50G
#SBATCH --nodes=1


perl <perl_script>

https://slurm.schedmd.com/job_array.html

Arthur

Arthur, merci en effet, je viens de m'appercevoir de mon erreur , j'ai oublié de lui spécifier l'index de départ.

MERCI beaucoup.

Cathy