38,763
edits
(Updating to match new version of source page) |
(Updating to match new version of source page) |
||
Line 16: | Line 16: | ||
Cette forme est cependant moins récente et ne sera probablement plus prise en charge dans les versions de Slurm à venir. Nous vous recommandons de la remplacer dans vos scripts par <code>--gpus-per-node</code>. | Cette forme est cependant moins récente et ne sera probablement plus prise en charge dans les versions de Slurm à venir. Nous vous recommandons de la remplacer dans vos scripts par <code>--gpus-per-node</code>. | ||
<div class="mw-translate-fuzzy"> | |||
Il y a plusieurs autres directives que vous pouvez utiliser pour demander des GPU par exemple <code>--gpus</code>, <code>--gpus-per-socket</code>, <code>--gpus-per-task</code>, <code>--mem-per-gpu</code>, and <code>--ntasks-per-gpu</code>. Voyez la documentation de Slurm sur [https://slurm.schedmd.com/sbatch.html sbatch]. Notre équipe n'a pas testé toutes les combinaisons; si vous n'obtenez pas le résultat voulu, contactez le [[Technical support/fr|soutien technique]]. | Il y a plusieurs autres directives que vous pouvez utiliser pour demander des GPU par exemple <code>--gpus</code>, <code>--gpus-per-socket</code>, <code>--gpus-per-task</code>, <code>--mem-per-gpu</code>, and <code>--ntasks-per-gpu</code>. Voyez la documentation de Slurm sur [https://slurm.schedmd.com/sbatch.html sbatch]. Notre équipe n'a pas testé toutes les combinaisons; si vous n'obtenez pas le résultat voulu, contactez le [[Technical support/fr|soutien technique]]. | ||
</div> | |||
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]]. | ||
Line 23: | Line 25: | ||
Le tableau suivant liste les GPU qui sont présentement disponibles. | Le tableau suivant liste les GPU qui sont présentement disponibles. | ||
<div class="mw-translate-fuzzy"> | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 53: | Line 56: | ||
| Arbutus || colspan=8 | L'ordonnanceur Slurm ne gère pas les ressources infonuagiques. Voir [[Cloud resources/fr|Ressources infonuagiques]] pour l'information sur le matériel disponible. | | Arbutus || colspan=8 | L'ordonnanceur Slurm ne gère pas les ressources infonuagiques. Voir [[Cloud resources/fr|Ressources infonuagiques]] pour l'information sur le matériel disponible. | ||
|} | |} | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
(*) Le terme <i>compute capability</i> 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 <i>compute capability</i> 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> | |||
(**) Pour avoir accès aux nœuds V100 à grande mémoire de Graham, utilisez les arguments suivants dans la commande sbatch/salloc : <code>--constraint=cascade,v100</code>. | (**) Pour avoir accès aux nœuds V100 à grande mémoire de Graham, utilisez les arguments suivants dans la commande sbatch/salloc : <code>--constraint=cascade,v100</code>. | ||
<div class="mw-translate-fuzzy"> | |||
== Mist == | == 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. | [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]. | 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> | |||
= Comment indiquer le type de GPU à utiliser = | = Comment indiquer le type de GPU à utiliser = | ||
Line 68: | Line 76: | ||
Sur [[Béluga]], [[Cedar/fr|Cedar]] et [[Graham/fr|Graham]] les GPU sont uniquement disponibles sur certains nœuds. | Sur [[Béluga]], [[Cedar/fr|Cedar]] et [[Graham/fr|Graham]] les GPU sont uniquement disponibles sur certains nœuds. | ||
<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 pour laquelle 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 pour laquelle les GPU T4 ne sont pas appropriés. Assurez-vous donc de spécifier le type de GPU. | ||
</div> | |||
= Exemples = | = Exemples = | ||
Line 161: | Line 171: | ||
=== Demander un nœud P100-16G sur Cedar === | === Demander un nœud P100-16G sur Cedar === | ||
<div class="mw-translate-fuzzy"> | |||
Sur [[Cedar/fr|Cedar]] se trouve un groupe particulier de nœuds qui ont chacun quatre cartes Tesla P100 16Go, alors que les autres GPU P100 sont de 12Go et les GPU V100 de 32Go. | Sur [[Cedar/fr|Cedar]] se trouve un groupe particulier de nœuds qui ont chacun quatre cartes Tesla P100 16Go, alors que les autres GPU P100 sont de 12Go et les GPU V100 de 32Go. | ||
Les GPU dans les nœuds P100L utilisent le même connecteur PCI, ce qui fait que la latence dans les communications entre GPU est plus faible; cependant, la bande passante entre CPU et GPU est plus basse qu'avec des nœuds GPU réguliers. De plus, la mémoire vive des nœuds est de 256Go. | Les GPU dans les nœuds P100L utilisent le même connecteur PCI, ce qui fait que la latence dans les communications entre GPU est plus faible; cependant, la bande passante entre CPU et GPU est plus basse qu'avec des nœuds GPU réguliers. De plus, la mémoire vive des nœuds est de 256Go. | ||
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> | |||
{{File | {{File | ||
Line 183: | Line 195: | ||
===Regroupement de tâches pour un seul GPU=== | ===Regroupement de tâches pour un seul GPU=== | ||
<div class="mw-translate-fuzzy"> | |||
Pour exécuter pendant '''plus de 24 heures''' quatre programmes qui utilisent un seul GPU ou deux programmes qui utilisent deux GPU, nous recommandons [[GNU Parallel/fr|GNU Parallel]]. Voici un exemple simple : | Pour exécuter pendant '''plus de 24 heures''' quatre programmes qui utilisent un seul GPU ou deux programmes qui utilisent deux GPU, nous recommandons [[GNU Parallel/fr|GNU Parallel]]. Voici un exemple simple : | ||
<pre> | <pre> | ||
Line 188: | Line 201: | ||
</pre> | </pre> | ||
L'identifiant du GPU est calculé en soustrayant 1 de l'identifiant de la fente (''slot''), représenté par {%}. L'identifiant de la tâche est représenté par {#}, avec des valeurs partant de 1. | L'identifiant du GPU est calculé en soustrayant 1 de l'identifiant de la fente (''slot''), représenté par {%}. L'identifiant de la tâche est représenté par {#}, avec des valeurs partant de 1. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
Le fichier <code>params.input</code> devrait contenir les paramètres sur des lignes distinctes, comme suit : | Le fichier <code>params.input</code> devrait contenir les paramètres sur des lignes distinctes, comme suit : | ||
<pre> | <pre> | ||
Line 198: | Line 213: | ||
</pre> | </pre> | ||
Vous pouvez ainsi soumettre plusieurs tâches. Le paramètre <code>-j4</code> fait en sorte que GNU Parallel exécutera quatre tâches concurremment en lançant une tâche aussitôt que la précédente est terminée. Pour éviter que deux tâches se disputent le même GPU, utilisez CUDA_VISIBLE_DEVICES. | Vous pouvez ainsi soumettre plusieurs tâches. Le paramètre <code>-j4</code> fait en sorte que GNU Parallel exécutera quatre tâches concurremment en lançant une tâche aussitôt que la précédente est terminée. Pour éviter que deux tâches se disputent le même GPU, utilisez CUDA_VISIBLE_DEVICES. | ||
</div> | |||
== Profiling GPU tasks == | == Profiling GPU tasks == |