Feuille de route 2022-2023 (3A)#

Page principale du cours

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

  • Setup SSP Cloud, présentation d’un package, C++

  • Outils de développement : cmake, git, pull request

  • Python : setup.py, sphinx, pybind11, cython

  • style : black, ruff

  • 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

  • parquet

  • Lien avec SQL, group by, join

  • Importance de collect

  • Spark SQL

  • Lecture, écriture

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

  • DLPack

  • device

  • A100, H100

  • float32, float16, float8

  • multiple nvidia on the same machine

Séance 6#