Table des matières
Jean Zay : exécution interactive d'un code CPU
Sur Jean Zay, l'accès interactif aux ressources de calcul peut se faire de plusieurs manières.
Connexion sur la frontale
L'accès à la frontale se fait par une connexion ssh
:
$ ssh login@jean-zay.idris.fr
Les ressources de ce nœud interactif sont partagées entre tous les utilisateurs connectés : l'interactif sur la frontale est donc réservé uniquement pour la compilation et la mise au point des scripts.
Remarque : sur les frontales, la mémoire RAM est limitée à 5GB à partager par l'ensemble des processus et le temps CPU par processus est limité à 30mn (1800s) afin d'assurer un meilleur partage de ressources.
Toute exécution interactive de vos codes doit s'effectuer sur les nœuds de calcul CPU en utilisant :
- soit la commande
srun
:- pour obtenir un terminal sur un nœud de calcul CPU au sein duquel vous pourrez exécuter votre code,
- ou pour exécuter directement votre code sur la partition CPU.
- soit la commande
salloc
pour effectuer une réservation de ressources CPU permettant ensuite d'effectuer plusieurs exécutions.
Par contre, il est nécessaire de soumettre un travail batch pour les calculs demandant des ressources CPU importantes (en nombre de cœurs, mémoire ou temps Elapsed).
Obtention d'un terminal sur un nœud de calcul CPU
Il est possible d'ouvrir un terminal directement sur un nœud de calcul sur lequel des ressources vous sont réservées (ici 4 cœurs) en utilisant la commande suivante :
$ srun --pty --ntasks=1 --cpus-per-task=4 --hint=nomultithread [--other-options] bash
Remarques :
- L’option
--pty
permet d'obtenir un terminal interactif. - L'option
--hint=nomultithread
assure la réservation des cœurs physiques (pas d'hyperthreading). - Par défaut, la mémoire CPU allouée est proportionnelle au nombre de cœurs réservés. Par exemple, si vous demandez 1/4 des cœurs d'un nœud, vous aurez accès à 1/4 de sa mémoire. Vous pouvez consulter notre documentation à ce sujet : Allocation mémoire sur les partitions CPU.
--other-options
peut contenir toutes les options Slurm usuelles de configuration des travaux (--time=
, etc ) : voir la documentation sur les scripts batch de soumission dans la rubrique Exécution/Contrôle d'un code CPU.- Les réservations ont toutes 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.
Le terminal est opérationnel après validation de l'allocation :
$ srun --pty --ntasks=1 --cpus-per-task=4 --hint=nomultithread bash srun: job 1365358 queued and waiting for resources srun: job 1365358 has been allocated resources bash-4.2$ hostname r4i3n7
Vous pouvez vérifier que votre travail interactif a bien démarré grâce à la commande squeue
, et obtenir des informations complètes sur l'état du job avec la commande scontrol show job <identifiant du travail>
.
Une fois le terminal opérationnel, vous pouvez lancer vos exécutables de la manière habituelle ./votre_executable
. Pour une exécution MPI, vous devez à nouveau utiliser srun
: srun ./votre_executable_mpi
. Attention, l'hyperthreading n'est pas utilisable via MPI dans cette configuration.
Pour quitter le mode interactif :
bash-4.2$ exit
Attention : si vous ne quittez pas le mode interactif vous-même, la durée d'allocation maximale (par défaut ou spécifiée avec l'option --time
) est appliquée et autant d'heures de calcul sont décomptées sur le projet que vous avez spécifié.
Exécution interactive sur la partition CPU
Si vous n'avez pas besoin d'ouvrir un terminal sur un nœud de calcul, il est également possible de démarrer directement depuis la frontale l'exécution interactive d'un code sur les nœuds de calcul en utilisant la commande suivante (ici avec 4 tâches) :
$ srun --ntasks=4 --hint=nomultithread [--other-options] ./mon_executable
Remarques :
- L'option
--hint=nomultithread
assure la réservation des cœurs physiques (pas d'hyperthreading). - Par défaut, la mémoire CPU allouée est proportionnelle au nombre de cœurs réservés. Par exemple, si vous demandez 1/4 des cœurs d'un nœud, vous aurez accès à 1/4 de sa mémoire. Vous pouvez consulter notre documentation à ce sujet : Allocation mémoire sur les partitions CPU.
--other-options
peut contenir toutes les options Slurm usuelles de configuration des travaux (--time=
, etc ) : voir la documentation sur les scripts batch de soumission dans la rubrique Exécution/Contrôle d'un code CPU.- Les réservations ont toutes 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.
Réservation de ressources réutilisables pour plusieurs exécutions interactives
Chaque exécution interactive démarrée comme décrit dans la section précédente correspond à un travail différent. Comme tous les travaux, ils sont susceptibles d'être placés en attente pendant un temps plus ou moins long si les ressources de calcul ne sont pas disponibles.
Si vous souhaitez enchaîner plusieurs exécutions interactives, il peut être pertinent de préalablement réserver des ressources qui pourront être réutilisées pour plusieurs exécutions. Vous devrez alors attendre que les ressources soient disponibles une seule fois au moment de la réservation et non pour chaque exécution.
La réservation des ressources (ici pour 4 tâches) se fait via la commande suivante :
$ salloc --ntasks=4 --hint=nomultithread [--other-options]
Remarques :
- L'option
--hint=nomultithread
assure la réservation des cœurs physiques (pas d'hyperthreading). - Par défaut, la mémoire CPU allouée est proportionnelle au nombre de cœurs réservés. Par exemple, si vous demandez 1/4 des cœurs d'un nœud, vous aurez accès à 1/4 de sa mémoire. Vous pouvez consulter notre documentation à ce sujet : Allocation mémoire sur les partitions CPU.
--other-options
peut contenir toutes les options Slurm usuelles de configuration des travaux (--time=
, etc ) : voir la documentation sur les scripts batch de soumission dans la rubrique Exécution/Contrôle d'un code CPU.- Les réservations ont toutes 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.
La réservation devient utilisable après validation de l'allocation :
salloc: Pending job allocation 1367065 salloc: job 1367065 queued and waiting for resources salloc: job 1367065 has been allocated resources salloc: Granted job allocation 1367065
Vous pouvez vérifier que votre réservation est bien active grâce à la commande squeue
, et obtenir des informations complètes sur l'état du job avec la commande scontrol show job <identifiant du travail>
.
Vous pouvez alors démarrer des exécutions interactives en utilisant la commande srun
:
$ srun [--other-options] ./code
Remarque : Si vous ne précisez aucune option pour la commande srun
, les options utilisées pour le salloc
(par exemple le nombre de tâches) seront utilisées par défaut.
Attention :
- Après avoir réservé des ressources avec
salloc
, vous êtes toujours connecté sur la frontale (vous pouvez le vérifier en utilisant la commandehostname
). Il est impératif d'utiliser la commandesrun
pour que vos exécutions utilisent les ressources réservées. - Si vous oubliez de libérer la réservation, la durée d'allocation maximale (par défaut ou spécifiée avec l'option
--time
) est appliquée et autant d'heures de calcul sont décomptées sur le projet que vous avez spécifié. Il est donc nécessaire de le faire explicitement :
$ exit exit salloc: Relinquishing job allocation 1367065