![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() ![]() |
|
Conception d'algorithmes parallèles pour architectures manycoreEquipe d’accueil : Alsoc, département SoCDurée du stage : 6 moisContexte architecturalAujourd'hui, la quasi-totalité des processeurs produits sont multi-cœurs. Depuis l'arrêt de l'augmentation de la fréquence des processeurs, le seul moyen d'augmenter leur puissance de calcul est d'augmenter leur parallélisme interne en concevant des processeurs multi-cœurs avec des extensions SIMD. Demain pour cette même raison, les processeurs seront manycore avec des registres SIMD encore plus larges. Contexte algorithmiqueParalléliser des algorithmes sur de tels processeurs est nécessaire pour exécuter en temps réel des applications complètes afin d'avoir des systèmes en interaction avec le monde extérieur. Les algorithmes d'étiquetage en composantes connexes sont des algorithmes qui consistent à associer à chaque groupe de pixels connexes un numéro unique, l'étiquette de leur composante connexe. Ces algorithmes sont représentatifs de toute une classe d'algorithmes en traitement d'images et servent dans de nombreuses applications comme la détection de mouvement, la reconnaissance de caractères, et l'imagerie médicale. L'expertise acquise lors de leur conception serviront à faire progresser les connaissances de cette classe d'algorithmes et aideront à en concevoir d'autres. Objectifs du stageLe premier objectif du stage est de concevoir de nouveaux algorithmes d'étiquetage en composantes connexes pour des architectures manycore. Un certain nombre de ces algorithmes a déjà été développé pour des architectures multi-coeurs. Ces algorithmes existant serviront de base de réflexion pour la conception de ces nouveaux algorithmes. Comme ces algorithmes sont irréguliers et dépendent des données, une méthodologie Connaissances requisesConnaissances en informatiques : langage C, architecture des ordinateurs et système. Connaissances en traitement d'images : aucune, les algorithmes sont simples (une dizaine de ligne), c'est leur parallélisation et les problèmes intrinsèques de concurrence qu'il faudra résoudre efficacement en fonction de l'architecture. Connaissances acquises par l'étudiant lors du stageTechniques d'optimisations de code (transformation de haut niveau, optimisation du memory layout). Middleware et API de programmation parallèle comme OpenMP et Pthread. Connaissances architecturales poussées combinant architecture matérielle d'un processeur (cache, pipeline), architecture logicielle d'un algorithme (optimisation du memory layout pour placement de données distribuée sur chaque cœur) et utilisation des
RéalisationLe stage comportera entre autres les étapes suivantes :
Poursuite en thèse Possible en fonction des résultatsContactsLIP6/SoC Lionel Lacassagne, Quentin Meunier, Franck Wajsburt, Alain Greiner (prénom.nom@lip6.fr) Bibliographie[ICIP2015] "Parallel Light Speed Labeling: an Efficient Connected Component Labeling Algorithm for Multi-Core Processors". International Conference on Imape Processing (ICIP), Laurent Cabaret, Lionel Lacassagne, Daniel Etiemble |