Le parallélisme et son écosystème Python
- Les différentes formes du parallélisme et ses architectures (CPU, GPU, ASIC, FPGA, NUMA, OpenMP, MPI... ).
- Contraintes et limites.
- L’écosystème de calcul parallèle pour Python.
Travaux pratiques
Profiling d’un programme (cProfile, Kcachegrind et pyprof2calltree). Compiler un programme C avec les instructions SIMD. Bien installer Numpy : comment obtenir un gain de vitesse x40.
Les bases : programmation asynchrone, multithreading et multiprocessing
- Programmation asynchrone : générateurs et asyncio.
- Multithreading : accès concurrents, verrous…
- Limites du multithreading en Python.
- Multiprocessing : mémoire partagée, pools de process, conditions...
- Premier cluster de calcul distribué avec les Managers et Proxy.
Travaux pratiques
Réalisation d'une même chaîne de traitement de données avec chaque modèle et d’un cluster de calcul distribué entre les machines des participants.
Calcul distribué : Celery, Dask et PySpark
- Concepts et configuration.
- Mise en œuvre de chaque librairie.
Travaux pratiques
Plusieurs exercices seront abordés (calcul matriciel, traitement d’image/texte, Bitcoin, Machine Learning...). Utilisation des notebooks Zeppelin.
Calculer sur GPU
- Les architectures GPU : kernels, mémoire, threads...
- Les librairies OpenCL et CUDA.
- Mise en œuvre des librairies Scikit-cuda, PyCUDA et Numba.
Travaux pratiques
Calcul matriciel et traitement d’images. Machine Learning avec la librairie mxnet : Neural Art. Compilation Just In Time.
Autres librairies de programmation parallèle
- Message Passing Interface avec MPI4py.
- PyOpenCL : implémenter un code avec des systèmes hétérogènes.
- Joblib : Les pipelines légers.
- Greenlets : vers un meilleur multithreading.
- Pythran : Compiler vos programmes Python sur architectures multicœurs et vectorisées.
Travaux pratiques
Exercices de base avec chaque librairie.
Créer des workflows de tâches
- Les primitives disponibles avec Celery, Dask et PySpark.
- Créer et superviser des workflows avec les librairies Luigi et Airflow.
Travaux pratiques
Création de pipelines de traitements de données avec chaque librairie.
Exécuter des calculs dans le Cloud
- Panorama de l’offre Internet pour le Cloud.
- Administrer un cluster avec Ansible.
Travaux pratiques
Effectuer des calculs dans le Cloud.