__FORCETOC__
La bibliothèque [https://www.kernel-operations.io/keops/index.html 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/fr|Python]] ([https://numpy.org/doc/stable/ NumPy], [[PyTorch/fr|PyTorch]]), [[MATLAB/fr|MATLAB]] et [[R/fr|R]].
= Versions disponibles =
Les versions disponibles sur nos grappes sont des wheels Python. Voyez la liste en lançant avail_wheels
.
{{Command
|avail_wheels pykeops
|result=
name version python arch
------- --------- -------- -------
pykeops 2.2.3 py3 generic
}}
= Installation dans un environnement virtuel Python =
1. Chargez les dépendances.
{{Command|module load StdEnv/2023 python/3.11}}
2. Créez et activez un [[Python/fr#Créer_et_utiliser_un_environnement_virtuel | environnement virtuel Python]].
{{Commands
|virtualenv --no-download ~/pykeops_env
|source ~/pykeops_env/bin/activate
}}
3. Installez une version de PyKeOps avec ses dépendances Python.
{{Commands
|prompt=(pykeops_env) [name@server ~]
|pip install --no-index --upgrade pip
|pip install --no-index pykeops{{=}}{{=}}X.Y.Z
}}
où X.Y.Z
est le numéro de la version, par exemple 2.2.3
.
Pour installer la plus récente version, n'entrez pas de numéro.
4. Validez.
{{Commands
|prompt=(pykeops_env) [name@server ~]
|python -c 'import pykeops; pykeops.test_numpy_bindings()'
}}
5. Gelez l'environnement et l'ensemble des exigences.
{{Command
|prompt=(pykeops_env) [name@server ~]
|pip freeze --local > ~/pykeops-2.2.3-requirements.txt
}}
6. Supprimez l'environnement virtuel local.
{{Command
|prompt=(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
|name=submit-pykeops-cpu.sh
|lang="bash"
|contents=
#!/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
|name=submit-pykeops-gpu.sh
|lang="bash"
|contents=
#!/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 [[Running_jobs/fr#Tâches_interactives|tâche interactive]].
3. Soumettez la tâche à l'ordonnanceur.
{{Command
|sbatch submit-keops.sh
}}