Aller au contenu principal

Débuter sur le supercalculateur


Introduction

Vous débutez au supercalculateur Jean Zay ?

Sur cette page vous trouverez les principaux points indispensables pour accéder à Jean Zay, faire votre première connexion et soumettre votre premier travail.

Cette page s'adresse principalement aux nouveaux·elles utilisateurs·rices de l'IDRIS. Elle est voulue synthétique pour assurer une prise en main rapide du supercalculateur. Pour plus d'informations sur les différents points abordés, n’hésitez pas à consulter la documentation complète.

Et pour un aperçu rapide des commandes Linux, Module et SLURM utiles pour les utilisateurs·rices de Jean Zay, consulter la cheatsheet ci-dessus.


Vous avez une question ou une demande ?
Le Support Utilisateurs de l’IDRIS est joignable,
du lundi au jeudi de 9h à 18h et le vendredi de 9h à 17h30 :

📥 assist@idris.fr
☎️ +33 (0)1 69 35 85 55


Présentation de la machine Jean Zay

Jean Zay est un supercalculateur composé de cinq partitions :

  • une partition scalaire (nœuds équipés uniquement de CPU)

  • et quatre partitions accélérées (nœuds hybrides équipés à la fois de CPU et de GPU).

    L'ensemble des nœuds accède à un système de fichiers partagés via un réseau d'interconnexion à très forte bande passante.

INFO

Une description matérielle complète est disponible sur la page Le supercalculateur Jean Zay.

Voici un aperçu de l'architecture de la machine :

jean_zay_material_description

Tous les projets DARI ayant des heures CPU ou/et GPU ont à leur disposition des partitions de calcul définies sur Jean Zay. Elles permettent aux utilisateurs·rices de choisir le type de ressource (CPU ou GPU) qu'ils désirent utiliser. Le tableau ci-dessous récapitule les principales caractéristiques de ces partitions.

PartitionNomNb CPU par nœudRAM CPUNb GPU par nœudRAM GPU
CPUcpu_p140192 Go--
quadri-GPU V100p1340192 Go416 Go / 32 Go
octo-GPU V100p224384 Go / 768 Go832 Go
octo-GPU A100p564512 Go880Go
quadri-GPU H100p696512 Go480Go
INFOS
  • Pour plus d'informations sur les différentes partitions, consultez les pages concernant les Partitions Slurm CPU ou/et les Partitions Slurm GPU.

  • Tous les projets ayant des heures CPU ou/et GPU ont également accès à des partitions dédiées au pré et post traitement, à la visualisation, à la compilation ou à l'archivage. Sur ces partitions les heures de calcul ne sont pas déduites de votre allocation. Pour plus d´informations sur ces partitions, consultez la page Partitions Slurm CPU.

Accéder au supercalculateur


Toute demande d'ouverture de compte sur la machine Jean Zay se fait sur le portail eDARI.

Cette demande implique une demande de rattachement à un projet scientifique ayant des heures de calcul sur le supercalculateur. Vous pouvez donc joindre un projet existant avec l'accord de son chef de projet ou créer votre projet. La création d'un projet scientifique se fait via une demande d'heures de calcul sur le portail eDARI.

Avant tout, nous vous recommandons de consulter la note GENCI détaillant les modalités d'accès aux ressources nationales. Vous y trouverez entre autres, les conditions et critères d’éligibilité pour obtenir des heures de calcul et un compte sur les supercalculateurs.

C'est l'opérateur public GENCI (Grand équipement national de calcul intensif), qui gère l'attribution des ressources de calcul de l'ensemble des centres nationaux (CINES, IDRIS et TGCC).

Pour calculer sur Jean Zay :

Pour pouvoir calculer sur Jean Zay, vous devrez réaliser les trois étapes suivantes :

  1. Créer un compte utilisateur sur eDARI
  2. Demander une allocation d'heures de calcul (sauf si rattachement à un projet existant)
  3. Demander la création d'un compte utilisateur Jean Zay (avec rattachement à un projet)


Créer un compte utilisateur sur eDARI

Il faut tout d´abord créer un compte utilisateur sur https://www.edari.fr/user/login en utilisant votre adresse mail institutionnelle.

attention

Ce compte est uniquement destiné à accéder à votre espace personnel sur le site eDARI pour réaliser toutes les démarches administratives (demandes d'heures de calcul, ouvertures de comptes sur Jean Zay, ...) qui doivent être effectuées depuis le eDARI. Il n'a aucun lien avec votre éventuel compte utilisateur Jean Zay.

Vous trouverez plus d'informations sur les demandes d'heures et les demandes d'ouverture de compte sur Jean Zay dans la vidéo suivante :


Connexion


Première connexion via ssh

La première connexion à Jean Zay doit se faire en SSH, depuis une adresse institutionnelle enregistrée dans les filtres de l'IDRIS et associée à votre compte de calcul :

ssh login@jean-zay.idris.fr

Pour votre première connexion, vous devez utiliser votre mot de passe initial constitué de la concaténation

  • du mot de passe généré aléatoirement par l'IDRIS (envoyée par courriel)
  • et du mot de passe que vous avez renseigné lors de votre demande d'ouverture de compte (eDARI).

Ce mot de passe sera changé immédiatement à la première connexion (procédure automatique) afin de définir votre mot de passe courant. Vous trouverez un exemple de première connexion dans Gestion des mots de passe.

ATTENTION
  • A la première connexion, le mot de passe initial est demandé deux fois (une fois pour la connexion et une seconde fois pour le changement du mot de passe initial).
  • Le fait d'être immédiatement déconnecté après que le nouveau mot de passe choisi ait été accepté (all authentication tokens updated successfully) est normal.

Une fois connecté(e), vous arrivez sur l'une des 5 frontales (nœuds de connexion) de Jean Zay. Ces nœuds, partagés par l’ensemble des utilisateurs·rices, sont dédiés à la mise en place de l’environnement de calcul et ne doivent pas être utilisés pour effectuer des calculs (ils ne sont pas équipés de GPU).
Contrairement aux nœuds de calcul, les frontales disposent d’un proxy HTTP/HTTPS permettant de télécharger des données depuis des serveurs distants (via le protocole HTTP/HTTPS avec les commandes git ou wget par exemple).

INFO

Pour plus d'informations concernant la connexion sur Jean Zay (cibler une frontale spécifique, les connexions ssh par clef ou avec certificat etc.), consultez la page Accès SSH et shells.

Connexion via JupyterHub

Les équipes de l’IDRIS ont mis en place une solution JupyterHub permettant d’utiliser les Jupyter Notebooks et d’autres applications comme VSCode, MLflow ou Dask via une interface web sans connexion SSH préalable à la machine.

IMPORTANT

Une première connexion à Jean Zay en SSH est indispensable avant de pouvoir utiliser JupyterHub.

Gestion de vos données


Les espaces disques

Chaque utilisateur dispose d'un espace personnel HOME (unique même pour les utilisateurs rattachés à plusieurs projet).
De plus, pour chaque projet auquel l'utilisateur participe, 4 espaces disques avec des caractéristiques diverses sont accessibles : WORK, SCRATCH, STORE et DSDIR.

IMPORTANT

Pour stocker vos fichiers prenez soin de bien choisir le meilleur espace disque en fonction de leurs caractéristiques respectives. Cela est indispensable pour éviter de saturer vos quotas (calculs qui échouent) ou la perte de données (espace disque automatiquement purgé).

Le tableau ci-dessous récapitule leurs principales caractéristiques. Pour savoir plus sur comment mieux utiliser vos espaces disques, consultez la page Espaces Disques.

Espace DisqueCapacité par défautUsageCommande
$HOMEQuotas
3 Go / 150k inodes par utilisateur
- répertoire d'accueil lors d'une connexion interactive
- destiné aux fichiers de petite taille (p.ex. fichiers de configuration)
- unique dans le cas d'un login multi-projets
cd $HOME
$WORKQuotas
5 To / 500k inodes par projet *
- espace de travail et de stockage permanent
- prévu pour accueillir des fichiers de taille importante (p.ex. données d'entrée/sortie)
Partie propre à chaque utilisateur :
cd $WORK
Partie commune et accessible par tous les utilisateurs du projet :
cd $ALL_CCFRWORK
$SCRATCHQuotas de sécurité très larges
4,6 Po partagés par tous les utilisateurs
- espace de travail et de stockage
semi-temporaire
- Durée de vie des fichiers non lus ou modifiés : 30 jours
- Performances optimales pour les opérations de lecture/écriture
Partie propre à chaque utilisateur :
cd $SCRATCH
Partie commune et accessible par tous les utilisateurs du projet :
cd $ALL_CCFRSCRATCH
$STOREQuotas
50 To / 100k inodes par projet *
- espace d'archivage
- accessible depuis les frontales et les partitions prepost, archive, compil et visu
Partie propre à chaque utilisateur :
cd $STORE
Partie commune et accessible par tous les utilisateurs du projet :
cd $ALL_CCFRSTORE
$DSDIR-- espace visible par tous les utilisateurs de Jean Zay
- contient des modèles et des bases de données publiques volumineuses
- mis en place par les équipes de l'IDRIS
- uniquement en lecture
cd $DSDIR

* les quotas par projet peuvent être augmentés sur demande du chef de projet ou de son suppléant via l'interface Extranet ou sur demande auprès du support utilisateurs.

💡 Les quotas disque

Vous pouvez consulter l'occupation de vos espaces disques en utilisant l'une de ces deux commandes :

  • idr_quota_user pour une vue de votre utilisation personnelle en tant qu'utilisateur·rice ;
  • idr_quota_project pour une vue d'ensemble de votre projet et de la consommation de chacun de ses membres.
INFO

Pour plus d'informations, consultez la page concernant Les Quotas disques et la visualisation des taux d'occupation.

💡 Les bonnes pratiques pour la gestion des bases de données

  • Afin d'éviter de saturer vos espaces disques, pensez à vérifier si le modèle ou la base de données dont vous avez besoin ne se trouve pas déjà sur DSDIR.
  • Si le téléchargement est nécessaire (base de données non publique) et que sa volumétrie vous impose de la télécharger dans votre SCRATCH (quotas très larges), conservez une copie de votre base de données sous forme d'archives dans le STORE (le SCRATCH est un espace semi-permanent). Vous pourrez ainsi facilement restaurer votre base de données si des fichiers ont été supprimés.
  • WORK ou SCRATCH ?
    • WORK : Vos fichiers ne sont soumis à aucune procédure de suppression automatique, mais les performances en lecture et écriture sont moins bonnes que celles du SCRATCH. Les quotas sont aussi plus restreints.
    • SCRATCH : Quotas très larges et meilleures performances en lecture et écriture. Mais, les fichiers non accédés depuis 30 jours sont automatiquement supprimés !
INFOS
  • Si vous travaillez sur une base de données publique, nous pouvons la télécharger pour vous dans l'espace disque partagé DSDIR. Les données seront alors accessibles à l'ensemble des utilisateurs·rices.
  • Pour plus d'informations sur les bonnes pratiques concernant la gestion de vos données, consultez la page Bases de données.

Transférer des données entre votre machine de connexion et Jean Zay

Si vous avez besoin de transférer des données entre votre machine et Jean Zay, vous pouvez utiliser les commandes liées à ssh (sftp et scp).

  # Envoi d’un fichier local vers Jean Zay
scp localSource login@jean-zay.idris.fr:JZDestination

# Récupération d’un fichier de Jean Zay vers la machine locale
scp login@jean-zay.idris.fr:JZSource localDestination

ou

  # Connexion au serveur distant via SFTP
sftp login@jean-zay.idris.fr destination

# Envoi d’un fichier local vers Jean Zay
sftp> put localSource JZDestination

# Récupération d’un fichier depuis Jean Zay vers la machine locale
sftp> get JZSource localDestination
IMPORTANT

Pour que cela fonctionne, il faut que votre machine soit enregistrée dans les filtres IDRIS ou que vous passiez par une machine enregistrée !

INFO

Pour plus d'informations sur comment transférer des données en batch, consultez la page Transférer des données entre l'IDRIS et votre machine de connexion et cette cheatsheet.

Environnement de calcul


L’IDRIS met à disposition un catalogue d’outils (environnements virtuels, librairies compilées,...) accessibles via la commande module.

La commande module

Afin de charger les produits installés sur Jean Zay, il est nécessaire d'utiliser la commande module. Le tableau suivant récapitule les commandes module de base.

ActionCommande module
afficher les modules contenant le paquet demandéidr_module_search <package>
afficher le catalogue completmodule avail
rechercher un outil précismodule avail <package>
obtenir des infos sur un modulemodule show <package>
charger un modulemodule load <package>/<version>
décharger un modulemodule unload <package>
afficher la liste des modules chargésmodule list
repartir d’un environnement viergemodule purge
ATTENTION

Pour accéder aux modules adaptés à la partition A100 ou H100, il faut charger au préalable l'un des modulefiles suivants :

  • Pour la partition A100 : module load arch/a100
  • Pour la partition H100 : module load arch/h100
INFOS
  • La liste des modules peut être enrichie sur demande en contactant l'assistance via assist@idris.fr.
  • Pour plus d'informations sur l'utilisation de la commande module, consultez la page Modules

Modules et environnements virtuels conda

Des environnement virtuels conda préinstallés par l'IDRIS sont accessibles via la commande module.

  • L’environnement est activé automatiquement ( conda activate ) lors du chargement du module ( module load conda ).
  • ATTENTION, il n’est pas désactivé ( conda deactivate ) lorsque le module est déchargé ( module unload conda ).

Une fois l’environnement activé, vous pouvez visualiser l’ensemble des paquets Python qu’il contient grâce aux commandes pip list et conda list.

INFOS
  • Il est fortement conseillé d’utiliser les environnements installés par nos soins pour obtenir les meilleures performances, mutualiser les ressources et éviter de saturer vos quotas.
  • Tout environnement peut être enrichi sur demande en contactant l'assistance via assist@idris.fr.

Modules et compilation

Différents compilateurs et bibliothèques sont disponibles sur Jean Zay ( module avail ) et sont activables au moyen de la commande module load.

ATTENTION

Nous vous recommandons fortement de consulter notre page Web concernant l'utilisation de la commande module et la gestion des dépendances entre les versions des bibliothèques et celles des compilateurs.

INFO

Pour plus d'informations sur la compilation et les différents compilateurs disponibles, consultez les pages dédiées.

Soumission de travaux


Deux modes de travail sont possibles :

  • en batch
  • en interactif

Le travail en batch permet de fermer la session interactive après avoir soumis un travail, tandis que le travail en interactif nécessite de maintenir la session ouverte pour ne pas interrompre l’exécution.

ATTENTION

Il est fortement déconseillé de faire des calculs sur les nœuds de connexion car cela peut les ralentir (voir les faire crasher) ce qui impacterait tous les autres utilisateurs connectés sur le même nœud !
De plus, les limites fixées sur ces nœuds (1 CPU par utilisateur et 30 mn de temps CPU par processus) ne permettent pas d'obtenir de bonnes performances.

INFO

Pour plus d'informations sur ces deux modes de travail, consultez les pages Exécution en batch et Exécution interactive.

Vous trouverez ci-dessous des exemples pour une prise en main rapide.

Exécution en batch - Exemple de script SLURM

L’accès aux ressources de calcul est géré par le gestionnaire Slurm pour l’ensemble des utilisateurs·rices.

Il y a 2 étapes essentielles pour travailler en batch :

  1. La création du script Slurm : fichier contenant les directives Slurm pour la réservation des ressources et les commandes à exécuter.
  2. la soumission du travail (job) : le script Slurm est soumis au gestionnaire via les commandes Slurm sbatch ou srun pour son exécution sur les ressources demandées.
INFO

L'accès aux diverses partitions hardware de la machine dépend du type de travail soumis (CPU ou GPU) et de la partition Slurm demandée pour son exécution (Voir Partitions Slurm CPU et Partitions Slurm GPU pour plus d'informations).

ATTENTION
  • Le mode batch ne permet pas à l’utilisateur·rice d’intervenir au cours de l'exécution des commandes du script (sauf pour interrompre le déroulement du job). Par conséquent, les transferts de fichiers doivent s'effectuer sans avoir à taper de mot de passe.
  • Les nœuds de calcul n'ont aucun accès à Internet ce qui interdit tout téléchargement (dépôts Git, installation Python/Conda, …) depuis ces nœuds. Si besoin, les téléchargements doivent être effectués depuis les frontales ou depuis les nœuds de pré / post-traitement avant l'exécution du code : soit en interactif, soit via la soumission batch de travaux en cascade.

Ci-dessous, vous trouverez des exemples de scripts pour l'exécution d'un code MPI en HPC et d'un script Python en IA :


Voici un exemple de script de soumission CPU pour un travail MPI en batch sur Jean Zay :

1. Contenu du fichier intel_mpi.slurm :

#!/bin/bash
#SBATCH --job-name=TravailMPI # nom du job
#SBATCH --ntasks=80 # Nombre total de processus MPI
#SBATCH --ntasks-per-node=40 # Nombre de processus MPI par noeud
# /!\ Attention, la ligne suivante est trompeuse mais dans le vocabulaire
# de Slurm "multithread" fait bien référence à l'hyperthreading.
#SBATCH --hint=nomultithread # 1 processus MPI par coeur physique (pas d'hyperthreading)
#SBATCH --time=00:10:00 # Temps d’exécution maximum demande (HH:MM:SS)
#SBATCH --output=TravailMPI%j.out # Nom du fichier de sortie
#SBATCH --error=TravailMPI%j.out # Nom du fichier d'erreur (ici commun avec la sortie)

# on se place dans le répertoire de soumission
cd ${SLURM_SUBMIT_DIR}

# nettoyage des modules charges en interactif et herites par defaut
module purge

# chargement des modules
module load intel-all/19.0.4

# echo des commandes lancées
set -x

# exécution du code
srun ./exec_mpi

2. Soumission du script via la commande sbatch :

sbatch intel_mpi.slurm
INFO

Pour plus d'informations sur l'exécution de travaux, y compris différents exemples (MPI, OpenMP, MPMD, CUDA MPS), consultez la page dédiée.

Suivre l'avancement d'un job SLURM

Le tableau suivant récapitule les principales commandes pour soumettre le script SLURM et suivre son avancement.

CommandeFonction
sbatch <script>soumettre un script batch Slurm
squeue -u $USERsuivre l’état de soumission de vos jobs
scontrol show job <jobid>afficher l’ensemble des paramètres d’un job soumis
scancel <jobid>annuler l’exécution d’un job
INFO

Vous pouvez vous connecter en SSH aux nœuds de calcul affectés à vos travaux afin de surveiller en direct l’exécution de vos calculs et contrôler l'usage des ressources ( top, htop, nvidia-smi,...) : ssh <numéro du nœud>

Exécution en interactif

Toute exécution en mode interactif nécessite de réserver des ressources via le gestionnaire Slurm. Le temps d'attribution de ces ressources varie suivant la charge de la machine.

ATTENTION

Il est impossible de prévoir le moment auquel les ressources demandées seront attribuées. Si vous n'êtes pas devant votre machine à cet instant, des ressources seront réservées à votre usage sans que vous les utilisiez.

A partir de machines déclarées dans les filtres de l'IDRIS, vous disposez d'un accès SSH aux frontales. Vous avez alors 2 possibilités :

  1. Ouvrir un terminal directement sur un nœud de calcul sur lequel vous réservez des ressources via la commande srun.
    • Exemple avec réservation d’un GPU pour 1h00 sur la partition par défaut :
    login@jean-zay3:∼$ srun --ntasks=1 --gres=gpu:1 --time=1:00:00 ... --pty bash
    srun: job 123456 queued and waiting for resources
    srun: job 123456 has been allocated resources
    login@r13i0n8:∼$
    • Vous êtes alors connecté sur le nœud de calcul et pouvez exécuter votre code/script :
    login@r13i0n8:∼$ ./script.py
    • Pour se déconnecter :
    login@r13i0n8:∼$ exit
    exit
    login@jean-zay3:∼$
    ATTENTION
    • MPI n’est pas supporté dans cette configuration.
    • Lorsque la limite de temps (ici 1h00) est atteinte la connexion au nœud de calcul est automatiquement coupée. L'exécution est donc interrompue prématurément.
  2. Faire une allocation de ressources via la commande salloc et enchaîner des exécutions sur ces ressources via la commande srun.
    • Exemple avec réservation d’un GPU pour 1h00 de la partition par défaut :
    login@jean-zay1:∼$ salloc --ntasks=1 --gres=gpu:1 <other-options>
    salloc: Pending job allocation 654321
    salloc: job 654321 queued and waiting for resources
    salloc: job 654321 has been allocated resources
    salloc: Granted job allocation 654321
    • Lorsque l'allocation est effective, vous pouvez enchaîner diverses exécutions :
    login@jean-zay1:∼$ srun python script_0.py
    ...
    login@jean-zay1:∼$ srun python script_1.py
    ...
    • Pour libérer les ressources :
    login@jean-zay1:∼$ exit
    exit
    login@jean-zay1:∼$ salloc: Relinquishing job allocation 654321
    ATTENTION
    • Lorsque la limite de temps (ici 1h00) est atteinte l'allocation du nœud de calcul est automatiquement terminée. Toute exécution en cours est donc interrompue prématurément.
INFO

Pour plus d'informations sur l'exécution en interactif, consultez la page dédiée..

Pour aller plus loin

Formations

L’IDRIS dispense diverses formations à destination des utilisateurs·rices de calcul scientifique HPC et IA.



Contactez l'IDRIS

Pour toute question ou demande le Support Utilisateurs de l’IDRIS est joignable, du lundi au jeudi de 9h à 18h et le vendredi de 9h à 17h30 :


Workshops

L’IDRIS organise des workshops autour de la prise en main du supercalculateur et de l’optimisation de vos codes de calcul.