Configuration

Attention

Les outputs 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 <userid> format=Account,QOS%30

<userid> é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=ALL
  AllocNodes=ALL Default=YES QoS=N/A
  DefaultTime=NONE DisableRootJobs=YES ExclusiveUser=NO GraceTime=0 Hidden=NO
  MaxNodes=1 MaxTime=UNLIMITED MinNodes=0 LLN=YES MaxCPUsPerNode=UNLIMITED
  NodeSets=htc
  Nodes=ccwslurm[0002-0143]
  PriorityJobFactor=1 PriorityTier=1 RootOnly=NO ReqResv=NO OverSubscribe=NO
  OverTimeLimit=NONE PreemptMode=OFF
  State=UP TotalCPUs=120 TotalNodes=3 SelectTypeParameters=NONE
  JobDefaults=(null)
  DefMemPerCPU=1000 MaxMemPerNode=UNLIMITED
  TRES=cpu=21376,mem=64458872M,node=382,billing=21376

  [...]
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.

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
    Name   Priority     MaxWall MaxSubmitPU
---------- ---------- ----------- -----------
    normal          0  7-00:00:00        3000
    flash          0    01:00:00          10
      gpu          0  7-00:00:00         100
    daemon          0 90-00:00:00          10
      dask       1000    08:00:00

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

La QoS normal est appliquée par défaut à tous les jobs. Elle en limite donc la durée d’exécution à 7 jours maximum. La QoS gpu a la même limite de temps mais est limitée à 100 jobs soumis. La QoS flash, quant à elle, limite ce temps d’exécution à 1 heure pour nombre de jobs simultanés limité à 10 par utilisateur. La QoS daemon est associée à la partition htc_daemon et 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 également limitée à 10 jobs par utilisateur. Pour résumer :

normal

est utilisée avec les partitions htc, htc_interactive et hpc.

gpu

est utilisée avec les partitions gpu et gpu_interactive.

flash

est utilisée uniquement avec la partition flash.

daemon

est utilisée uniquement avec la partition htc_daemon.

Note

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

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) :

% scontrol show node ccwslurm0002
NodeName=ccwslurm0002 Arch=x86_64 CoresPerSocket=1
  CPUAlloc=64 CPUTot=64 CPULoad=40.44
  AvailableFeatures=htc
  ActiveFeatures=htc
  Gres=(null)
  NodeAddr=ccwslurm0002 NodeHostName=ccwslurm0002 Version=21.08.8-2
  OS=Linux 3.10.0-1160.80.1.el7.x86_64 #1 SMP Tue Nov 8 15:48:59 UTC 2022
  RealMemory=192932 AllocMem=143640 FreeMem=19263 Sockets=64 Boards=1
  State=ALLOCATED ThreadsPerCore=1 TmpDisk=0 Weight=1 Owner=N/A MCS_label=N/A
  Partitions=htc,dask
  BootTime=2022-11-21T10:23:40 SlurmdStartTime=2022-11-21T10:23:56
  LastBusyTime=2022-11-21T11:25:35
  CfgTRES=cpu=64,mem=192932M,billing=64
  AllocTRES=cpu=64,mem=143640M
  CapWatts=n/a
  CurrentWatts=0 AveWatts=0
  ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s