Skip to content
Merged

main #44

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions docs/arch_exp/turpan/soumettre_calcul/MIG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

Les GPU A100 sont puissants, mais parfois une application n’a pas besoin de toute la capacité du GPU. La technologie MIG (Multi-Instance GPU) de NVIDIA permet de partitionner un seul GPU en plusieurs instances plus petites, chacune avec sa propre mémoire, ses cœurs et ses ressources de calcul dédiées.

L’utilisation de MIG améliorera l’efficacité de la machine et réduira aussi [votre consommation d’heures](../accounting/accounting-rules.md) au lieu d'utiliser Shared ou Full nœud.

:::info
Pour savoir si votre application doit utiliser un MIG ou non, essayez-la d’abord sur un GPU complet et utilisez `placement` pour observer l’utilisation du GPU ``` placement --jobid={your_job_id} ``` qui permet de voir l’utilisation du GPU et de la mémoire, sachant qu’un GPU complet dispose de 80 Go de mémoire.
:::


## À propos de MIG sur Turpan
Il existe 2 types d’instances MIG sur Turpan :
#### 3g.40gb
Cela représente environ 57 % d’un GPU A100 complet. À prendre en compte dans cette configuration :
- Le nombre de cœurs CPU disponibles sur cette configuration est `20 cores`
- La mémoire disponible est `40 GB`
#### 2g.20gb
Cela représente environ 40 % d’un GPU A100 complet. À prendre en compte dans cette configuration :
- Le nombre de cœurs CPU disponibles sur cette configuration est `10 cores`
- La mémoire disponible est `20 GB`

## Quand utiliser MIG
Après avoir exécuté votre code une première fois sur un GPU complet, utilisez placement pour analyser l’usage du GPU.
- Si votre **code utilise entre 50 % et 35 %**, moins de 20 cœurs et moins de 40 Go de mémoire, utilisez **`3g.40gb`**
- Si votre code a besoin de plus de 40 Go ou de plus de 20 cœurs, restez sur le GPU complet.
- Si votre **code utilise moins de 35 %**, 10 cœurs et moins de 20 Go de mémoire, utilisez **`2g.20gb`**
- Si vous avez besoin de plus de 10 cœurs mais moins de 20, ou de plus de 20 Go de mémoire mais moins de 40 Go, suivez les indications de la configuration `3g.40gb`.

:::caution
MIG est utilisable uniquement si votre application n’a besoin que d’un seul GPU.
:::

## Comment utiliser MIG

<Tabs>
<TabItem label="3g.40gb" value="3g.40gb" >

>```
>#!/bin/bash
>#SBATCH -N 1
>#SBATCH -n 20
>#SBATCH --gres=gpu:3g.40gb
>#SBATCH -p 3g.40gb
>#SBATCH --reservation migconfig
>
>module purge
>module load gnu/11.2.0
>module load openmpi/gnu/4.1.4-gpu
>
>mpirun -n 20 ./exec
>```

</TabItem>

<TabItem label="2g.20gb" value="2g.20gb" >

>```
>#!/bin/bash
>#SBATCH -N 1
>#SBATCH -n 10
>#SBATCH --gres=gpu:2g.20gb
>#SBATCH -p 2g.20gb
>#SBATCH --reservation migconfig
>
>module purge
>module load gnu/11.2.0
>module load openmpi/gnu/4.1.4-gpu
>
>mpirun -n 10 ./exec
>```

</TabItem>
</Tabs>

:::danger Important
- Impossible d’utiliser plus d’une instance MIG par job.
- Évitez l’option --gpus-per-task, car elle considère automatiquement un GPU complet.
:::
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Lancer un calcul
sidebar_position: 4
sidebar_position: 3
---

import Tabs from '@theme/Tabs';
Expand All @@ -20,7 +20,7 @@ L'utilisateur peut exécuter un maximum de 3 jobs simultanément, quelle que soi
* **Exclusive**: Un job en partition exclusive réserve l’intégralité des nœuds qui lui sont attribués.
* **Non exclusive**: Un job en partition non exclusive ne réserve pas l’intégralité du nœud, ce qui permet à d’un autre job (d’un autre utilisateur) de partager les mêmes ressources.

Le choix de la partition dépend des besoins en ressources, notamment en termes de nombre de cœurs par nœud et des limites de temps de calcul (walltime), veuillez consulter [les règles de comptabilisation des ressources ](./accounting/accounting-rules.md#exemples-).
Le choix de la partition dépend des besoins en ressources, notamment en termes de nombre de cœurs par nœud et des limites de temps de calcul (walltime), veuillez consulter [les règles de comptabilisation des ressources ](../accounting/accounting-rules.md#exemples-).
:::

Afin de ne pas monopoliser l’ensemble des noeuds du cluster en journée :
Expand All @@ -30,6 +30,11 @@ Afin de ne pas monopoliser l’ensemble des noeuds du cluster en journée :

Lorsque la partition est désactivée, les soumissions sont possibles, mais les jobs sont suspendus jusqu’à l’activation de la partition. A la désactivation, les jobs RUNNING sur la partition "full" ne sont pas arrêtés.


:::info
Si votre application n’utilise qu’un seul GPU et ne consomme pas toute la capacité du GPU, pensez à vérifier l’option [**MIG**](./MIG.md).
:::

## Comment lancer un script `sbatch` ?

<Tabs>
Expand Down Expand Up @@ -79,7 +84,7 @@ Exemple script shared, 1 nœud, 40 processeurs, le temps d'exécution moins de
</Tabs>

:::caution
Sur Turpan, si l'application utilise **MPI**, il est nécessaire d'utiliser **mpirun** et d'éviter srun, sauf si un conteneur est utilisé ([voir ici](./logiciels/apptainer.md)). Pour les autres applications **sans MPI**, srun reste valide
Sur Turpan, si l'application utilise **MPI**, il est nécessaire d'utiliser **mpirun** et d'éviter srun, sauf si un conteneur est utilisé ([voir ici](../logiciels/container/index.md)). Pour les autres applications **sans MPI**, srun reste valide
:::

## Obtenir des informations sur un job
Expand Down