2025-05-31: Feuille de route 2024-2025 (3A)¶
Main Web Site : https://sdpython.github.io/
Plan¶
Les cours et séances se déroulent sur 4 séances de 3h au second semestre.
Evaluation¶
Utilisation de vos compétences statistiques pour fabriquer un benchmark adaptatif où l’on trouve la meilleure option de parallélisation pour un algorithme parallélisé avec moins d’essais qu’une grille.
Séance 1 - 9/04: pararalléliser comment?¶
Part 1
stratégies de parallélisation (big data, deep learning, calcul matriciel…)
coût, calcul, communication, caches
CPU vs GPU
conflits, synchronisation, mutex
L1: 32 Ko, 3/4 Go/s, 1/2 cycles d’horloge, L2: 1Mo, 20 Go/s, 3/5 cycles d’horloge, L3: 8Mo, 40 Go/s, 10/20 cycles d’horloge
thread / process
branching
cas du produit vectoriel
produit matriciel
Part 2
Environnement
Séance 2 - 16/04: python, pybind11, cython¶
voir _tutoriels et tutorials.yml
Séance 3 - 23/04: alorithmes parallélisés¶
Partie 1
Ecriture d’un benchmark.
Comparaison d’une multiplication de matrice sparse et dense, évolution en fonction du nombre des dimensions, du taux de « sparsité ».
Vaut-il mieux calculer (XA, XB) séparément ou X(A,B) où (A,B) désigne une matrice où A et B sont concaténées selon les colonnes.
AB est-il plus ou moins rapide que AB” si les matrices sont carrées ?
Profiling
Lecture de benchmark.
écrire un programme pour plusieurs processeurs
CI, intégration continue
Pour aller plus loin
Partie 2
HOGWILD !: A Lock-Free Approach to Parallelizing Stochastic Gradient Descent
problème de convergence
quantization
réseau de neurones
parallélisation mémoire contrainte ou presque
A quantum-inspired classical algorithm for recommendation systems
utilisation de plusieurs processeurs, CPUs, GPUs…, NPU, intel-npu
qui fait quoi ? data scientist, développeur
Séance 4 - 30/04: fusion d’opérations et projets¶
Benchmark à partir de cython_mat
Profiling
fusion d’opérations : cas de l”attention:
avec
,
,
et :
Utilisation de vos compétences statistiques pour fabriquer un benchmark adaptatif où l’on trouve la meilleure option de parallélisation pour un algorithme parallélisé avec moins d’essais qu’une grille.
Sujets connexes¶
hacking (attaque), Spectre, Meltdown
https://fr.wikipedia.org/wiki/DO-178, PowerPC, RISC
Un tri ?
Le calcul de la médiane ? (BJKST) Propriétés statistiques ?
Pourquoi est-ce si difficile de paralléliser un tri ?
scatter_nd, Que faire quand les indices sont dupliqués ?
Paralléliser une forêt aléatoire sur CPU, sur GPU ?
La recherche de doublons dans une liste de coordonnées géographiques (longitude, latitude) ?
An Efficient Matrix Transpose in CUDA C/C++, notion de Bank Conflicts (voir CUDA C++ Programming Guide) CUDA, Cartes graphiques, Warp…
Installation de ce module¶
Il ensuite exécuter les instuctions suivantes en ligne de commande.
git clone https://github.com/sdpython/teachcompute.git
cd teachcompute
pip install -e . -v --no-build-isolation
Si ça ne marche, installer cmake. Puis :
export PYTHONPATH=<this folder>
python _doc/examples/plot_bench_cpu_vector_sum.py
Lectures¶
Collège de France
Algorithmes quantiques : quand la physique quantique défie la thèse de Church-Turing
Génération de données en IA par transport et débruitage (1) pour comprendre ce que sont les LLMs
Points particuliers¶
Livres¶
Autres¶
AlphaFold (Prix Nodel) Prix Nobel de chimie 2024 : quand l’IA permet de comprendre la structure des protéines
A quantum-inspired classical algorithm for recommendation systems
The Fusion of Large Language Models and Formal Methods for Trustworthy AI Agents: A Roadmap
GraphCast: AI model for faster and more accurate global weather forecasting