Skip to content

main #38

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jun 12, 2025
Merged

main #38

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
66 changes: 66 additions & 0 deletions docs/arch_exp/turpan/logiciels/container/custum_apptainer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
---
title: Créer un conteneur
sidebar_position: 3
---

Le plus simple est de partir d’un [des conteneurs disponible](./list_containers.md).

Les commandes pour créer l’environnement apptainer depuis l’image du conteneur nommés ici « X » ( où X peut être n'importe lequel des conteneurs disponibles):

```shell
cd /work/conteneurs/
apptainer build --sandbox mon_conteneur/ /work/conteneurs/sessions-interactives/x.sif

# Create necessary directory
mkdir mon_conteneur/users mon_conteneur/tmpdir mon_conteneur/work
```


## Accéder au conteneur : deux cas à distinguer
Il est important de prendre en compte les éléments suivants lors de l'accès à un conteneur :

* Si vous souhaitez installer des paquets nécessitant un accès à Internet, vous devez lancer le conteneur depuis nœud frontal, c’est-à-dire à l’endroit où se trouve le répertoire contenant le conteneur.
```shell
apptainer shell --fakeroot --writable mon_conteneur/
```

* Si vous avez besoin d’effectuer des compilations ou des tâches lourdes en utilisant un nœud de calcul (par exemple via une soumission SLURM) pour accéder au conteneur.
```shell
srun -p shared -n 1 --gres=gpu:1 --pty apptainer shell --fakeroot --writable /work/conteneurs/calmip/ mon_conteneur/
```

**Maintainant vous pouvez installer ou compiler tous les paquets nécessaires.**

## Accès aux fichiers locaux dans le conteneur
Si vous avez besoin de fichiers de votre espace personnel et que vous souhaitez les utiliser dans le conteneur :
```shell
apptainer shell --fakeroot --writable --bind path/to/file/:/tmpdir mon_conteneur/
```
Depuis l’intérieur du conteneur, copiez les fichiers depuis /tmpdir vers un autre répertoire tel que /work ou /users, afin de les rendre disponibles dans votre conteneur.

## Utiliser des binaires installés sur Turpan
Pour inclure un binaire déjà installé sur Turpan, commencez par identifier le module avec la commande `module show name` qui indiquera le chemin vers le binaire du module.

Ensuite, pour l’utiliser dans le conteneur.
```shell
apptainer shell --fakeroot --writable --bind path/to/binary/:/tmpdir mon_conteneur/
```
Une fois le chemin monté (bindé) dans le conteneur, copiez le fichier depuis `/tmpdir` vers `/usr/local/` à l’intérieur du conteneur.

## Créer l'image
Puis une fois les modifications faites, il faut construire l’image et éventuellement faire le ménage :
```shell
apptainer build mon_conteneur.sif mon_conteneur/
# A faire uniquement tout a la fin une fois que l'image est définitive pour libérer la place
apptainer cache clean
```
:::tip Note
Si vous avez construit un conteneur personnalisé, merci de nous communiquer son chemin ainsi que les paquets ajoutés, afin que nous puissions l’inclure dans la liste des conteneurs disponibles.
:::

## Le conteneur avec Jupyter Notebook
Enfin, pour lancer le conteneur que vous avez créé avec un Jupyter Notebook, vous pouvez procéder comme suit :
```shell
runJupyterSession.sh --container custom --containerpath /work/conteneurs/calmip/mon_conteneur.sif
```

Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ sidebar_position: 12
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

Vous pouvez déployer vos applications via des conteneurs Apptainer (anciennement Singularity)
Vous pouvez déployer vos applications via des conteneurs Apptainer (anciennement Singularity). La liste des conteneurs disponibles [se trouve ici](list_containers.md)

## Construction de conteneurs
## [Construction de conteneurs](custum_apptainer)

Pour vous permettre de créer facilement des conteneurs pour l'architecture des CPUs ARM, la construction de conteneurs apptainer sur Turpan est possible à partir des frontales de connexion à l'aide de la commande `apptainer build`
Pour vous permettre de créer facilement des conteneurs pour l'architecture des CPUs ARM, la construction de conteneurs apptainer sur Turpan est possible à partir des frontales de connexion à l'aide de la commande `apptainer build` [voir ici](custum_apptainer)

## Utilisation d'un conteneur Apptainer

Expand Down
109 changes: 109 additions & 0 deletions docs/arch_exp/turpan/logiciels/container/list_containers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
---
title: Liste des conteneurs
sidebar_position: 2
---

Tous les conteneurs se trouvent dans le répertoire `/work/conteneurs`.
Pour consulter en détail la liste des paquets installés dans un conteneur, utilisez la commande suivante :
```shell
apptainer exec /work/conteneurs/path_to/continer_name.sif pip list
```

<table>
<thead>
<tr>
<th style={{ width: '5%' }}>Nom</th>
<th style={{ width: '75%' }}>Packages principaux</th>
<th style={{ width: '20%' }}>Chemin</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="../envpython/pytorch">PyTorch</a></td>
<td>
<>
- torch (PyTorch – framework principal pour l’apprentissage profond)<br />
- torchvision (vision par ordinateur pour PyTorch)<br />
- torch-geometric (réseaux de neurones pour graphes)<br />
- flash_attn (mécanismes d’attention optimisés)<br />
- nvfuser (compilateur de fusion de NVIDIA pour PyTorch)<br />
- cuda-python (accès direct à l’API CUDA)
</>
</td>
<td>sessions-interactives/pytorch-25.03-py3-calmip-si-latest.sif</td>
</tr>
<tr>
<td><a href="../envpython/tensorflow">TensorFlow</a></td>
<td>
<>
- tensorflow (framework principal pour l’apprentissage profond)<br />
- keras (API haut niveau pour TensorFlow)<br />
- tensorrt (optimiseur d’inférence NVIDIA)<br />
- horovod (entraînement distribué)<br />
- jax (calcul numérique accéléré)<br />
- tensorflow-io-gcs-filesystem (prise en charge du stockage Google Cloud)
</>
</td>
<td>sessions-interactives/tensorflow-24.02-tf2-py3-calmip-si-latest.sif</td>
</tr>
<tr>
<td><a href="../envpython/scikit-learn">Scikit-learn</a></td>
<td>
<>
- cudf (bibliothèque de DataFrames sur GPU)<br />
- cuml (apprentissage automatique accéléré sur GPU)<br />
- cugraph (analyse de graphes sur GPU)<br />
- cupy (tableaux de type NumPy sur GPU)<br />
- dask-cuda (calcul distribué GPU avec Dask)<br />
- xgboost (boosting de gradient accéléré GPU)
</>
</td>
<td>sessions-interactives/rapids-notebooks-24.02-cuda12.0-py3.10-calmip-si-latest.sif</td>
</tr>
<tr>
<td><a href="../envpython/modulus">Modulus</a></td>
<td>
<>
- nvidia-modulus (framework principal pour la physique basée sur l’IA)<br />
- nvidia-modulus.sym (extensions symboliques pour Modulus)<br />
- onnxruntime-gpu (inférence ONNX sur GPU)<br />
- tinycudann (réseaux de neurones rapides sur CUDA)<br />
- torch (backend PyTorch pour Modulus)<br />
- sympy (mathématiques symboliques)
</>
</td>
<td>sessions-interactives/modulus-24.01-calmip-si-latest.sif</td>
</tr>
<tr>
<td>Triton</td>
<td>
<>
- Basé sur le conteneur PyTorch (tous les packages PyTorch sont inclus)<br />
- Triton (compilateur de noyaux GPU pour l’IA/l’apprentissage automatique)<br />
- Triton utilise LLVM pour générer du code PTX pour les GPU NVIDIA
</>
</td>
<td>sessions-interactives/triton-llvm-3.3.0-calmip-si-latest.sif</td>
</tr>
<tr>
<td>cuquantum_arrayfire</td>
<td>
<>
- Basé sur le conteneur PyTorch (tous les packages PyTorch sont inclus)<br />
- cuquantum-python (cuQuantum de NVIDIA)<br />
- arrayfire (backend GPU/CPU, GPU par défaut sur les nœuds de calcul)<br />
- pytest (framework de test Python)<br />
- pytest-benchmark (mesures de performance)<br />
- mpi4py (interface MPI pour Python)<br />
- petsc (bibliothèque scientifique pour solveurs)<br />
- petsc4py (liaison Python pour PETSc)<br />
- slepc (bibliothèque pour problèmes de valeurs propres)<br />
- primme (solveur PRIMME)<br />
- slepc4py (liaison Python pour SLEPc)<br />
- cupy (NumPy sur GPU)
</>
</td>
<td>calmip/custom_users/cuquantum_arrayfire.sif</td>
</tr>
</tbody>
</table>
2 changes: 1 addition & 1 deletion docs/arch_exp/turpan/logiciels/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,5 @@ Les [environnements python](./envpython/index.md) font l'objet d'une section ent

Si vous avez des dépendances très nombreuses et particulières, vous pouvez utiliser des conteneurs :

* La documentation sur les [conteneur Apptainer (anciennement Singularity)](./apptainer.md)
* La documentation sur les [conteneur Apptainer (anciennement Singularity)](./container/index.md)