Parallel Computing with R and Python
- Enseignant(s)
- Aymeric STAMM, Cédric TEDESCHI
- Type de matière
- STATISTIQUE
- Correspondant
- François PORTIER
- Module
-
UE-MSD04 : Advanced Tools for Data Analysis & Computing
- Nombre d'ECTS
- 2
- Code matière
- MSD 04-2
- Répartition des enseignements
-
Heures de cours : 18
- Langue d'enseignement
- Anglais
Objectifs
– Détecter les parties lentes d’un script en utilisant des outils graphiques pour le profilage du code. Les étudiants seront capables de détecter les parties d’un script où le code devrait être amélioré et où les allocations de mémoire devraient être réduites. rn- Connaître les différentes façons de mettre en œuvre des calculs parallèles.rn- Comprendre l’écosystème Futureverse de paquets, qui est un cadre de parallélisation unifié dans R pour tous, permettant de paralléliser localement ou sur des clusters.rn- Si le temps le permet, apprendre les bases du codage C++ et de son interfaçage dans R, ainsi que la manière de paralléliser du code C++ dans R.rn- Améliorer les performances du code en utilisant le calcul parallèle de l’unité centrale. Les étudiants seront capables d’utiliser les deux méthodes de calcul parallèle (forking et socket).
Plan
Tout d’abord, une introduction au profilage de code est proposée (micro et macro profilage, surveillance de la mémoire). Ensuite, les deux méthodes standard pour les calculs parallèles sur CPU sont présentées (forking et socket).rnrnDans la section R, nous apprendrons comment profiler le code afin d’identifier les parties lentes ou gourmandes en mémoire. Nous apprendrons ensuite quelques astuces pour nous assurer que le code R de base est optimisé avant d’envisager la parallélisation. Ensuite, nous présenterons différentes façons de mettre en œuvre des calculs parallèles dans R, avec leurs avantages et leurs inconvénients. Enfin, nous approfondirons le framework futureverse, qui est un framework unificateur pour le calcul parallèle dans R. Nous apprendrons à travers divers exemples, tels que des simulations, etc. Si le temps le permet, nous montrerons comment implémenter dans R des fonctions qui exécutent du code C++ et comment ce code peut également être facilement parallélisé.rnrnAvec Python, nous passerons d’abord en revue le parallélisme explicite de bas niveau à l’aide de la bibliothèque multiprocessing. Ensuite, nous nous concentrerons sur la bibliothèque Dask qui prend en charge le traitement parallèle basé sur le CPU de grandes collections de données telles que des tableaux ou des fichiers CSV.
Prérequis
Connaissance de R et Python