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

Séance 2

Séance pratique sur CPU.

Plan : parallélisation avec CPU

  • Exercice : somme de deux vecteurs

  • parallélisation d’une multiplication de matrices

  • applications aux random forest

Instructions pour démarrer

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

  • parquet

  • Lien avec SQL, group by, join

  • Importance de collect

  • Spark SQL

  • 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)

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

  • DLPack

  • device

  • A100, H100

  • float32, float16, float8

  • multiple nvidia on the same machine

  • torch

Séance 6