Problème allocation mémoire script lancé sbatch

Bonjour la task force
J’avance sur mon problème d’allocation mémoire avec sbatch
Quand je lance

  • srun avec l’option --mem l’alloc mémoire fonctionne
  • sbatch avec l’option --mem sur la ligne de commande l’alloc mémoire fonctionne
  • sbatch avec l’option --mem dans le script bash l’alloc mémoire ne fonctionne pas
    voila
    c’est bizarre non ?
    Hélène

Tu peux nous donner l’entête de ton script avec les paramètres slurm ?

Bonjour Hélène,

Je rejoins Gildas, il nous faudrait l’entête de ton script.

Exemple de directive possible.
Ces directive doivent absolument être placé en début de script (après le shebang):

# Allocation de la mémoire totale (pour le job)
#SBATCH --mem=12GB

# Allocation de la mémoire par CPU demandé
#SBATCH --mem-per-cpu=12800MB

Par défaut (sans préciser la qualtité de mémoire), 2Go sont alloués automatiquement par CPU (mem-per-cpu=2GB).

A+

Voila mon script
#!/bin/bash
#SBATCH -n 4 #nb tasks
#SBATCH –cpus-per-task=28
#SBATCH --mem=64GB # Memory request 64Gb for the 4 tasks

REP_FASTQ_FILES=$1
R1_fastq_files=$(ls $1/*_1.fastq)

for fastq_file in ${R1_fastq_files[@]}
do
sample_file="$(basename $fastq_file _1.fastq)"
path_fastq="$(dirname $fastq_file)"
srun STAR --runThreadN 56 --outSAMtype BAM SortedByCoordinate --readFilesIn ${path_fastq}/${sample_file}_1.fastq ${path_fastq}/${sample_file}_2.fastq --genomeDir /shared/home/hchiapello$
done
wait

J’avais aussi tenté avec l’option en plus --mem-per-cpu=16GB mais cela ne fonctionnait pas non plus

La ligne :

#SBATCH –cpus-per-task=28

comprend un tiret long et non un tiret-tiret --.
Ceci doit stopper l’interprétation des options par SBATCH :wink:

1 « J'aime »

yeessss ça y est j’ai la mémoire qui va bien ! 3 jours de galère pour un tiret merci Julien :wink:
Par contre il faut corriger aussi cette typo dans ton support de cours (dia 42)
J’ai encore une petite question :
#SBATCH --cpus-per-task=28 ne fonctionne pas, pourquoi ? Il y a bien 28 CPUs par noeud ? Pour info #SBATCH --cpus-per-task=24 fonctionne tb

Il n’y a pas de raison que l’instruction --cpus-per-task=28 ne fonctionne pas car nous avons au moins un noeud 64 coeurs.

Le job suivant fonctionne parfaitement :

#! /bin/bash
#SBATCH --cpus-per-task=28
srun hostname

Dans les fait, la plupart des noeuds du cluster IFB disposent de 28 coeurs mais sur chaque noeud 2 coeurs sont réservés pour le fonctionnement du système et donc pas disponible pour les utilisateurs.
Ainsi si tu demandes explicitement 28 coeurs tu passes sur un gros noeud disposant de plus de 26 coeurs.