Python - calcul parallèle



Objectifs, programme, validation de la formation

Objectifs

Comprendre le paradigme de la programmation parallèle
Identifier les goulots d’étranglement et les parties parallélisables de votre programme
Avoir une bonne compréhension du paysage des librairies de calcul parallèle disponibles pour Python
Savoir développer des applications parallélisées (multithreading, multiprocessing, calcul distribué, cloud computing)
Exécuter des calculs sur GPU (cartes graphiques)
Créer des workflows de traitement de données

Description, programmation

  • Etat de l’art de la discipline et concepts de base
    Historique des supercalculateurs
    Comprendre les différentes architectures disponibles pour le calcul parallèle (CPU, GPU, TPU, ASIC, FPGA, NUMA... )
    Tout n’est pas parallélisable : comprendre les limites de la programmation parallèle
    Présentation du paysage de calcul parallèle avec Python

Travaux pratiques
Identifier les capacités matérielles de votre ordinateur. Mesurer les performances/limites de votre configuration (disques, mémoire, processeurs, ...).
Configurer son environnement de calcul parallèle.
Administrer une ferme de serveurs avec ansible

  • Les concepts de la programmation parallèle
    Comprendre la terminologie : programmation asynchrone, concurrente, distribuée, multithreading, multiprocessing, ...
    Multithreading : paralléliser le code de votre programme - mise en oeuvre des concepts de base
    Comprendre les limites du multithreading en Python
    Multiprocessing : paralléliser votre programme sur plusieurs processeurs et mécanismes de synchronisation (verrous, sémaphores, barrières, pools de process...)

Travaux pratiques
Application des concepts de base aux travers d’exercices pratiques.
Mesurer les différences de performances entre les librairies multithreading et multiprocessing.
Premier cluster de calcul distribué avec les Managers et Proxy.

  • Le calcul sur GPU
    Un GPU ne se programme pas comme un CPU.
    Comprendre les architectures GPU : kernels, mémoire, threads, ...
    Travailler avec des cartes graphiques externes (eGPU)
    Mise en oeuvre des principales librairies Python pour GPU : Cupy, PyCUDA, Numba et RapidsAI

Travaux pratiques
Identifier quand un GPU devient plus intéressant qu’un CPU.
Traitement d’images, calcul matriciel, tester la fiabilité d’un mot de passe, ...

  • Calcul distribué
    Les principales librairies : Celery, Dask et PySpark
    Déployer et superviser un cluster de calcul parallèle avec chacune des librairies
    Exécuter des calculs sur un cluster

Travaux pratiques
Batch de tâches avec Celery.
Calcul numérique et analyse de données avec Dask (array et dataframe)
Analyse de données avec les DataFrames Spark et la librairie Koalas.

  • Créer un pipeline de traitement de données
    Présentation des librairies Luigi et Airflow
    Concevoir et superviser son workflow

Travaux pratiques
Réaliser un workflow sur un ensemble de fichiers volumineux et le superviser avec Airflow.

  • Tour d’horizon des autres librairies Python pour le calcul parallèle
    La compilation Just In Time avec Numba
    Greenlets : vers un meilleur multithreading
    MPI4Py : Message Passing Interface
    Pythran : Le transpileur qui convertit votre code Python en C++

Travaux pratiques
Exercices de base illustrant les principes de chacune des librairies

Validation et sanction

Attestation d’acquis ou de compétences ;Attestation de suivi de présence

Type de formation

Perfectionnement, élargissement des compétences

Niveau de sortie sans niveau spécifique

Métiers visés

M1805 :


Durée, rythme, financement

Durée 35 heures en centre
Durée indicative : 4 jours

Modalités de l'alternance Cours du jour : 35 h

Conventionnement Non

Conditions d'accès

Niveau d'entrée sans niveau spécifique

Conditions spécifiques et prérequis Pour suivre ce stage dans de bonnes conditions, il est recommandé d'avoir suivi en amont la formation Python - Bases et introduction aux librairies scientifiques

Inscription

Contact renseignement M. Cédric CALAS

Téléphone 01 76 54 39 16


Périodes prévisibles de déroulement des sessions

Session débutant le : 14/12/2021

Adresse d'inscription
41 Rue de la Découverte
CS 37621 31670 Labège

Lieu de formation


Organisme de formation responsable