Configuration

Attention

Les champs de sortie ci-dessous sont affichés à titre d’exemple de format et pas pour leur contenu : ce dernier pouvant changer selon les modifications de maintenance de la plateforme de calcul.

L’utilisateur est invité à lancer lui-même les commandes sur les serveurs interactifs pour obtenir des informations à jour.

Informations utilisateur

Il faut distinguer la notion de groupes group et account. Le premier est le groupe Unix correspondant à la collaboration à laquelle l’utilisateur est rattaché. Il correspond donc à une expérience ou une collaboration à laquelle l’utilisateur participe. L”account correspond à l’entité à laquelle les ressources utilisées par le job seront imputées.

Pour visualiser l’ensemble des accounts auxquels un utilisateur est rattaché et les QoS auxquelles les accounts sont autorisés :

% sacctmgr show user withassoc <username> format=Account,QOS%30

<username> étant l’identifiant de l’utilisateur.

Note

De manière générale, la commande sacctmgr permet de visualiser et de modifier l’ensemble des informations liées aux accounts. Pour plus de détails, veuillez vous référer à l’aide de la commande sacctmgr -h.

Par défaut, l”account actif correspond au group principal de l’utilisateur. Pour confirmation, ou pour passer d’un account par défaut à l’autre, veuillez vous référer à la syntaxe proposée dans Compte calcul pour changer temporairement le group principal. Pour soumettre sur un account différent sans modifier le group principal, utilisez l”option -A | --account=.

Partitions

La partition est une ressource de calcul qui regroupe des nœuds dans une même entité logique définie par une ou plusieurs spécifications données (quelles soient matérielles ou liées à des ressources).

Pour obtenir un aperçu rapide des différentes partitions, on peut utiliser la commande sinfo :

% sinfo
PARTITION       AVAIL  TIMELIMIT  NODES  STATE NODELIST
htc*               up   infinite      1   drng ccwslurm0130
htc*               up   infinite    139    mix ccwslurm[...]
htc*               up   infinite     50  alloc ccwslurm[...]
htc_interactive    up   infinite      1    mix ccwislurm0001
htc_interactive    up   infinite      1   idle ccwislurm0002
htc_highmem        up   infinite      1    mix ccwmslurm0001
gpu                up   infinite      6    mix ccwgslurm[0002,0100-0104]
gpu_interactive    up   infinite      2    mix ccwgislurm[0001,0100]
hpc                up   infinite      2  alloc ccwpslurm[0001-0002]
flash              up   infinite      1    mix ccwslurm0001
htc_daemon         up   infinite      1    mix ccwslurm0001
dask               up   infinite    139    mix ccwslurm[...]

Il existe trois partitions majeures distinctes : htc, hpc, gpu, ainsi que leurs équivalents pour les jobs interactifs : htc_interactive, hpc_interactive et gpu_interactive. Chacune de ces trois partitions correspond à l’une des trois plateformes de calcul décrites à la page concernant la plateforme de calcul.

La partition flash reserve la totalité d’un nœud pour les tests et le debug des jobs. Cette partition est limitée par sa qos à 1 heure.

La partition htc_highmem est dédiée à des jobs qui ont besoin de beaucoup de mémoire et permet une limite de mémoire plus élevée par job.

La partition htc_daemon permet d’exécuter des jobs généralement de monitoring ou orchestrateurs : très longs, mais limités en ressources. Cette partition est limitée par sa qos à 10 jobs par utilisateur.

La partition dask est dédiée à la fonctionnalité Dask sur la Jupyter Notebook Platform. Cette partition partage les mêmes serveurs de calcul que htc.

Note

De manière simple, les jobs mono-cœur et multi-cœurs seront exécutés dans la partition htc, les jobs parallèles utilisant l’InfiniBand dans la partition hpc, et l’accès aux GPUs se fera par la partition gpu. L’accès à cette dernière partition est restreint et dépend de la demande de ressources faite par votre groupe de calcul. Veuillez contacter le support utilisateurs pout toute information complémentaire.

Les details sur les limitations de ressources à la soumissions sont decrits dans le paragraphe Limites des paramètres obligatoires

La commande sinfo indique également la restriction en temps pour l’exécution d’un job et les serveurs de calcul et leurs états appartenant à chacune de ces partitions.

Voici les principales options de la commande sinfo :

-a

affiche tous les serveurs de calcul

-d

affiche les serveurs de calcul hors ligne

-l

affiche la sortie dans un format long

-p <partition>

affiche les informations pour une partition spécifique

-O "<champs d'output>"

affiche dans l’output les champs mentionnés. Pour la liste des champs, veuillez lancer la commande man sinfo

Pour afficher et consulter la configuration détaillée des partitions on utilisera scontrol :

% scontrol show partition
PartitionName=htc
   AllowGroups=ALL AllowAccounts=ALL AllowQos=normal
   AllocNodes=ALL Default=YES QoS=N/A
   DefaultTime=NONE DisableRootJobs=YES ExclusiveUser=NO ExclusiveTopo=NO GraceTime=0 Hidden=NO
   MaxNodes=1 MaxTime=UNLIMITED MinNodes=0 LLN=YES MaxCPUsPerNode=UNLIMITED MaxCPUsPerSocket=UNLIMITED
   NodeSets=htc
   Nodes=ccwslurm[0002-0143,0168-0215,0312-0367]
   PriorityJobFactor=1 PriorityTier=1 RootOnly=NO ReqResv=NO OverSubscribe=NO
   OverTimeLimit=NONE PreemptMode=OFF
   State=UP TotalCPUs=18432 TotalNodes=246 SelectTypeParameters=NONE
   JobDefaults=(null)
   DefMemPerCPU=1024 MaxMemPerNode=UNLIMITED
   TRES=cpu=18432,mem=80590000M,node=246,billing=18432

 [...]
La commande donne les principales caractéristiques de ces partitions :
  • les groupes groups et comptes accounts autorisés,

  • les qualités de service associées (voir ci-dessous),

  • les ressources disponibles dans la partition,

  • les limites en terme de ressources de la partition.

Note

Dans la pratique, à la soumission d’un job, on pourra spécifier la partition et le compte account à utiliser avec respectivement les options --partition et --account. Sans spécification particulière, Slurm optera pour la partition par défaut, i.e. htc, et le compte account principal de l’utilisateur.

Nœuds

Les nœuds sont les machines physiques hébergeant les ressources informatiques telles que le processeur et la mémoire. Pour obtenir les informations détaillées de chaque nœud de la plateforme informatique, utilisez la commande ci-dessous (exemple avec le nœud ccwslurm0002 ; sans cette spécification la commande donne la quantité d’information ci-dessous pour chaque nœud de la plateforme) :

% scontrol show node ccwslurm0002
NodeName=ccwslurm0002 Arch=x86_64 CoresPerSocket=1
   CPUAlloc=25 CPUEfctv=64 CPUTot=64 CPULoad=24.12
   AvailableFeatures=htc,x86_64,el9
   ActiveFeatures=htc,x86_64,el9
   Gres=(null)
   NodeAddr=ccwslurm0002 NodeHostName=ccwslurm0002 Version=24.05.1
   OS=Linux 5.14.0-427.31.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Aug 9 14:06:03 EDT 2024
   RealMemory=265000 AllocMem=80896 FreeMem=159929 Sockets=64 Boards=1
   MemSpecLimit=6000
   State=MIXED ThreadsPerCore=1 TmpDisk=0 Weight=1 Owner=N/A MCS_label=N/A
   Partitions=htc,dask
   BootTime=2024-08-26T17:07:57 SlurmdStartTime=2024-08-26T17:08:11
   LastBusyTime=2024-09-02T12:09:59 ResumeAfterTime=None
   CfgTRES=cpu=64,mem=265000M,billing=64
   AllocTRES=cpu=25,mem=79G
   CurrentWatts=0 AveWatts=0

Attention

Les champs CPUTot et RealMemory donnent les limites matériels du nœud en ce qui concerne, respectivement, le nombre total de CPU et de mémoire. Veillez à ne pas les dépasser lors de vos soumissions. En règle générale, si un job demande plus de 200G de mémoire, il doit être soumis sur la partition htc_highmem.

Pour une vue d’ensemble de toutes les ressources disponibles sur la plateforme de calcul, veuillez faire référence à la page Informations sur les ressources de la plateforme de calcul.

Qualité de service

La qualité de service, ou QoS (pour Quality Of Service), est une règle associée à une partition ou à un job qui permet de l’altérer. Elle peut par exemple modifier la priorité d’un job, ou en limiter les ressources allouées. La commande scontrol montrée dans le paragraphe des partitions permet aussi de visualiser les QoS implementées sur une partition donnée.

Afin de connaître les détails des QoS disponibles, veuillez vous referer à la page Informations QoS, ou utiliser de nouveau la commande sacctmgr :

% sacctmgr show qos format=Name,Priority,MaxWall,MaxSubmitPU,MaxTRES
      Name   Priority     MaxWall MaxSubmitPU       MaxTRES
---------- ---------- ----------- ----------- -------------
    normal          0  7-00:00:00        5000
     flash          0    01:00:00          10      mem=150G
       gpu          0  7-00:00:00         100
    daemon          0 90-00:00:00          10  cpu=1,mem=3G
      dask       1000  2-00:00:00
       htc          0                              mem=150G

Ici, on a restreint la sortie aux seuls champs nom, priorité, durée d’exécution, limite de jobs soumis par utilisateur et limite des ressources exploitables (TRES) via l’option format.

  • normal (utilisée avec les partitions htc, htc_interactive et hpc) est appliquée par défaut à tous les jobs. Elle en limite donc la durée d’exécution à 7 jours maximum ;

  • htc (utilisée avec les partitions htc et htc_interactive) complète normal en limitant la mémoire demandée à 150G (voir Limites des paramètres obligatoires) ;

  • gpu (utilisée avec les partitions gpu et gpu_interactive) limite à 100 le nombre de jobs soumis par utilisateurs ;

  • flash (utilisée uniquement avec la partition flash) limite le temps d’exécution à 1 heure pour un maximum de 10 jobs simultanés par utilisateur. La mémoire demandée est limitée à 150G comme pour htc ;

  • daemon (utilisée uniquement avec la partition htc_daemon) est adaptée aux processus peu consommateurs de ressources, mais devant rester en exécution sur des durées très élevées. Elle est limitée à 10 jobs par utilisateur et 1 CPU et 3G de mémoire par job (voir Limites des paramètres obligatoires) ;

  • dask (utilisée uniquement avec la partition dask) fixe à 2 jours la limite d’exécution. Pour la durée des jobs Dask veuillez par contre vous référer au paragraphe Paramètres Dask.

Note

In fine, à la soumission il suffit de définir une partition, et la QoS sera définie automatiquement.