Lancer des tâches

Note

Cette page couvre les spécificités de la plateforme CHP-IQ. Si vous n’êtes pas familier avec les commandes pour lancer et gérer des tâches (telles que sbatch, salloc, squeue), lisez d’abord Exécuter des tâches dans la documentation de l’Alliance ou consultez notre page sur l’apprentissage du CHP.

Nœuds de connexion

Utilisez le nœud de connexion (ip09) pour préparer vos tâches. Il est toutefois interdit d’exécuter des tâches directement sur ce nœud ! Les nœuds de connexion des grappes ne disposent pas de la puissance de calcul nécessaire pour exécuter des tâches. De plus, exécuter une tâche sur un nœud de connexion peut le ralentir considérablement, ce qui nuit à tous les chercheurs connectés. Toutes les tâches doivent être soumises à l’ordonnanceur en utilisant les commandes appropriées : sbatch, salloc, srun.

Lecture-écriture

Utilisez le stockage dans /net/nfs-iq/data pour lire et écrire des données de recherche dans vos tâches. Cet emplacement offre une bien meilleure performance que votre répertoire personnel.

Nœuds publics

Les tâches doivent être soumises à la partition c-iq, ce qui est l’option par défaut. La partition peut néanmoins être indiquée explicitement si désiré avec l’option --partition ou sa forme courte -p. Par exemple, dans un script de tâche :

#!/bin/bash
#SBATCH --job-name=my-job
#SBATCH --partition=c-iq

...

La durée maximale des tâches est de sept jours.

Tâches GPU

La Plateforme CHP IQ offre un nœud de calcul avec deux GPU Nvidia A40, qui peuvent être demandés à l’aide des options --gpus-per-node, --gpus-per-task et --gres.

Par exemple, pour utiliser un GPU dans une tâche interactive :

[alice@ip09 ~]$ salloc --gres=gpu

Pour utiliser les deux GPU dans un script de tâche :

#!/bin/bash
#SBATCH --job-name=my-job
#SBATCH --partition=c-iq
#SBATCH --gpus-per-node=nvidia_a40:2

...

Nœuds contribués

Pour lancer une tâche sur un ou plusieurs nœuds contribués auxquels vous avez accès, demandez la partition correspondante avec -p --partition. Référez-vous au tableau des nœuds de calcul contribués. Par exemple, vous pouvez soumettre une tâche aux nœuds APC de David Sénéchal avec --partition=c-apc. La durée maximale des tâches varie selon la partition et est indiquée dans le tableau des nœuds.

Gestion des tâches

La commande squeue liste toutes les tâches dans l’ordonnanceur, incluant les tâches de tous les utilisateurs. Utilisez sq pour lister uniquement vos tâches. (Cette dernière commande est aussi disponible sur les grappes de l’Alliance.)

Suivre les tâches actives

Lorsqu’une de vos tâches démarre, il est important de vérifier qu’elle utilise adéquatement les ressources qui lui ont été assignées. Par exemple, si une tâche a accès à 4 cœurs CPU et 80G de mémoire, utilise-t-elle vraiment ces 4 cœurs à 100% et sa consommation de mémoire est-elle dans cet ordre de grandeur ?

Pour le vérifier, connectez-vous avec ssh à un nœud de calcul assigné à votre tâche et exécutez la commande htop, qui donne un aperçu de la consommation de CPU et de mémoire. Dans l’exemple suivant, alice utilise la sortie de sq pour identifier le nœud cp1433 avant de s’y connecter. htop montre 4 processus à 100% CPU appartenant à Alice, ce qui correspond aux 4 CPU assignés à sa tâche.

[alice@ip09 ~]$ sq
          JOBID     USER      ACCOUNT           NAME  ST  TIME_LEFT NODES CPUS       GRES MIN_MEM NODELIST (REASON)
        5623630 alice    def-alice         md-job.sh   R      14:56     1    4     (null)    256M cp1433 (None)
[alice@ip09 ~]$ ssh cp1433
Last login: Wed Aug 21 11:16:34 2024 from ip09.m
[alice@cp1433-mp2 ~]$ htop

    0[||||||||100.0%]    8[          0.0%]    16[          0.0%]   24[          0.0%]
    1[||||||||100.0%]    9[          0.0%]    17[|         0.7%]   25[          0.0%]
    2[||||||||100.0%]   10[          0.0%]    18[          0.0%]   26[          0.0%]
    3[||||||||100.0%]   11[          0.0%]    19[          0.0%]   27[          0.0%]
    4[          0.0%]   12[          0.0%]    20[          0.0%]   28[          0.0%]
    5[          0.0%]   13[          0.0%]    21[          0.0%]   29[          0.0%]
    6[          0.0%]   14[          0.0%]    22[          0.0%]   30[          0.0%]
    7[          0.0%]   15[          0.0%]    23[|         0.7%]   31[          0.0%]
  Mem[|||                      6.82G/252G]   Tasks: 63, 174 thr; 5 running
  Swp[                              0K/0K]   Load average: 2.40 0.71 1.22
                                          Uptime: 1 day, 20:53:58

   PID USER      PRI  NI  VIRT   RES   SHR S CPU%▽MEM%   TIME+  Command
 35160 alice      20   0  457M 97680 19588 R  99.  0.0  0:51.67 /cvmfs/soft.computecanada.
 35161 alice      20   0  454M 96376 19248 R  99.  0.0  0:51.93 /cvmfs/soft.computecanada.
 35162 alice      20   0  454M 95832 19248 R  99.  0.0  0:51.83 /cvmfs/soft.computecanada.
 35163 alice      20   0  446M 93644 19252 R 99.3  0.0  0:51.82 /cvmfs/soft.computecanada.
 35449 alice      20   0 58960  4812  3044 R  0.7  0.0  0:00.08 htop
     1 root       20   0  122M  4116  2636 S  0.0  0.0  0:47.60 /usr/lib/systemd/systemd -
  1041 root       20   0 39060  8500  8172 S  0.0  0.0  0:01.65 /usr/lib/systemd/systemd-j
  1074 root       20   0 45472  1840  1352 S  0.0  0.0  0:11.67 /usr/lib/systemd/systemd-u
  1318 root       20   0 48920  1328  1012 S  0.0  0.0  0:00.00 /usr/sbin/rdma-ndd --syste
  1393 root       16  -4 55532   860   456 S  0.0  0.0  0:00.37 /sbin/auditd
  1394 root       16  -4 55532   860   456 S  0.0  0.0  0:00.00 /sbin/auditd
  1395 root       12  -8 84556   888   740 S  0.0  0.0  0:00.39 /sbin/audispd
F1Help  F2Setup F3SearchF4FilterF5Tree  F6SortByF7Nice -F8Nice +F9Kill  F10Quit

Tâches GPU

Pour les tâches GPU, il importe également de vérifier qu’elles utilisent adéquatement le ou les GPU qui lui ont été alloués. Pour ce faire, connectez-vous au nœud de calcul et utilisez la commande nvidia-smi, qui liste les GPU et les programmes qui les utilisent. Par exemple :

[alice@ip09 ~]$ ssh cp3705
Last login: Wed Aug 21 13:47:44 2024 from ip09.m
[alice@cp3705-mp2 ~]$ nvidia-smi
Wed Aug 21 13:52:41 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15              Driver Version: 550.54.15      CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA A40                     Off |   00000000:65:00.0 Off |                    0 |
|  0%   30C    P0             81W /  300W |     370MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   1  NVIDIA A40                     Off |   00000000:CA:00.0 Off |                    0 |
|  0%   29C    P0             70W /  300W |     276MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A     14734      C   gmx_mpi                                       362MiB |
|    1   N/A  N/A     14734      C   gmx_mpi                                       268MiB |
+-----------------------------------------------------------------------------------------+

On remarque que le processus gmx_mpi (id 14734) utilise les deux GPU.

Statistiques des tâches terminées

La commande seff affiche des statistiques pour les tâches terminées, incluant leur efficacité en CPU et en mémoire. Par exemple :

[alice@ip15-mp2 ~]$ seff 5623631
Job ID: 5623631
Cluster: mp2
User/Group: alice/alice
State: COMPLETED (exit code 0)
Nodes: 1
Cores per node: 4
CPU Utilized: 01:00:09
CPU Efficiency: 99.59% of 01:00:24 core-walltime
Job Wall-clock time: 00:15:06
Memory Utilized: 353.91 MB (estimated maximum)
Memory Efficiency: 34.56% of 1.00 GB (256.00 MB/core)

Typiquement, l’efficacité en CPU devrait être proche de 100%. Une efficacité plus basse indique que du temps CPU est perdu, possiblement parce que la tâche n’utilise pas toutes les ressources allouées. Si l’efficacité d’une de vos tâches est sous 70%, vous ne devriez pas soumettre d’autres tâches similaires avant de régler ce problème.

L’efficacité en mémoire, pour sa part, devrait être d’au moins 50%. Si une de vos tâches est sous ce seuil, réduisez la quantité de mémoire demandée pour les tâches similaires. (Si vous demandez la quantité de mémoire par défaut, 256M par cœur, ignorez l’efficacité mémoire puisque votre consommation absolue est de toute façon très basse.)

En surveillant l’efficacité de vos tâches, vous ne vous assurez pas seulement qu’elles soient plus rapides : vous permettez aussi à un plus grand nombre de tâches d’être exécutées simultanément, ce qui réduit le temps d’attente pour tous les chercheurs.