Jean Zay : exécution d'un travail mono GPU en batch

Les travaux sont gérés sur l'ensemble des nœuds par le logiciel Slurm.

Pour soumettre un travail mono GPU en batch sur Jean Zay, il faut d'abord créer un script de soumission.

  • Pour une exécution sur un GPU de la partition gpu par défaut :
    mono_gpu.slurm
    #!/bin/bash
    #SBATCH --job-name=gpu_mono          # nom du job
    ##SBATCH --partition=gpu_p2          # de-commente pour la partition gpu_p2
    #SBATCH --ntasks=1                   # nombre total de taches (= nombre de GPU ici)
    #SBATCH --gres=gpu:1                 # nombre de GPU (1/4 des GPU)
    #SBATCH --cpus-per-task=10           # nombre de coeurs CPU par tache (1/4 du noeud 4-GPU)
    ##SBATCH --cpus-per-task=3           # nombre de coeurs CPU par tache (pour gpu_p2 : 1/8 du noeud 8-GPU)
    # /!\ Attention, "multithread" fait reference à l'hyperthreading dans la terminologie Slurm
    #SBATCH --hint=nomultithread         # hyperthreading desactive
    #SBATCH --time=00:10:00              # temps maximum d'execution demande (HH:MM:SS)
    #SBATCH --output=gpu_mono%j.out      # nom du fichier de sortie
    #SBATCH --error=gpu_mono%j.out       # nom du fichier d'erreur (ici commun avec la sortie)
     
    # nettoyage des modules charges en interactif et herites par defaut
    module purge
     
    # chargement des modules
    module load ...
     
    # echo des commandes lancees
    set -x
     
    # execution du code
    ./executable_mono_gpu

    Pour lancer un script Python, il faut remplacer la dernière ligne par :

    # execution du code
    python -u script_mono_gpu.py

    Remarque : l'option -u (pour unbuffered) de python permet de désactiver la bufférisation des sorties standards qui est automatiquement effectuée par Slurm.

On soumet ensuite le script batch via la commande sbatch :

 $ sbatch mono_gpu.slurm 

Remarques :

  • Pour une exécution sur la partition gpu_p2, il faut spécifier --partition=gpu_p2 et --cpus-per-task=3.
  • Nous vous recommandons de compiler et d'exécuter votre code dans un même environnement en chargeant les mêmes modules.
  • Dans cet exemple, on suppose que l'exécutable executable_mono_gpu ou le script script_mono_gpu.py se situe dans le répertoire de soumission, c'est-à-dire le répertoire dans lequel on entre la commande sbatch.
  • Par défaut, Slurm bufferise les sorties standards d'un script Python, ce qui peut impliquer un délai important entre l'exécution du script et la visualisation de ces sorties dans les logs. Pour désactiver cette bufférisation, il faut ajouter l'option -u (pour unbuffered) à l'appel python. Sachez que positionner la variable d'environnement PYTHONUNBUFFERED à 1 dans votre script de soumission (export PYTHONUNBUFFERED=1) a le même effet. Cette variable est positionnée par défaut dans les environnements virtuels installés par l'assistance sur Jean Zay.
  • Le fichier de sortie du calcul mono_gpu<numero_job>.out se trouve également dans le répertoire de soumission. Il est créé dès le début de l'exécution du travail; l'éditer ou le modifier pendant le déroulement du travail peut perturber celui-ci.
  • Le module purge est rendu indispensable par le comportement par défaut de Slurm : les modules que vous avez chargés dans votre environnement au moment où vous lancez sbatch sont pris en compte dans le job soumis.
  • Les jobs ont tous des ressources définies dans Slurm par une partition et une “Qualité de Service” QoS (Quality of Service) par défaut. Vous pouvez en modifier les limites en spécifiant une autre partition et/ou une QoS comme indiqué dans notre documentation détaillant les partitions et les Qos.
  • Pour les comptes multi-projets ainsi que ceux ayant des heures CPU et GPU, il est indispensable de spécifier l'attribution d'heures sur laquelle décompter les heures de calcul du job comme indiqué dans notre documentation détaillant la gestion des heures de calcul.
  • Nous vous recommandons fortement de consulter notre documentation détaillant la gestion des heures de calcul sur Jean Zay pour vous assurer que les heures consommées par vos travaux soient décomptées de la bonne attribution.