2023-05-31: Feuille de route 2022-2023 (3A)¶
Plan¶
Les cours et séances se déroulent sur 6 séances de 3h au second semeste.
Intervenants¶
Xavier Dupré, Matthieu Durut.
Notes¶
Liens, notebooks prévus pour les séances pratiques.
Séance 1¶
hardware
ordinateur
mémoire partagée
ordre de grandeur vitesse CPU, communication
algorithmes répartis
multithread
verrou
Séance 2¶
Séance pratique sur CPU.
Plan : parallélisation avec CPU
Setup SSP Cloud, présentation d’un package, C++
Outils de développement : cmake, git, pull request
Somme des éléments d’une matrice
en ligne, en colonne, notion de cache, std..vector, numpy array, benchmark
Exercice : somme de deux vecteurs
parallélisation d’une multiplication de matrices
applications aux random forest
Instructions pour démarrer
Aller sur la plate-forme SSPCloud de l’ENSAE.
Se connecter avec son adresse ENSAE
Ouvrir une instance vscode-python
Il ensuite exécuter les instuctions suivantes en ligne de commande.
git clone https://github.com/sdpython/teachcompute.git
cd teachcompute
python setup.py build_ext --inplace
Si ça ne marche, installer cmake: conda install cmake
.
Puis :
export PYTHONPATH=<this folder>
python _doc/examples/plot_bench_cpu_vector_sum.py
Séance 3¶
Séance pratique sur Spark.
Présentation de spark, objectif
HDFS, premiers pas avec Spark, java
Notion de spark dataframes
Lien avec SQL, group by, join
Importance de collect
Lecture, écriture
Distribution : Hash et distribution
Notion de skewed datasets
group by + count, group by + mediane
Exercice
On veut calculer pour chaque français le nombre de points de vente alimentaires (~44.000) situé à moins de trois kilomètres du domicile. Comment faire ? On dispose que deux jeux de données :
la géolocalisation des points de vente alimentaires et leur taille
la géolocalisation des français (toutes les adresses connues dans les pages blanches)
notion d’algorithmes de streaming, BJKST, Reservoir Sampling
Séance 4¶
Séance 5¶
CUDA
Les séances pratiques s’appuient sur le package teachcompute.
git clone https://github.com/sdpython/teachcompute.git
cd teachcompute
python setup.py build_ext --inplace
CUDA, threads, blocks, parallélisation
gestion de la mémoire
addition de deux vecteurs
code C++, template, macro
gcc, nvcc
pointeurs
somme des éléments d’un vecteur, réduction
synthreads
GPU / CPU, __inline__, __globals__, <<< >>>
Profiling
device
A100, H100
float32, float16, float8
multiple nvidia on the same machine
torch