PyKeOps/fr: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
No edit summary
No edit summary
Line 18: Line 18:




2. Créez et activez un environnement virtuel Python.
2. Créez et activez un [[Python#Creating_and_using_a_virtual_environment | Python virtual environment]].
{{Commands
{{Commands
|virtualenv --no-download ~/pykeops_env
|virtualenv --no-download ~/pykeops_env

Revision as of 18:54, 30 September 2024

Other languages:

La bibliothèque KeOps permet de calculer des réductions de tableaux de grande taille dont les entrées sont des formules mathématiques ou des réseaux de neurones. Elle combine des routines C++ efficaces avec un moteur de différentiation automatique et peut être utilisée avec Python (NumPy, PyTorch), MATLAB et R.

Versions disponibles

Les versions disponibles sur nos grappes sont des wheels Python. Voyez la liste en lançant avail_wheels.

Question.png
[name@server ~]$ avail_wheels pykeops
name     version    python    arch
-------  ---------  --------  -------
pykeops  2.2.3      py3       generic

Installation dans un environnement virtuel Python

1. Chargez les dépendances.

Question.png
[name@server ~]$ module load StdEnv/2023 python/3.11


2. Créez et activez un Python virtual environment.

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


3. Installez une version de PyKeOps avec ses dépendances Python.

(pykeops_env) [name@server ~] pip install --no-index --upgrade pip
(pykeops_env) [name@server ~] pip install --no-index pykeops==X.Y.Z

where X.Y.Z is the exact desired version, for instance 2.2.3. You can omit to specify the version in order to install the latest one available from the wheelhouse.


4. Validez.

(pykeops_env) [name@server ~] python -c 'import pykeops; pykeops.test_numpy_bindings()'


5. Gelez l'environnement et l'ensemble des exigences.

Question.png
(pykeops_env) [name@server ~] pip freeze --local > ~/pykeops-2.2.3-requirements.txt


6. Supprimez l'environnemnent virtuel local.

Question.png
(pykeops_env) [name@server ~] deactivate && rm -r ~/pykeops_env

Exécution

Vous pouvez exécuter PyKeOps sur un CPU ou un GPU.

1. Préparez votre script d'exécution.

File : submit-pykeops-cpu.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 --cpus-per-task=4         # adjust this to match the number of cores to use
#SBATCH --mem-per-cpu=4G          # adjust this according to the memory you need per cpu

# Load modules dependencies.
module load StdEnv/2023 python/3.11

# create the virtual environment on the compute node: 
virtualenv --no-download $SLURM_TMPDIR/env
source $SLURM_TMPDIR/env/bin/activate

pip install --no-index --upgrade pip
pip install --no-index -r pykeops-2.2.3-requirements.txt

# test that everything is OK
python -c 'import pykeops; pykeops.test_numpy_bindings()'


File : submit-pykeops-gpu.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 --cpus-per-task=4         # adjust this to match the number of cores to use
#SBATCH --mem-per-cpu=4G          # adjust this according to the memory you need per cpu
#SBATCH --gpus=1

# Load modules dependencies. The custom-ctypes is critical here.
module load StdEnv/2023 python/3.11 cuda/12 custom-ctypes

# create the virtual environment on the compute node: 
virtualenv --no-download $SLURM_TMPDIR/env
source $SLURM_TMPDIR/env/bin/activate

pip install --no-index --upgrade pip
pip install --no-index -r pykeops-2.2.3-requirements.txt

# test that nvrtc binding are also found
python -c 'import pykeops; pykeops.test_numpy_bindings()'


2. Pour savoir si votre script contient des erreurs, testez-le avec une tâche interactive.

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

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