3A - Projets informatiques#

Travail attendu#

Le projet a pour objectif l’implémentation d’un algorithme réparti, soit en utilisant le calcul sur GPU, soit via Map/Reduce, soit en implémentant vous-même la répartition des calculs sur plusieurs machines (virtuelles) via des primitives telles que MPI ou des Key-Value Pair Storages. Les technologies proposées sont donc :

  • GPU : CUDA et C, ou CUDA et python via pyCUDA

  • n’importe quelle technologie sur CPU, une option proposée est un projet utilisant ;epkg:python, cython et openmp. Les projet td3a_cpp ou td3a_cpp_deep peuvent être utilisés comme point de départ.

Vous êtes libres de traiter l’algorithme de votre choix avec la technologie de votre choix avec la contrainte que l’algorithme implémenté soit distribué par votre implémentation et non par la librairie que vous utilisez. Nous vous en proposons certains dans les articles ci-dessous.

A souligner dans le rapport et le code

  • GPU : indiquer les parties parallélisées, les frontières entre CPU et GPU, une estimation du coût de l’algorithme CPU / GPU / nombre de verrous.

  • Calcul distribué : indiquer les parties parallélisées, les variables partagées, si cela est fait via un thread ou un processus, une estimation du coût de l’algorithme communication / CPU / nombre de verrous.

Suggestions d’articles#

Articles ou sujet que vous ne pouvez plus choisir

2014-2015

2015-2016

2016-2017

2017-2018

2018-2019

2019-2020

2020-2021

Nous vous recommandons d’adopter la démarche suivante:

  1. implémentation et débugging sur un petit jeu de données synthétiques où les choses sont sensées bien se passer et la taille du jeu de données rend le debugging plus rapide,

  2. application à un vrai jeu de données que vous aurez sélectionné sur un des sites suivants, DGML, Stanford Large Network Dataset Collection, UCI Machine Learning Repository ou autre (voir Source de données), cette approche est aussi valable que de générer des jeux de données articielles de tailles différentes.

Le site Kaggle (2) référence de nombreuses compétitions intéressantes. Toutefois, avant d’utiliser les données Kaggle, je vous encourage à lire les articles Date use for teaching after competition concludes et Using a Kaggle contest as a term project. Les règles peuvent varier d’un projet à l’autre, prenez soin de les lire avant de choisir un projet car on ne peut pas tout faire avec les données disponibles sur ce site.

Code de survie#