Thèse soutenue

Les objets ajustés : Une approche bien fondée et efficace pour la programmation concurrente

FR  |  
EN
Auteur / Autrice : Boubacar Kane
Direction : Pierre Sutra
Type : Thèse de doctorat
Discipline(s) : Informatique, données, IA
Date : Soutenance le 10/01/2025
Etablissement(s) : Institut polytechnique de Paris
Ecole(s) doctorale(s) : École doctorale de l'Institut polytechnique de Paris
Partenaire(s) de recherche : Laboratoire : Télécom SudParis (Evry ; 2012-....) - Institut Polytechnique de Paris / IP Paris - Département Informatique / INF - Efficient and safe distributed systems / BENAGIL
Jury : Président / Présidente : François Trahay
Examinateurs / Examinatrices : Vania Marangozova, Davide Frey, Julien Sopena, Petr Kuznetsov
Rapporteur / Rapporteuse : Vania Marangozova, Davide Frey

Mots clés

FR  |  
EN

Résumé

FR  |  
EN

Depuis le milieu des années 2000, l'augmentation de la fréquence des transistors, contrainte par leur capacité à dissiper la chaleur produite, a considérablement réduit. En réponse, les concepteurs de microprocesseurs ont opté pour des architectures multicœurs. Ainsi, le parallélisme est devenu indispensable pour tirer parti des capacités de calcul des machines. Cependant, l'écriture de programmes parallèles et concurrents peut être complexe, nécessitant la gestion des entrelacements des fils d'exécution, du réordonnancement des tâches, ainsi qu'une solide compréhension du modèle mémoire sur lequel le programme s'exécute. Pour faciliter la tâche des développeurs, plusieurs bibliothèques (par exemple, java.util.concurrent, Boost.LockFree...) proposent des objets concurrents. Ces bibliothèques visent à répondre aux besoins d'un large éventail de cas d'utilisation et, par conséquent, les objets qu'elles implémentent sont souvent dotés d'interfaces très fournis, rendant leur implémentation complexe. En particulier, on utilise pour implémenter ces objets des mécanismes tels que les verrous, les barrières et les primitives non bloquantes comme ''compare-and-swap'', ce qui affecte directement les performances de l'objet. Pour obtenir de meilleures performances, il n'est pas rare que les développeurs implémentent des versions ''ad-hoc'' de ces objets concurrents Nous appelons ces objets les objets ajustés. Cette thèse a pour objectif de jeter les bases théoriques et pratiques des objets ajustés. Pour ce faire, nous faisons d'abord un état de l'art sur le support de la programmation parallèle et concurrente. Cet état de l'art est suivi d'une analyse de plusieurs systèmes de gestion de données pour examiner dans quelle mesure l'interface des objets concurrents est utilisé par les développeurs. Ensuite, nous proposons la première définition formelle des objets ajustés, basée sur un nouvel outil permettant de mesurer la parallélisabilité d'un objet concurrent : le graphe d'indistinguabilité. Plus loin, nous présentons une bibliothèque d'objets ajustés nommée DEGO. Cette bibliothèque inclut plusieurs versions ajustées d'objets concurrents usuels, tels que dictionnaire, ensemble, file ou encore compteur. Chaque objet ajusté offre une implémentation efficace pour un contexte particulier (par exemple, les opérations d'écriture concurrentes sont toutes commutatives). La dernière partie de cette thèse porte sur l'évaluation de la bibliothèque DEGO. Nous comparons les performances des objets ajustés à ceux de java.util.concurrent en utilisant des micro benchmarks et une application de type réseau social.