Skip to content

Commit 3efe529

Browse files
committed
Merge branch 'main' of github.com:MesoNET/user-documentation
2 parents a83b73f + 8e23cff commit 3efe529

File tree

20 files changed

+855
-10
lines changed

20 files changed

+855
-10
lines changed

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,3 @@ L'adresse de la documentation est celle-ci : https://www.mesonet.fr/documentatio
2222
- on installe docusaurus : `cd mesodoc && yarn install` ou `cd mesodoc && npm install`
2323
- On édite ce que l'on souhaite
2424
- On construit le site et lance un serveur web localement pour le prévisualiser : `yarn serve` ou `npm run start`
25-

docs/arch_exp/turpan/Actualité.md

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,33 @@ Vous trouverez ici les dernières informations, annonces et mises à jour concer
99

1010
---
1111
## Dernières Nouvelles
12+
### 🔄 **Maintenance de Turpan**
13+
**🗓️ <u>Date : 19 Novembre 2025</u>**
14+
15+
Une maintenance Turpan aura lieu du **19 Novembre à 9h00** . Les nœuds seront de nouveau disponibles les uns après les autres dans la journée.
16+
:::caution
17+
📌 **Indisponibilité du système**
18+
Vos job seront suspendues pendant cette période, mais la machine restera accessible.
19+
:::
20+
21+
---
22+
### 💻➕ Environnement logiciel
23+
L’environnement logiciel a été enrichi avec les modules :
24+
- [La dynamique moléculaire](./logiciels/dynamique_moléculaire.md): LAMMPS, GROMACS et AMBER sont désormais disponible.
25+
- [Chdb](./logiciels/chdb.md): pour embarrassingly parallel sur un grand nombre d’entrées indépendantes.
26+
- L'utile `placement` a été mis à jour pour permettre une surveillance continue comme suit : Ajoutez à votre commande l’option **`--rt`**, qui par défaut affiche les informations toutes les 1 seconde, ou **--rt=t**, qui affiche les informations sur l’utilisation des ressources du code intégrées sur un intervalle de temps t. Pour plus d’informations, consultez placement --help.
27+
28+
29+
## Actualités Précédentes
30+
---
31+
### 💻➕ Environnement logiciel
1232
L’environnement logiciel a été enrichi avec les modules suivants :
1333

1434
- **MAQAO version 25.1.0** est désormais disponible. Cette dernière version offre des outils améliorés pour l’analyse et l’optimisation des performances.
1535

1636
- **SYCL avec AdaptiveCpp** pour ARM a été intégré avec succès, permettant une programmation hétérogène efficace et un meilleur support des plateformes basées sur ARM.
17-
18-
1937
---
2038

21-
## Actualités Précédentes
2239
### 🔄 **Mise à jour et maintenance de Turpan**
2340
**🗓️ <u>Date : 31 mars - 3 avril 2025</u>**
2441

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
---
2+
title: Chdb
3+
sidebar_position: 1
4+
---
5+
6+
Chdb est conçu pour exécuter en parallèle le même programme sur un grand nombre d’entrées indépendantes. Il s’adresse aux calculs dits « embarrassingly parallel », qui ne nécessitent aucune communication entre processus et ne font donc pas appel à MPI.
7+
## Les prérequis
8+
Il s’applique aux calculs ayant les caractéristiques suivantes :
9+
- Un exécutable séquentiel ou multithreadé est appliqué de manière répétitive sur un ensemble de fichiers d’entrée
10+
- Les noms des fichiers d’entrée se terminent tous par la même extension
11+
- Il n’y a pas de dépendance entre les différents traitements
12+
- Il n’y a donc pas de communication entre eux
13+
- Il est possible de lancer plusieurs instances de l’exécutable simultanément.
14+
15+
## Les précautions à pendre
16+
17+
:::danger Important
18+
chdb est un outil très puissant : s’il y a une erreur dans votre exécutable produisant des effets néfastes pour le système, en particulier des entrées-sorties intensives, ceux-ci seront démultipliés. La règle d’or est donc la suivante :
19+
20+
AVANT DE LANCER UN EXÉCUTABLE AVEC chdb, VÉRIFIEZ QUE CELUI-CI FONCTIONNE CORRECTEMENT EN LE LANÇANT en "STANDALONE". Si le comportement de votre exécutable est correct, alors seulement vous pouvez envisager de l’utiliser avec chdb.
21+
:::
22+
23+
## Initialiser l’environnement
24+
L’environnement doit être initialisé :
25+
>```shell
26+
> module load chdb/1.1
27+
>```
28+
29+
## La commande chdb
30+
31+
chdb permet d’exécuter un programme présentant les caractéristiques ci-dessus sur un nombre arbitraire de processeurs et de nœuds.
32+
33+
Lire la documentation `chdb --help`
34+
35+
#### On **doit passer** les paramètres suivants :
36+
37+
- `--in-dir` Le nom du répertoire dans lequel se trouvent les fichiers d’entrée. Ce répertoire doit exister
38+
- `--in-type` L’extension des fichiers que l’on considère comme fichiers d’entrée. Par exemple txt, pdb, etc.
39+
- `--out-files` Le nom du ou des fichiers créés par la commande, pour chaque exécution de la commande le nom est bien sûr différent, on utilise des "templates" qui seront remplacés avec le nom du fichier d’entrée. S’il y a plusieurs fichiers créés, leurs noms doivent être séparés par des virgules (,)
40+
- `--command-line` La ligne de commande utilisée. Il est possible de mettre un morceau de shell complet (une série de commandes séparée par des | par exemple). La seule restriction est que cette commande doit lire un fichier en entrée, écrire un ou plusieurs fichiers en sortie. La commande doit être mise entre guillemets, sinon elle sera interprétée par le shell
41+
- `--out-dir` Le nom du répertoire contenant les fichiers de sortie. Ce répertoire ne doit pas exister au démarrage de chdb
42+
43+
#### On peut passer en outre les paramètres suivants :
44+
45+
- `--work-dir` Avant d’exécuter la commande, chdb fera un chdir dans ce répertoire. Ce répertoire est souvent le même que --outdir, et les mêmes "templates" peuvent être utilisés.
46+
- `--create-environment` Vous pouvez entrer ici un "petit morceau" de code shell, qui sera exécuté après le chdir précédent et avant l’appel de la commande : cela vous permet par exemple de copier des fichiers d’entrée qui seraient obligatoirement présents dans le répertoire courant.
47+
- `--sort-by-size` Les fichiers présentés en entrée sont triés du plus gros au plus petit, si l’on fait l’hypothèse que le temps de traitement est proportionnel à la charge cela devrait permettre un meilleur équilibrage de la charge
48+
- `--block-size=10` Si on met 10 par exemple, cela signifie que les process mpi traitent les fichiers par blocs de 10. Cela permet de minimiser les communications lorsque le nombre de fichiers est important. S’il y a peu de fichiers, cette option risque par contre de générer un déséquilibrage de la charge.
49+
- `--in-files` Permet de ne traiter qu’une partie des fichiers du répertoire d’entrée
50+
51+
#### En cas d’erreur dans la commande exécutée :
52+
53+
Si la commande exécutée renvoie un code d’erreur (c’est-à -dire un statut différent de zéro), le comportement par défaut de chdb est d’arrêter tout traitement.
54+
55+
On peut toutefois modifier ce comportement en spécifiant le paramètre `--on-error` : le nom des fichiers ayant provoqué une erreur est conservé, cela permet de relancer chdb (avec des paramètres différents).
56+
57+
Pour cela, le paramètre `--in-files` sera utile car il permettra de ne relancer le programme que sur les fichiers d’entrée qui ont provoqué l’erreur.
58+
59+
### Chdb dans un script slurm
60+
Dans cet exemple simple, un script Bash génère les fichiers d’entrée et le programme qui exécute le traitement correspondant à chaque entrée.
61+
62+
>```shell
63+
> #create directories
64+
> mkdir -p ./chdb_test/input
65+
> mkdir -p ./chdb_test/dev_output
66+
> cd ./chdb_test
67+
> #create 20 small input files
68+
>for i in $(seq -f "%02g" 1 20); do
69+
> printf "This is file %s\n" "$i" > input/file_${i}.txt
70+
>done
71+
> # create a simple processing program (mon_programme)
72+
> # This program reads stdin (or a filename arg) and writes an output file.
73+
> cat > mon_programme.sh <<'EOF'
74+
> #!/bin/bash
75+
> # mon_programme.sh infile > outfile
76+
> infile="$1"
77+
> # simulate some work: sleep 0-2 seconds, print file contents with header
78+
> sleep $((RANDOM % 3))
79+
> echo "=== processed: $(basename "$infile") ==="
80+
> cat "$infile"
81+
> EOF
82+
> chmod +x mon_programme.sh
83+
> #test one run "standalone" (MANDATORY before using chdb)
84+
> ./mon_programme.sh input/file_01.txt > dev_output/file_01.out
85+
> cat dev_output/file_01.out
86+
>```
87+
88+
Ce script Slurm permet de lancer le code sur tous les fichiers d’entrée.
89+
```
90+
#!/bin/bash
91+
#SBATCH -J chdb_example
92+
#SBATCH -N 1
93+
#SBATCH -n 3
94+
#SBATCH --ntasks-per-node=3
95+
#SBATCH --ntasks-per-core=1
96+
#SBATCH --time=00:30:00
97+
#SBATCH --output=chdb.out
98+
99+
module purge
100+
module load chdb/1.1
101+
102+
103+
# IMPORTANT: ensure out directory does NOT exist
104+
rm -rf out_slurm
105+
mpirun chdb \
106+
--in-dir ./chdb_test/input \
107+
--in-type txt \
108+
--out-dir ./chdb_test/out_slurm \
109+
--out-files %out-dir%/%path% \
110+
--sort-by-size \
111+
--command "./mon_program.sh %in-dir%/%path% > %out-dir%/%path%"
112+
```
113+
114+
Les variables `%in-dir%/%path%` et `%out-dir%/%path%` correspondent aux chemins d’entrée et de sortie définis précédemment dans la commande par (`--out-dir`, `--in-dir`) ; elles seront détectées automatiquement.
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
---
2+
title: La dynamique moléculaire
3+
sidebar_position: 12
4+
---
5+
6+
Les modules disponibles sont:
7+
- LAMMPS
8+
- GROMACS
9+
- AMBER
10+
11+
## LAMMPS
12+
LAMMPS (Large-scale Atomic/Molecular Massively Parallel Simulator) est un logiciel de dynamique moléculaire hautement parallélisé, conçu pour simuler des systèmes atomiques, moléculaires ou mésoscopiques. Il est particulièrement utilisé pour la modélisation des matériaux, des polymères, des métaux et des fluides complexes.
13+
14+
« Il y a deux modules disponibles : l’un avec GNU-CUDA et l’autre avec le support de Kokkos. »
15+
16+
```
17+
#!/bin/bash
18+
#SBATCH -J lammps-run
19+
#SBATCH -N 1
20+
#SBATCH -n 2
21+
#SBATCH --gres=gpu:2
22+
#SBATCH --cpus-per-task=1
23+
24+
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
25+
export OMP_PROC_BIND=close
26+
```
27+
#### Kokkos GPU-MPI
28+
29+
```
30+
module purge
31+
module load lammps/lammps_kakos
32+
mpirun -np ${ntasks} --mca pml ucx -x UCX_NET_DEVICES=all --map-by ppr:80:node:PE=$SLURM_CPUS_PER_TASK --bind-to core lmp -k on g 2 -sf kk -pk kokkos -in in.file
33+
34+
```
35+
36+
#### GNU-CUDA
37+
```
38+
module purge
39+
module load lammps/lammps_gnu_cuda
40+
```
41+
Il existe plusieurs façons d’exécuter le programme ; vous pouvez en choisir une parmi les suivantes
42+
```
43+
# MPI
44+
mpirun -np $SLURM_NTASKS --mca pml ucx -x UCX_NET_DEVICES=all --map-by ppr:80:node:PE=$SLURM_CPUS_PER_TASK --bind-to core lmp -in in.file
45+
```
46+
```
47+
# MPI OMP (lmp -sf omp )
48+
mpirun -np $SLURM_NTASKS --mca pml ucx -x UCX_NET_DEVICES=all --map-by ppr:80:node:PE=$SLURM_CPUS_PER_TASK --bind-to core lmp -sf omp -in in.file
49+
```
50+
```
51+
# GPU cuda (lmp -sf gpu )
52+
export CUDA_VISIBLE_DEVIES=0,1
53+
mpirun -np $SLURM_NTASKS --mca pml ucx -x UCX_NET_DEVICES=all --map-by ppr:80:node:PE=$SLURM_CPUS_PER_TASK --bind-to core lmp -sf gpu -in in.file
54+
```
55+
56+
57+
## GROMACS
58+
GROMACS est un logiciel open source spécialisé dans la dynamique moléculaire, principalement utilisé pour l’étude des biomolécules comme les protéines, les lipides et les acides nucléiques. Il est reconnu pour sa rapidité et son efficacité sur les architectures parallèles, notamment les GPU.
59+
60+
```
61+
#!/bin/bash
62+
#SBATCH --job-name=gmx_mpi_gpu
63+
#SBATCH --nodes=1
64+
#SBATCH --ntasks-per-node=16
65+
#SBATCH --gres=gpu:2
66+
#SBATCH --cpus-per-task=4
67+
#SBATCH --time=00:30:00
68+
#SBATCH --partition=small
69+
#SBATCH -o gmx_%j.out
70+
#SBATCH -e gmx_%j.err
71+
72+
# Chargement des modules
73+
module purge
74+
module load gromacs/2024.6
75+
76+
source $GMXRC
77+
78+
# Commande MPI explicite
79+
mpirun -np $SLURM_NTASKS \
80+
--hostfile hosts.txt \
81+
--map-by ppr:$SLURM_NTASKS:node:PE=$SLURM_CPUS_PER_TASK \
82+
--bind-to core \
83+
gmx_mpi mdrun \
84+
-s benchPEP.tpr \
85+
-deffnm benchPEP \
86+
-ntomp $SLURM_CPUS_PER_TASK \
87+
-nb gpu \
88+
-pin on -v
89+
```
90+
:::danger Important
91+
N'oubliez pas `source $GMXRC`
92+
:::
93+
94+
:::tip Note
95+
Si vous lancez un calcul sans `mpirun`, et que vous ne définissez pas `--cpus-per-task` ou `OMP_NUM_THREADS`, le programme utilisera alors 80 threads
96+
:::
97+
98+
## AMBER
99+
AMBER (Assisted Model Building with Energy Refinement) est un ensemble de programmes destinés à la simulation de biomolécules par dynamique moléculaire. Il repose sur des champs de force précis et est couramment employé en chimie computationnelle et en biophysique pour l’étude des interactions et de la stabilité des systèmes biologiques.
100+
101+
```
102+
103+
#!/bin/bash
104+
#SBATCH -N 1
105+
#SBATCH -n 2
106+
#SBATCH --gres=gpu:2
107+
#SBATCH -p small
108+
#SBATCH --ntasks-per-node=2
109+
110+
module purge
111+
module load amber/gnu/25
112+
source $AMBERSH
113+
114+
mpirun -n 2 pmemd.cuda_SPFP.MPI -O -i mdin5 -o overall_output.out -p sys.prmtop -c sys4.rst -inf mdinfo5 -x sys4rot5.mdcrd
115+
116+
```
117+
:::danger Important
118+
N'oubliez pas `source $AMBERSH`
119+
:::
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
import Tabs from '@theme/Tabs';
2+
import TabItem from '@theme/TabItem';
3+
4+
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.
5+
6+
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.
7+
8+
:::info
9+
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.
10+
:::
11+
12+
13+
## À propos de MIG sur Turpan
14+
Il existe 2 types d’instances MIG sur Turpan :
15+
#### 3g.40gb
16+
Cela représente environ 57 % d’un GPU A100 complet. À prendre en compte dans cette configuration :
17+
- Le nombre de cœurs CPU disponibles sur cette configuration est `20 cores`
18+
- La mémoire disponible est `40 GB`
19+
#### 2g.20gb
20+
Cela représente environ 40 % d’un GPU A100 complet. À prendre en compte dans cette configuration :
21+
- Le nombre de cœurs CPU disponibles sur cette configuration est `10 cores`
22+
- La mémoire disponible est `20 GB`
23+
24+
## Quand utiliser MIG
25+
Après avoir exécuté votre code une première fois sur un GPU complet, utilisez placement pour analyser l’usage du GPU.
26+
- Si votre **code utilise entre 50 % et 35 %**, moins de 20 cœurs et moins de 40 Go de mémoire, utilisez **`3g.40gb`**
27+
- Si votre code a besoin de plus de 40 Go ou de plus de 20 cœurs, restez sur le GPU complet.
28+
- Si votre **code utilise moins de 35 %**, 10 cœurs et moins de 20 Go de mémoire, utilisez **`2g.20gb`**
29+
- 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`.
30+
31+
:::caution
32+
MIG est utilisable uniquement si votre application n’a besoin que d’un seul GPU.
33+
:::
34+
35+
## Comment utiliser MIG
36+
37+
<Tabs>
38+
<TabItem label="3g.40gb" value="3g.40gb" >
39+
40+
>```
41+
>#!/bin/bash
42+
>#SBATCH -N 1
43+
>#SBATCH -n 20
44+
>#SBATCH --gres=gpu:3g.40gb
45+
>#SBATCH -p 3g.40gb
46+
>
47+
>module purge
48+
>module load gnu/11.2.0
49+
>module load openmpi/gnu/4.1.4-gpu
50+
>
51+
>mpirun -n 20 ./exec
52+
>```
53+
54+
</TabItem>
55+
56+
<TabItem label="2g.20gb" value="2g.20gb" >
57+
58+
>```
59+
>#!/bin/bash
60+
>#SBATCH -N 1
61+
>#SBATCH -n 10
62+
>#SBATCH --gres=gpu:2g.20gb
63+
>#SBATCH -p 2g.20gb
64+
>
65+
>module purge
66+
>module load gnu/11.2.0
67+
>module load openmpi/gnu/4.1.4-gpu
68+
>
69+
>mpirun -n 10 ./exec
70+
>```
71+
72+
</TabItem>
73+
</Tabs>
74+
75+
:::danger Important
76+
- Impossible d’utiliser plus d’une instance MIG par job.
77+
- Évitez l’option --gpus-per-task, car elle considère automatiquement un GPU complet.
78+
:::

0 commit comments

Comments
 (0)