Exemple de script de job de Gromacs

#!/bin/bash -x 

#SBATCH --account=<group>
#SBATCH --partition=std
#SBATCH --job-name=Gromacs
#SBATCH --output=slurm-%x.%N.%j.out 
#SBATCH --error=slurm-%x.%N.%j.err 

# Configuration des ressources
#SBATCH --nodes=2                     # Nombre de nœuds à utiliser pour la simulation (à adapter)
#SBATCH --cpus-per-task=4             # Nombre de threads par processus MPI (entre 4 et 6)
#SBATCH --time=0-04:00:00             # Durée maximale d'exécution
#SBATCH --exclude=cnd[01-04,06-12]    # Exclure les nœuds IVY incompatibles avec GROMACS

# Afficher les variables d'environnement SLURM
env | grep -i slurm

# Changer de répertoire vers le répertoire de soumission
cd "$SLURM_SUBMIT_DIR"

# Création d'un répertoire temporaire pour le travail
WORKDIR="$SCRATCHDIR/job.$SLURM_JOB_ID.$USER"
mkdir -p "$WORKDIR"

# Chargement des modules nécessaires pour GROMACS
module purge
module load gromacs/gcc-11.2.0/2022.6

# Source du fichier d'environnement GROMACS pour configurer les variables nécessaires
source "$GMXROOT/bin/GMXRC"

# Calculer le nombre de tâches par nœud - 4 correspond au cpus-per-task
export NTASKS_PER_NODE=$((SLURM_CPUS_ON_NODE / 4)) 

# Configuration des variables d'environnement pour le parallélisme
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
ulimit -s unlimited  # Augmenter la taille de la pile pour éviter les erreurs de mémoire

# Copie des fichiers de soumission vers le répertoire de travail
cp "$SLURM_SUBMIT_DIR"/* "$WORKDIR"

# Changer de répertoire vers le répertoire de travail
cd "$WORKDIR"

# Enregistrement de la date et de l'heure de début du calcul
echo "Début du calcul : $(date)" >> "$SLURM_SUBMIT_DIR/slurm-${SLURM_JOB_ID}.log"

# Exécution de la simulation avec mdrun
srun --ntasks-per-node=$NTASKS_PER_NODE gmx_mpi mdrun [arguments]

#--- Fin de l'exécution de GROMACS -------------------------------------------------------------

# Enregistrement de la date et de l'heure de fin du calcul
echo "Fin du calcul : $(date)" >> "$SLURM_SUBMIT_DIR/slurm-${SLURM_JOB_ID}.log"

# Création d'un répertoire pour les fichiers de sortie
OUTDIR="$SLURM_SUBMIT_DIR/outdir.$SLURM_JOB_ID"  # Définition du chemin du répertoire de sortie
mkdir -p "$OUTDIR"  # Création du répertoire de sortie (s'il n'existe pas déjà)

# Déplacement de tous les fichiers de travail vers le répertoire de sortie
cp "$WORKDIR"/* "$OUTDIR"

# Optionnel : décommenter la ligne suivante pour supprimer le répertoire de travail
# rm -rf "$WORKDIR"

Information

  • gromacs/gcc-11.2.0/2022.6 est la version installée la plus stable.
  • Ce script permet de sélectionner automatiquement le maximum de CPUs dans les nœuds alloués.