38,763
edits
No edit summary |
(Updating to match new version of source page) |
||
Line 1: | Line 1: | ||
<languages /> | <languages /> | ||
= Introduction = | |||
To request one or more GPUs for a Slurm job, use this form: | |||
--gpus-per-node=[type:]number | |||
The square-bracket notation means that you must specify the number of GPUs, and you may optionally specify the GPU type. Choose a type from the "Available hardware" table below. Here are two examples: | |||
--gpus-per-node=2 | |||
--gpus-per-node=v100:1 | |||
The first example requests two GPUs per node, of any type available on the cluster. The second example requests one GPU per node, with the GPU being of the V100 type. | |||
The following form can also be used: | |||
--gres=gpu[[:type]:number] | |||
This is older, and we expect it will no longer be supported in some future release of Slurm. We recommend that you replace it in your scripts with the above --gpus-per-node form. | |||
There are a variety of other directives that you can use to request GPUs and related resources: --gpus, --gpus-per-socket, --gpus-per-task, --mem-per-gpu, and --ntasks-per-gpu. Please see the Slurm documentation for [https://slurm.schedmd.com/sbatch.html sbatch] for more about these. Alliance staff have not tested many combinations of these, so if you try them and don't get the resources you expect or want, [[Technical support|contact support]]. | |||
Pour l'information générale sur l'ordonnancement des tâches, consultez [[Running jobs/fr|Exécuter des tâches]]. | Pour l'information générale sur l'ordonnancement des tâches, consultez [[Running jobs/fr|Exécuter des tâches]]. | ||
<div class="mw-translate-fuzzy"> | |||
== Nœuds disponibles == | == Nœuds disponibles == | ||
Le tableau suivant décrit les nœuds avec GPU qui sont présentement disponibles. | Le tableau suivant décrit les nœuds avec GPU qui sont présentement disponibles. | ||
</div> | |||
{| class="wikitable" | {| class="wikitable" | ||
Line 43: | Line 62: | ||
(*) Le terme ''compute capability'' est utilisé par NVIDIA pour indiquer les fonctionnalités matérielles spécifiques à un GPU particulier et n'a aucun rapport avec la performance des dispositifs. Cet attribut n'est utile que si vous compilez vos propres programmes GPU. Pour plus d'information, voir [[CUDA/fr#Attribut_.22compute_capability.22|la page CUDA]]. | (*) Le terme ''compute capability'' est utilisé par NVIDIA pour indiquer les fonctionnalités matérielles spécifiques à un GPU particulier et n'a aucun rapport avec la performance des dispositifs. Cet attribut n'est utile que si vous compilez vos propres programmes GPU. Pour plus d'information, voir [[CUDA/fr#Attribut_.22compute_capability.22|la page CUDA]]. | ||
<div class="mw-translate-fuzzy"> | |||
=== Mist === | |||
[https://docs.scinet.utoronto.ca/index.php/Mist Mist] est une grappe qui comprend des CPU IBM Power9 (et non des Intel x86) et des GPU NVIDIA V100. | |||
Si vous avez accès à Niagara, vous avez aussi accès à Mist; voyez les directives sur [https://docs.scinet.utoronto.ca/index.php/Mist#Submitting_jobs le site web de SciNet]. | |||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
== Comment indiquer le type de GPU à utiliser == | == Comment indiquer le type de GPU à utiliser == | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
Certaines grappes possèdent plus d'un type de GPU; c'est le cas de [[Cedar/fr|Cedar]], [[Graham/fr|Graham]] et [[Hélios]]. | Certaines grappes possèdent plus d'un type de GPU; c'est le cas de [[Cedar/fr|Cedar]], [[Graham/fr|Graham]] et [[Hélios]]. | ||
</br> | </br> | ||
Line 50: | Line 78: | ||
Dans le tableau ci-dessus, la colonne ''Type de GPU'' contient l'identifiant qu'il faut fournir à l'ordonnanceur Slurm pour un GPU en particulier, par exemple | Dans le tableau ci-dessus, la colonne ''Type de GPU'' contient l'identifiant qu'il faut fournir à l'ordonnanceur Slurm pour un GPU en particulier, par exemple | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
Si le type de GPU n'est pas spécifié, Slurm pourrait acheminer aléatoirement votre tâche vers un nœud équipé avec n'importe quel type de GPU. Dans certains cas, ceci pourrait ne pas être souhaitable. Par exemple, le code utilisé en mécanique moléculaire nécessite une haute performance en double précision et les GPU T4 ne sont pas appropriés. Assurez-vous donc de spécifier le type de GPU. | Si le type de GPU n'est pas spécifié, Slurm pourrait acheminer aléatoirement votre tâche vers un nœud équipé avec n'importe quel type de GPU. Dans certains cas, ceci pourrait ne pas être souhaitable. Par exemple, le code utilisé en mécanique moléculaire nécessite une haute performance en double précision et les GPU T4 ne sont pas appropriés. Assurez-vous donc de spécifier le type de GPU. | ||
</div> | |||
== | = Examples = | ||
<div class="mw-translate-fuzzy"> | |||
== Tâches avec un seul cœur == | == Tâches avec un seul cœur == | ||
Pour une tâche qui nécessite un seul cœur CPU et un GPU, | Pour une tâche qui nécessite un seul cœur CPU et un GPU, | ||
Line 72: | Line 100: | ||
./program | ./program | ||
}} | }} | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
== Tâches multifils == | == Tâches multifils == | ||
Pour une tâche GPU qui nécessite plusieurs CPU dans un seul nœud, | Pour une tâche GPU qui nécessite plusieurs CPU dans un seul nœud, | ||
Line 92: | Line 122: | ||
*avec Cedar, nous recommandons un maximum de 6 cœurs par GPU P100 (p100 et p100l) et un maximum de 8 cœurs par GPU V100 (v100l); | *avec Cedar, nous recommandons un maximum de 6 cœurs par GPU P100 (p100 et p100l) et un maximum de 8 cœurs par GPU V100 (v100l); | ||
*avec Graham, 16 cœurs. | *avec Graham, 16 cœurs. | ||
</div> | |||
For each GPU requested on: | |||
* Béluga, we recommend no more than 10 CPU cores. | |||
* Cedar, we recommend no more than 6 CPU cores per P100 GPU (p100 and p100l) and no more than 8 CPU cores per V100 GPU (v100l). | |||
* Graham, we recommend no more than 16 CPU cores. | |||
<div class="mw-translate-fuzzy"> | |||
== Tâches MPI == | == Tâches MPI == | ||
{{File | {{File | ||
Line 109: | Line 146: | ||
srun ./program | srun ./program | ||
}} | }} | ||
</div> | |||
== Nœuds entiers == | == Nœuds entiers == | ||
Si votre application peut utiliser efficacement un nœud entier et ses GPU associés, vous pouvez probablement réduire le temps d'attente si vous demandez un nœud entier. Utilisez les scripts suivants comme modèle. | Si votre application peut utiliser efficacement un nœud entier et ses GPU associés, vous pouvez probablement réduire le temps d'attente si vous demandez un nœud entier. Utilisez les scripts suivants comme modèle. | ||
<div class="mw-translate-fuzzy"> | |||
=== Demander un nœud GPU sur Graham === | === Demander un nœud GPU sur Graham === | ||
{{File | {{File | ||
Line 127: | Line 166: | ||
nvidia-smi | nvidia-smi | ||
}} | }} | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
=== Demander un nœud GPU P100 sur Cedar === | === Demander un nœud GPU P100 sur Cedar === | ||
{{File | {{File | ||
Line 143: | Line 184: | ||
nvidia-smi | nvidia-smi | ||
}} | }} | ||
</div> | |||
=== Demander un nœud P100-16G sur Cedar === | === Demander un nœud P100-16G sur Cedar === | ||
Line 150: | Line 192: | ||
Pour utiliser ces nœuds, il faut demander des nœuds entiers et indiquer <code>--gres=gpu:p100l:4</code>. Le temps d'exécution maximal pour les tâches sur GPU P100L est de 28 jours. | Pour utiliser ces nœuds, il faut demander des nœuds entiers et indiquer <code>--gres=gpu:p100l:4</code>. Le temps d'exécution maximal pour les tâches sur GPU P100L est de 28 jours. | ||
<div class="mw-translate-fuzzy"> | |||
{{File | {{File | ||
|name=p100l_gpu_job.sh | |name=p100l_gpu_job.sh | ||
Line 165: | Line 208: | ||
nvidia-smi | nvidia-smi | ||
}} | }} | ||
</div> | |||
===Regroupement de tâches pour un seul GPU=== | ===Regroupement de tâches pour un seul GPU=== |