diff --git a/2-resources.html b/2-resources.html index d492b06..fa28fc4 100644 --- a/2-resources.html +++ b/2-resources.html @@ -352,7 +352,7 @@
Le principal objectif de ce chapitre est de vous permettre d’analyser -vos besoins dans le but de déterminer les ressources nécessaires -pour vos tâches de calcul. -Chaque tâche de calcul est définie par un script de tâche destiné à -l’ordonnanceur Slurm. -Typiquement écrit en commandes Bash, on y retrouve :
+The main goal of this chapter is to teach you how to +analyze your compute tasks in order to determine the +required resources to run tasks on compute clusters. +Each compute task will eventually be defined +in a job script to be submitted to the +Slurm scheduler. +Typically written in Bash commands, job scripts have:
Le shebang en toute
-première ligne. Par exemple : #!/bin/bash
Les options #SBATCH
en entête pour les besoins de la tâche. Les
-options en entête seront lues par la commande de soumission de tâche
-sbatch
Chargement des modules requis
Les commandes Bash qui seront exécutées automatiquement sur des -processeurs réservés pour la tâche
A shebang
+at the first line. For example: #!/bin/bash
A header of #SBATCH
options for the job’s requirements.
+These options will be parsed at submission time by the
+sbatch
command
Modules +loaded before running the compute task
The Bash commands that will be executed +automatically on the reserved resources for the job
For example : scripts/mpi-hello.sh
cat scripts/mpi-hello.sh
@@ -448,70 +450,73 @@ Goal - Writing a Proper Job Script for Slurm
Analysing Compute Jobs on Your Computer#
-Lorsqu’une tâche est en cours d’exécution sur votre ordinateur,
-vous pouvez surveiller différentes métriques :
+While a compute task is running on your computer,
+you can monitor different metrics:
-Utilisation CPU (et GPU, s’il y a lieu)
-Mémoire-vive utilisée
-Accès au stockage
+CPU usage (and GPU usage, if applicable)
+Memory usage
+Storage access (IOPS, bandwidth)
In Windows#
-
-Pour le faire afficher, on le trouve de deux manières :
+
+You can find it in two ways:
-Chercher Gestionnaire des tâches dans le menu Démarrer
-Raccourcis clavier Ctrl+Alt+Suppr
+Look for Task Manager in the Start menu, or
+With the keyboard shortcut Ctrl+Alt+Delete
-![Aperçu du gestionnaire des tâches Windows](_images/win-task-manager.png)
+
+Image from Wikimedia
-
-In Mac OS#
+
+In macOS#
-
-Pour le faire afficher :
+
+To open the Activity Monitor:
-Démarrer l’application à partir des Applications et Utilitaires de Mac OS
-Sinon, utiliser le raccourcis clavier Commande+Espace et taper les
-premières lettres de “Moniteur d’activité” pour pouvoir sélectionner
-cette application
+Start it from the Applications and Utilities directory in macOS
+Otherwise, use the Command+Space shortcut and start typing
+the first letters of “Activity Monitor” to find and select it
-![Overview of Mac OS Activity Monitor](https://help.apple.com/assets/63FD404271C3B6058F265722/63FD404A71C3B6058F265732/en_US/07d6bea6dc9944ae58f6581297196752.png)
+
+Image from Apple Support
In Linux#
-Dans un terminal Unix, on peut utiliser :
+In a Linux terminal, you can use:
-La commande top
(q
pour quitter)
+The top
command
+(Press Q to quit)
-![Capture de top](_images/linux-top.png)
+![Screenshot of top](_images/linux-top.png)
-La commande htop
(q
pour quitter)
+The htop
command
+(Press Q to quit)
-![Capture de htop](_images/linux-htop.png)
+![Screenshot of htop](_images/linux-htop.png)
Analysing Compute Jobs on Clusters#
-On commence par se connecter au noeud frontal de la grappe :
+As a first step, we need to connect to the cluster:
ssh login1
...
Notes :
-Pour accéder aux grappes de calcul en production, il vaut mieux
-utiliser une paire de clés SSH.
-L’authentification multifacteur
-est maintenant offerte sur les grappes nationales.
-Vidéo d’introduction ici.
-Avec votre accès par défaut, vous avez un compte de calcul
-def-*
de base qui vous permet de lancer des tâches.
+To connect to the national systems in production, you better use a
+pair of SSH keys
+Multifactor authentication
+is now available on national clusters. See the
+introductory video here
+With your default access, you can use at least one
+def-*
account, which allows you to submit compute jobs
To submit a job script, we use the
sbatch
command :
@@ -611,7 +616,7 @@ (Demo) Checking Resources Used by a Running GPU Job
For Windows and Mac OS, you can install proprietary software +
For Windows and macOS, you can install proprietary software that allows real time visualization of the GPU utilization. Please check the documentation of the GPU manufacturer for details
In Linux, with an NVIDIA GPU, we first have the @@ -654,26 +659,29 @@
Comparing the Speed of CPU Cores and a GPU#
-Avant d’utiliser massivement les GPUs d’une grappe de calcul, il faut
-tout d’abord que l’application ou l’algorithme puisse démontrer une
-“bonne performance” en utilisant plusieurs processeurs en parallèle.
-Quelques définitions :
+Before using GPUs on compute clusters, your application
+and its main algorithm must at first demonstrate a “good
+performance” while using regular CPU cores in parallel.
+A few definitions:
-Temps écoulé = temps d’exécution total que l’on perçoit et non le temps CPU
-Accélération = (temps avec un processeur) / (temps avec parallélisme)
-Efficacité = (Accélération) / (nombre de processeurs)
+Elapsed time = total perceived execution time, not the CPU time
+Acceleration = (Elapsed time with 1
CPU core) /
+(Elapsed time with N
CPU cores)
+Efficiency = (Acceleration) / N
-Le coût d’un noeud GPU étant cinq fois supérieur à celui d’un noeud
-régulier, l’utilisation d’un seul GPU doit permettre une accélération
-d’au moins cinq fois (5x) la vitesse de huit (8) à douze (12) processeurs.
+The acquisition cost of a GPU node being about five times
+the cost of a regular CPU node, the use of a single GPU
+must accelerate an application at least five times (5x)
+the speed of 8 to 16 cores in parallel to be worth it.
-Accélération = (temps avec 8 à 12 processeurs) / (temps avec un accélérateur)
+GPU Acceleration = (time with 8 to 16 CPU cores) /
+(time with a single GPU) >= 5
Béluga et Narval ont chacun un portail pour l’analyse des tâches :
+Béluga and Narval each have a great portal for job monitoring:
À coût d’essais et erreurs avec une tâche de petite taille, -la cible pour :
+When testing with a short and small job, the target for:
Le calcul est une efficacité d’au moins 90%
+The compute efficiency is at least 90%
Tâches séquentielles : il faut optimiser les accès aux données
+Serial tasks: may need to optimize the access to the data
Utiliser adéquatement les différents types de stockage
Use each type of storage spaces adequately (see chapter 4)
Tâches parallèles : il existe un nombre maximal de processeurs -à utiliser pour respecter ce seuil :
+Parallel tasks: there is a maximum number +of CPU cores that can reach this target:
Principe de scalabilité -et Loi d’Amdahl
Scalability +principle and the +Amdahl’s law
La mémoire-vive est une consommation de l’ordre de 80% -de ce qui est demandé à l’ordonnanceur Slurm
The memory usage should be around 80% +of what was requested to the Slurm scheduler
Rappel - vous pouvez obtenir ces pourcentages via les commandes
-sacct -X
(surtout pour obtenir les numéros de tâches) et seff
.
-Les valeurs à considérer sont :
Reminder - you can get these percentages with the commands
+sacct -X
(mainly to get job IDs) and seff
.
+The important values are:
CPU Utilized
et CPU Efficiency
Memory Utilized
et Memory Efficiency
CPU Utilized
and CPU Efficiency
Memory Utilized
and Memory Efficiency
La question qui se pose : -en augmentant la ou les dimensions du problème, quelles devraient -être la durée du calcul et la consommation en mémoire-vive? -Une analyse détaillée du code -n’est pas nécessaire pour déterminer le type de calcul qui est fait :
+If you increase the size of the problem, what +should be the expected compute time and memory usage? +A detailed code analysis +is not necessary to make that approximation:
Vous pouvez mesurer le temps d’exécution (avec la
-commande time
) en fonction de la taille du problème.
-En extrapolant les résultats, il serait possible de prévoir
-le comportement du programme sur une grappe de calcul.
You can measure the execution time (with the
+time
command) in function of the size of the problem.
+By extrapolating the results, you should be able to
+predict the program behavior on the compute cluster.
time -p sleep 2
Vous pouvez considérer le format des données en entrées pour -deviner l’ordre du calcul principal.
You can also considerate the shape of the input data +in order to guess the order of the main calculation.
En plus du temps de calcul et de l’espace mémoire, il faut aussi -considérer l’utilisation du stockage. Les valeurs à tenir compte :
+On top of the compute time and memory usage, you must also considerate +the storage space usage. Values to take into account are:
La quantité en octets (ou Go)
+The quantity in bytes (or GB)
Peut servir à estimer l’utilisation de la mémoire-vive
Tenir compte de la taille du stockage local rapide pour -optimiser les accès aux fichiers
Can be used to estimate the memory usage
Take into account the size limit of the +local storage for optimized file access
Le nombre de fichiers à traiter
+The number of files to process
Considérer le parallélisme de données
Multiplier la durée moyenne du traitement d’un fichier par -le nombre de fichiers pour estimer la durée d’une tâche
Multiplier la taille moyenne des fichiers par leur nombre -pour estimer l’espace en mémoire-vive (par exemple : des images)
Utiliser le stockage rapide pour optimiser les accès -aléatoires et nombreux
Data parallelism could be a solution
Multiply the average run time needed to process a file by +the total number of files to get an approximate job time limit
Multiply the average size of files by their number to +estimate the space needed in memory (example: loading images)
Use the local storage to optimize +repetitive and random accesses
Pour obtenir le nombre de fichiers et la taille totale :
+To get the number of files and the total size:
Sous Windows : dans l’explorateur Windows (raccourcis clavier : Windows + E)
+In Windows: in Windows Explorer (keyboard shorcut: Windows + E)
Sélectionner un dossier ou plusieurs fichiers
Bouton droit de la souris -> Propriétés
Select one directory or multiple files
Right-click -> Select Properties
Sous Mac OS : dans Finder
+In macOS: with Finder
Sélectionner un dossier ou plusieurs fichiers
Bouton droit de la souris -> Get Info
Autrement : avec l’affichage Par liste
- -Select one directory or multiple files
Right-click -> Select Get Info
In Linux and on compute clusters :
+In Linux and on compute clusters:
The graphical environment can provide similar tools, but it depends on the Linux distribution and the chosen desktop
The command du -sb DIRECTORY
(s
for total sum, b
for
apparent size in bytes) recursively computes and displays
the total size of used space in bytes. The apparent size is
-important to consider while transferring or backuping the data
The command find DIRECTORY | wc -l
recursively counts
and displays the number of files and subdirectories
Prévoir les paramètres d’une tâche Slurm
+Estimate Slurm job parameters
Nombre de processeurs (CPU) et de noeuds de calcul
Nombre d’accélérateurs (GPU)
Quantité de mémoire-vive (RAM)
Temps du calcul (JJ-H:M
ou H:M:S
)
Number of CPU cores and compute nodes
Number of accelerators (GPU)
Memory (RAM)
Compute time (DD-H:M
or H:M:S
)
Différents outils pour surveiller les ressources utilisées
+Different tools to monitor used resources
time
et autres bibliothèques de mesure du temps écoulé
time
and other libraries to measure elapsed time
top
, htop
, nvtop
, nvidia-smi
sacct
, seff
du -sb
, find | wc -l
et autres outils du système d’exploitation
du -sb
, find | wc -l
and other operating system tools
On vise une efficacité de 90% et plus pour les tâches CPU
+Target efficiency of at least 90% for CPU jobs
L’accélération avec un accélérateur (GPU) doit être significative (>5x)
The acceleration with a GPU should be significant (>5x)
Le choix de la grappe dépend des besoins de chaque type de calcul
The choice of a cluster depends on +the needs of each type of compute tasks