FrançaisEnglish

2017-2018

PART: Conception d'algorithmes de tracking efficace sur architectures hétérogènes parallèles

(Parallel Agile Realtime Tracking)

Contexte atrchitectural

Aujourd'hui, la quasi-totalité des processeurs embarqués 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 et des processeurs many-cores: les GPU. Des architectures hybrides (hétérogènes) apparaissent: Power8 + GPU ou Xeon + FPGA pour le HPC et ARM + GPU pour l'embarqué.

Contexte algorithmique

Le projet ART (Agile Realtime Tracking) est une application de tracking adaptable à la puissance de calcul du système. L'application a été pensée dès le départ pour être paramétrable d'un point de vue qualitatif (sélection des descripteurs) et qualitatif (sélection du nombre de descripteurs). La mise en correspondance se fait par calcul de distance entre matrice de covariance de descripteurs. Cette application est donc dite agile car elle peut facilement s'adapter à n'importe quelle architecture: à l'utilisateur de décider les compromis vitesse / performance.

Objectifs du stage

L'objectif de ce stage est d'accélérer les différents algorithmes de l'application. Les algorithmes de calcul de descripteurs (features) sont bas-niveau et de type data-parallel. Tandis que les algorithmes de tracking sont de type task-parallel. Les premiers peuvent être accélérés sur GPU ou SIMDizés et multithreadés tandis que les seconds qui sont plus irréguliers ne pourront être que multithreadés sur CPU (mais leur parallélisation sur GPU reste possible).

Un travail de réflexion et de conception devra être mené sur les structures de données à utiliser afin de répartir les calculs sur des systèmes hybrides de type CPU+GPU comme les cartes Nvidia Tegra X2 qui possède un ARM quadri-cœurs SIMD et un GPU de 256 cœurs. L'objectif à terme est d'optimiser le déploiement sur l'architecture et d'équilibrer la charge de calcul lorsque varie le nombre d'object à suivre afin d'obtenir un système embarqué capable de tenir la cadence de traitement temps réel (25 images / s) pour des images HD.

Ces travaux reprendront des briques existantes séquentielles (calcul des Local Binary Pattern) ou parallèles (factorisation rapide de petites matrices en SIMD [JSP2017]) tout en améliorant le système de tracking [Eurasip2014] [DASIP2013] et en le robustifiant [ICIP 2013]_. Un travail particulier devra être fait sur les patterns de déploiement de code irréguliers sur GPU et leur structures de données associées [JPP2016] [JPP2014] [PPPGPU2014].

Connaissances requises

Connaissances en informatiques : langage C, architecture des ordinateurs et système. Connaissance des architectures SIMD (en particulier ARM Neon) des GPU (CUDA), des API de parallélisation (PThreads, OpenMP). Des connaissances de base en traitement d'images serait un plus mais peuvent être apprises durant le stage.

Connaissances acquises par l'étudiant lors du stage

Techniques d'optimisations de code (transformation de haut niveau, optimisation du memory layout). Middleware et API de programmation parallèle. Programmation de vrais systèmes hybrides comme ceux que l'on retrouve dans les voitures Tesla.

Ce stage nécessite un étudiant motivé. Les connaissances acquises lui permettront de pouvoir candidater à de nombreuses thèses traitant de l'un des aspects du stage ou de postuler à des offres d'emploi de type d'ingénieur de recherche en architectures parallèles auprès de nombreuses sociétés car celles-ci ont un manque récurrent de ce genre de profil.

Poursuite en thèse : Oui.

Les objectifs porteront sur la création et la mise à jour d'une base de données pour faire de la ré-identification (évolution des descripteurs de TI) et sur l'interprétation / classification / reconnaissance de gestes par réseaux neuronaux (k-NN, RBF, CCN).

Retombées applicatives

Avec l'augmentation de la taille des données, le nombre d'algorithmes ralentissant est de plus en plus grand. Ce type d'outils devrait ainsi bénéficier à de nombreuses applications. Concernant les réseaux de neurones, cela pourrait à la fois servir lors de l'apprentissage (pour réduire le temps d'apprentissage) et lors de l'utilisation pour implémenter des réseaux appris dans systèmes embarqués où la taille des mémoires cache est bien plus petite que celle des processeurs de bureau et de serveurs. Une première version d’un DSL devrait être disponible d’ici la fin du stage.

Publications visées

  • conférences internationales en génie logiciel, en automatisation et en architecture (Hipeac, PPoPP, CGO, GPCE, ARRAY, HLPGPU) mais aussi image et vision (ICIP, IAPR, MVA)
  • revues internationales avec le même profil comme JPP (Journal of Parallel Programming), JPDC (Journal of Parallel and Distributed Computing), JSA (Journal of System Architecture) JRTIP (Journal of Real Time Image Processing).

Contacts LIP6

Lionel Lacassagne (ALSOC) et Emmanuel Chailloux (APR) (prénom.nom@lip6.fr)

Bibliographie

(pdf disponible sur http://www-soc.lip6.fr/~lacas/Publications/Publications.html)

[JSP2017]F. Lemaitre, B. Couturier, L. Lacassagne : “Cholesky Factorization on SIMD multi-core architectures”, Journal of Systems Architecture, 2017.
[JPP2016]"High Level Data Structures for GPGPU Programming in a Statically Typed Language", M. Bourgoin, E. Chailloux, J-L Lamotte. International Journal of Parallel Programming, Springer Verlag, 2016.
[Eurasip2014]"Covariance tracking: architecture optimizations for embedded systems" A. Roméro, L. Lacassagne, M. Gouiffès, A. Hassan Zahraee, 2014.
[JPP2014]"Efficient Abstractions for GPGPU Programming", M. Bourgoin, E. Chailloux, J-L Lamotte. International Journal of Parallel Programming, Springer Verlag, 2014, 42 (4), pp.583-600.i
[PPPGPU2014]"High Level GPGPU Programming with Parallel Skeleton"s, M. Bourgoin, E. Chailloux, J-L Lamotte. Chapter in Patterns for parallel programmong on GPUs, Saxe-Coburg Publications, 2014.
[ICI2013]"Total Bregman divergence for multiple object tracking", A. Roméro, M. Gouiffès, L. Lacassagne, IEEE International Conference on Image Processing, 2013.
[DASIP2013]"Real-time covariance tracking algorithm for embedded systems", A. Roméro, L. Lacassagne, A. Hassan Zahraee, M. Gouiffès, L. Lacassagne, IEEE International Conference on Design and Architectures for Signal and Image Processing, 2013.
[Mirage2013]"Enhanced Local Binary Covariance Matrices (ELBCM) for texture analysis and object tracking", A. Roméro, M. Gouiffès, L. Lacassagne, International Conference on Computer Vision / Computer Graphics Collaboration Techniques and Applications, ACM International Conference Proceedings Series, 2013.