Skip to content

PyKeOps/fr

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.

avail_wheels pykeops

Le résultat est le suivant :

name     version    python    arch
-------  ---------  --------  -------
pykeops  2.2.3      py3       generic

Installation dans un environnement virtuel Python

  1. Chargez les dépendances.

    module load StdEnv/2023 python/3.11
    
  2. Créez et activez un environnement virtuel Python.

    virtualenv --no-download ~/pykeops_env
    source ~/pykeops_env/bin/activate
    
  3. Installez une version de PyKeOps avec ses dépendances Python.

    # (pykeops_env) [nom@serveur ~]$
    pip install --no-index --upgrade pip
    pip install --no-index pykeops==X.Y.Z
    

    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.

    # (pykeops_env) [nom@serveur ~]$
    python -c 'import pykeops; pykeops.test_numpy_bindings()'
    
  5. Gelez l'environnement et l'ensemble des exigences.

    # (pykeops_env) [nom@serveur ~]$
    pip freeze --local > ~/pykeops-2.2.3-requirements.txt
    
  6. Supprimez l'environnement virtuel local.

    # (pykeops_env) [nom@serveur ~]$
    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.

    === "CPU"
    ```bash title="submit-pykeops-cpu.sh"
    #!/bin/bash
    
    #SBATCH --account=def-someprof    # ajustez ce paramètre pour qu'il corresponde au groupe comptable que vous utilisez pour soumettre des tâches
    #SBATCH --time=08:00:00           # ajustez ce paramètre pour qu'il corresponde au temps d'exécution de votre tâche
    #SBATCH --cpus-per-task=4         # ajustez ce paramètre pour qu'il corresponde au nombre de cœurs à utiliser
    #SBATCH --mem-per-cpu=4G          # ajustez ce paramètre en fonction de la mémoire dont vous avez besoin par cœur
    
    # Chargement des dépendances des modules.
    module load StdEnv/2023 python/3.11
    
    # Créez l'environnement virtuel sur le nœud de calcul :
    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
    
    # Vérifiez que tout est en ordre
    python -c 'import pykeops; pykeops.test_numpy_bindings()'
    

    submit-pykeops-gpu.sh
    #!/bin/bash
    
    #SBATCH --account=def-someprof    # ajustez ce paramètre pour qu'il corresponde au groupe comptable que vous utilisez pour soumettre des tâches
    #SBATCH --time=08:00:00           # ajustez ce paramètre pour qu'il corresponde au temps d'exécution de votre tâche
    #SBATCH --cpus-per-task=4         # ajustez ce paramètre pour qu'il corresponde au nombre de cœurs à utiliser
    #SBATCH --mem-per-cpu=4G          # ajustez ce paramètre en fonction de la mémoire dont vous avez besoin par cœur
    #SBATCH --gpus=1
    
    # Chargement des dépendances des modules. Le module custom-ctypes est essentiel ici.
    module load StdEnv/2023 python/3.11 cuda/12 custom-ctypes
    
    # Créez l'environnement virtuel sur le nœud de calcul :
    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
    
    # Vérifiez que les liaisons nvrtc sont également trouvées
    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.

    ```bash sbatch submit-keops.sh