Dedalus/fr: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
(Created page with "1. Préparez le script. <tabs> <tab name="Mode distribué"> {{File |name=submit-dedalus-distributed.sh |lang="bash" |contents= #!/bin/bash")
No edit summary
Tag: Manual revert
 
(16 intermediate revisions by 2 users not shown)
Line 3: Line 3:
__FORCETOC__
__FORCETOC__


[https://dedalus-project.org/ Dedalus] est un cadre flexible pour résoudre des équations aux dérivées partielles à l'aide de méthodes spectrales modernes.
[https://dedalus-project.org/ Dedalus] est un environnement de développement flexible pour résoudre des équations aux dérivées partielles à l'aide de méthodes spectrales modernes.


= Versions disponibles =
= Versions disponibles =
Sur nos grappes, les versions de Dedalus sobnt des <i>wheels</i> Python. Pour connaître les versions disponibles, lancez <code>avail_wheels</code>.
Sur nos grappes, les versions de Dedalus sont des <i>wheels</i> Python. Pour connaître les versions disponibles, exécutez <code>avail_wheels</code>.
{{Command
{{Command
|avail_wheels dedalus --all-versions
|avail_wheels dedalus
|result=
|result=
$ avail_wheels dedalus
name    version    python    arch
name    version    python    arch
-------  ---------  --------  ---------
-------  ---------  --------  ---------
Line 18: Line 17:


= Installation dans un environnement virtuel Python =
= Installation dans un environnement virtuel Python =
1. Chargez les dépendances d'exécution pour Dedalus.
1. Chargez les modules requis pour exécuter Dedalus.
{{Command|module load StdEnv/2023 gcc openmpi mpi4py/3.1.4 fftw-mpi/3.3.10 hdf5-mpi/1.14.2 python/3.11}}
{{Command|module load StdEnv/2023 gcc openmpi mpi4py/3.1.4 fftw-mpi/3.3.10 hdf5-mpi/1.14.2 python/3.11}}


Line 42: Line 41:
}}
}}


5. Gelez l'environnement et les éléments requis.
5. Gelez l'environnement et les dépendances requises.
{{Command
{{Command
|prompt=(dedalus_env) [name@server ~]
|prompt=(dedalus_env) [name@server ~]
Line 55: Line 54:


= Exécution =
= Exécution =
You can run dedalus distributed accross multiple nodes or cores.  
Dedalus peut être exécuté en mode distribué sur plusieurs nœuds ou cœurs.
For efficient MPI scheduling, please see:
Pour plus d'information, voir
* [[Running jobs/fr#Tâche_MPI|Tâche MPI]]
* [[Running jobs/fr#Tâche_MPI|Tâche MPI]]
* [[Advanced MPI scheduling/fr|Contrôle de l'ordonnancement avec MPI]]
* [[Advanced MPI scheduling/fr|Contrôle de l'ordonnancement avec MPI]]
Line 74: Line 73:
#SBATCH --mem-per-cpu=4G          # adjust this according to the memory you need per process
#SBATCH --mem-per-cpu=4G          # adjust this according to the memory you need per process


<div lang="en" dir="ltr" class="mw-content-ltr">
# Run on cores accross the system : https://docs.alliancecan.ca/wiki/Advanced_MPI_scheduling#Few_cores,_any_number_of_nodes
# Run on cores accross the system : https://docs.alliancecan.ca/wiki/Advanced_MPI_scheduling#Few_cores,_any_number_of_nodes
</div>


# Load modules dependencies.
# Load modules dependencies.
Line 90: Line 87:
EOF
EOF


<div lang="en" dir="ltr" class="mw-content-ltr">
# activate only on main node
# activate only on main node
source $SLURM_TMPDIR/env/bin/activate;
source $SLURM_TMPDIR/env/bin/activate;
</div>


export OMP_NUM_THREADS=1
export OMP_NUM_THREADS=1
Line 102: Line 97:
</tab>
</tab>


<div lang="en" dir="ltr" class="mw-content-ltr">
<tab name="Nœud entier">
<tab name="Whole nodes">
{{File
{{File
|name=submit-dedalus-whole-nodes.sh
|name=submit-dedalus-whole-nodes.sh
Line 109: Line 103:
|contents=
|contents=
#!/bin/bash
#!/bin/bash
</div>


#SBATCH --account=def-someprof    # adjust this to match the accounting group you are using to submit jobs
#SBATCH --account=def-someprof    # adjust this to match the accounting group you are using to submit jobs
Line 134: Line 127:
source $SLURM_TMPDIR/env/bin/activate;
source $SLURM_TMPDIR/env/bin/activate;


<div lang="en" dir="ltr" class="mw-content-ltr">
export OMP_NUM_THREADS=1
export OMP_NUM_THREADS=1
</div>


# srun exports the current env, which contains $VIRTUAL_ENV and $PATH variables
# srun exports the current env, which contains $VIRTUAL_ENV and $PATH variables
Line 144: Line 135:
</tabs>
</tabs>


2. Soumettez la tâche à l'ordonnaceur.
2. Soumettez la tâche à l'ordonnanceur.


<div lang="en" dir="ltr" class="mw-content-ltr">
Avant de soumettre la tâche, il est important de tester le script pour des erreurs possibles. Faites un test rapide avec une [[Running_jobs/fr#Tâches_interactives|tâche interactive]].
Before submitting your job, it is important to test that your submission script will start without errors.
You can do a quick test in an [[Running_jobs#Interactive_jobs|interactive job]].
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
{{Command
{{Command
|sbatch submit-dedalus.sh
|sbatch submit-dedalus.sh
}}
}}
</div>

Latest revision as of 17:26, 30 September 2024

Other languages:


Dedalus est un environnement de développement flexible 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.

Question.png
[name@server ~]$ 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.

Question.png
[name@server ~]$ module load StdEnv/2023 gcc openmpi mpi4py/3.1.4 fftw-mpi/3.3.10 hdf5-mpi/1.14.2 python/3.11

2. Créez et activez un environnement virtuel Python.

[name@server ~]$ virtualenv --no-download ~/dedalus_env
[name@server ~]$ source ~/dedalus_env/bin/activate


3. Installez une version de Dedalus et ses dépendances Python.

(dedalus_env) [name@server ~] pip install --no-index --upgrade pip
(dedalus_env) [name@server ~] 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 plus récente version sera installée.

4. Validez.

Question.png
(dedalus_env) [name@server ~] python -c 'import dedalus'

5. Gelez l'environnement et les dépendances requises.

Question.png
(dedalus_env) [name@server ~] pip freeze --local > ~/dedalus-3.0.2-requirements.txt

6. Supprimez l'environnement virtuel local.

Question.png
(dedalus_env) [name@server ~] 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, voir

1. Préparez le script.

File : submit-dedalus-distributed.sh

#!/bin/bash

#SBATCH --account=def-someprof    # adjust this to match the accounting group you are using to submit jobs
#SBATCH --time=08:00:00           # adjust this to match the walltime of your job
#SBATCH --ntasks=4                # adjust this to match the number of tasks/processes to run
#SBATCH --mem-per-cpu=4G          # adjust this according to the memory you need per process

# Run on cores accross the system : https://docs.alliancecan.ca/wiki/Advanced_MPI_scheduling#Few_cores,_any_number_of_nodes

# Load modules dependencies.
module load StdEnv/2023 gcc openmpi mpi4py/3.1.4 fftw-mpi/3.3.10 hdf5-mpi/1.14.2 python/3.11

# create the virtual environment on each allocated node: 
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

# activate only on main node
source $SLURM_TMPDIR/env/bin/activate;

export OMP_NUM_THREADS=1

# srun exports the current env, which contains $VIRTUAL_ENV and $PATH variables
srun python $SCRATCH/myscript.py;


File : submit-dedalus-whole-nodes.sh

#!/bin/bash

#SBATCH --account=def-someprof    # adjust this to match the accounting group you are using to submit jobs
#SBATCH --time=08:00:00           # adjust this to match the walltime of your job
#SBATCH --nodes=2                 # adjust this to match the number of whole node
#SBATCH --ntasks-per-node=4       # adjust this to match the number of tasks/processes to run per node
#SBATCH --mem-per-cpu=4G          # adjust this according to the memory you need per process

# Run on N whole nodes : https://docs.alliancecan.ca/wiki/Advanced_MPI_scheduling#Whole_nodes

# Load modules dependencies.
module load StdEnv/2023 gcc openmpi mpi4py/3.1.4 fftw-mpi/3.3.10 hdf5-mpi/1.14.2 python/3.11

# create the virtual environment on each allocated node: 
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

# activate only on main node
source $SLURM_TMPDIR/env/bin/activate;

export OMP_NUM_THREADS=1

# srun exports the current env, which contains $VIRTUAL_ENV and $PATH variables
srun python $SCRATCH/myscript.py;


2. Soumettez la tâche à l'ordonnanceur.

Avant de soumettre la tâche, il est important de tester le script pour des erreurs possibles. Faites un test rapide avec une tâche interactive.

Question.png
[name@server ~]$ sbatch submit-dedalus.sh