Les objets ajustés : Une approche bien fondée et efficace pour la programmation concurrente
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
Mots clés contrôlés
Mots clés libres
Résumé
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.