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
Python : setup.py, sphinx, pybind11, cython
Somme des éléments d’une matrice
en ligne, en colonne, notion de cache, std::vector, numpy array, benchmark
éléments de C++, pybind11, cython
AVX
parallélisation avec des threads, processus
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/onnx-extended.git
cd onnx-extended
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 : 2A.algo - 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 onnx-extended.
git clone https://github.com/sdpython/onnx-extended.git
cd onnx-extended
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