Skip to content

Dedalus/fr

Dedalus est un environnement de développement polyvalent pour résoudre des équations aux dérivées partielles à l'aide de méthodes spectrales modernes.

Versions disponibles

Sur nos grappes, les versions de Dedalus sont des wheels Python. Pour connaître les versions disponibles, exécutez avail_wheels.

avail_wheels dedalus
name     version    python    arch
-------  ---------  --------  ---------
dedalus  3.0.2      cp311     x86-64-v3
dedalus  3.0.2      cp310     x86-64-v3

Installation dans un environnement virtuel Python

  1. Chargez les modules requis pour exécuter Dedalus.
module load StdEnv/2023 gcc openmpi mpi4py/3.1.4 fftw-mpi/3.3.10 hdf5-mpi/1.14.2 python/3.11
  1. Créez et activez un environnement virtuel Python.
virtualenv --no-download ~/dedalus_env
source ~/dedalus_env/bin/activate
  1. Installez une version de Dedalus et ses dépendances Python.

(dedalus_env) $ pip install --no-index --upgrade pip
(dedalus_env) $ pip install --no-index dedalus==X.Y.Z
X.Y.Z est la version choisie (par exemple 3.0.2). Si aucun numéro n'est indiqué, la version la plus récente sera installée.

  1. Validez l'installation.
(dedalus_env) $ python -c 'import dedalus'
  1. Geler l'environnement et les dépendances requises.
(dedalus_env) $ pip freeze --local > ~/dedalus-3.0.2-requirements.txt
  1. Supprimez l'environnement virtuel local.
(dedalus_env) $ deactivate && rm -r ~/dedalus_env

Exécution

Dedalus peut être exécuté en mode distribué sur plusieurs nœuds ou cœurs. Pour plus d'information, consultez : * Tâche MPI * Contrôle de l'ordonnancement avec MPI

  1. Préparez le script.
submit-dedalus-distributed.sh
#!/bin/bash

#SBATCH --account=def-someprof    # ajustez ceci à votre groupe de comptabilité
#SBATCH --time=08:00:00           # ajustez ceci à la durée d'exécution souhaitée
#SBATCH --ntasks=4                # ajustez ceci au nombre de tâches/processus à exécuter
#SBATCH --mem-per-cpu=4G          # ajustez ceci à la mémoire requise par processus

# Exécution sur des cœurs répartis dans le système : https://docs.alliancecan.ca/wiki/Advanced_MPI_scheduling#Few_cores,_any_number_of_nodes

# Charge les modules nécessaires.
module load StdEnv/2023 gcc openmpi mpi4py/3.1.4 fftw-mpi/3.3.10 hdf5-mpi/1.14.2 python/3.11

# Crée l'environnement virtuel sur chaque nœud alloué :
srun --ntasks $SLURM_NNODES --tasks-per-node=1 bash << EOF
virtualenv --no-download $SLURM_TMPDIR/env
source $SLURM_TMPDIR/env/bin/activate

pip install --no-index --upgrade pip
pip install --no-index -r dedalus-3.0.2-requirements.txt
EOF

# Active uniquement sur le nœud principal
source $SLURM_TMPDIR/env/bin/activate;

export OMP_NUM_THREADS=1

# srun exporte l'environnement actuel, qui contient les variables $VIRTUAL_ENV et $PATH
srun python $SCRATCH/myscript.py;
submit-dedalus-whole-nodes.sh
#!/bin/bash

#SBATCH --account=def-someprof    # ajustez ceci à votre groupe de comptabilité
#SBATCH --time=08:00:00           # ajustez ceci à la durée d'exécution souhaitée
#SBATCH --nodes=2                 # ajustez ceci au nombre de nœuds entiers
#SBATCH --ntasks-per-node=4       # ajustez ceci au nombre de tâches/processus à exécuter par nœud
#SBATCH --mem-per-cpu=4G          # ajustez ceci à la mémoire requise par processus

# Exécution sur N nœuds entiers : https://docs.alliancecan.ca/wiki/Advanced_MPI_scheduling#Whole_nodes

# Charge les modules nécessaires.
module load StdEnv/2023 gcc openmpi mpi4py/3.1.4 fftw-mpi/3.3.10 hdf5-mpi/1.14.2 python/3.11

# Crée l'environnement virtuel sur chaque nœud alloué :
srun --ntasks $SLURM_NNODES --tasks-per-node=1 bash << EOF
virtualenv --no-download $SLURM_TMPDIR/env
source $SLURM_TMPDIR/env/bin/activate

pip install --no-index --upgrade pip
pip install --no-index -r dedalus-3.0.2-requirements.txt
EOF

# Active uniquement sur le nœud principal
source $SLURM_TMPDIR/env/bin/activate;

export OMP_NUM_THREADS=1

# srun exporte l'environnement actuel, qui contient les variables $VIRTUAL_ENV et $PATH
srun python $SCRATCH/myscript.py;
  1. Soumettez la tâche à l'ordonnanceur.

Note

Avant de soumettre la tâche, il est important de tester le script pour détecter d'éventuelles erreurs. Faites un test rapide avec une tâche interactive.

```bash sbatch submit-dedalus.sh