Acceleration and benchmark of linear solvers in the SOFA framework

Accélération et mesure de résolution de systèmes linéaire dans le framework SOFA

Offre postée le 17 décembre 2021

Contexte

L’équipe DEFROST de l’Inria s’intéresse à la robotique souple ou déformable. L’idée principale est que le mouvement des robots n’est plus dû à des articulations, mais à la déformation des matériaux constituant le robot. Ces robots déformables présentent de grands avantages pour les tâches de manipulation ou d’exploration, mais ils sont ardus à contrôler. L’équipe DEFROST est spécialisée dans la simulation de robots déformables, notamment pour le design et le contrôle, dans le framework SOFA. Ces robots ont notamment pour but d’être utilisés pour des applications chirurgicales.

Pour ces applications, il est nécessaire de rendre les simulations interactives. Dans ce stage nous chercherons à accélérer le code de SOFA, en se concentrant sur la partie traitant de la résolution de systèmes linéaires.

Travail attendu

Dans le framework SOFA, une partie du code prenant le plus de temps est la résolution d’un système d’équations linéaires. Plusieurs méthodes de résolution sont disponibles dans SOFA. Dans le cadre du stage, nous nous intéressons aux méthodes de résolution directes (opposées au méthodes itératives), appliquées aux matrices creuses que l’on retrouve dans les simulations s’appuyant sur la méthode des éléments finis.

La première partie du stage consistera à faire un état des lieux des différentes méthodes, en mettant en place une plateforme de mesure de la performance de chacun. Un travail de documentation destiné aux utilisateurs de SOFA sera demandé.

Cette plateforme sera utile par la suite pour mesurer les travaux d’accélération par rapport à l’existant. Il s’agit de la deuxième partie du stage: certaines méthodes de résolution peuvent être accélérées en exploitant quelques propriétés des systèmes linéaires et en ordonnant les lignes et colonnes du système de façon optimale. Ces optimisations s’appuient sur des algorithmes provenant de librairies tierces. Le défi est d’adapter les algorithmes actuels afin qu’ils utilisent ces nouvelles stratégies le plus efficacement possible. 

La dernière partie du stage consistera à intégrer de nouvelles librairies de résolution de systèmes linéaires, permettant des approches multi-cœurs ou exploitant le GPU. Les nouvelles méthodes de résolution s’appuieront également sur les accélérations présentées en deuxième partie du stage.

Figure 1: Exemple de système matriciel creux, réordonné pour minimiser le nombre d’entrées non-nulles lors de sa factorisation

Bibliographie

Profil recherché

  • Le stage est défini pour une durée de 6 mois pour master 2 (informatique ou maths/informatique).
  • Langages nécessaires pour le stage: 
    • C++
    • CMake
    • Python
    • CUDA (optionnel)
  • Connaissances en algèbre linéaire
  • Des notions en simulations ​éléments finis sont un plus mais pas obligatoires
  • La connaissance de l’outil de gestion de versions git sera appréciée
  • Anglais

 

Ce stage se fera au sein de l’équipe DEFROST et sera supervisé par Alexandre Bilger, ingénieur de recherche senior. Le/la stagiaire utilisera des pratiques de développement professionnels (git, code review, CI, etc), et aura l’opportunité de contribuer à un projet open-source bénéficiant d’une communauté d’utilisateurs importante. Pour plus d’informations, contacter: alexandre.bilger@inria.fr

Début de stage dès que possible.

Postuler

Envoyer CV et lettre de motivation à Alexandre Bilger (alexandre.bilger@inria.fr).

Comments are closed.