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.