Thèse Année : 2025

Adjusted objects : An efficient and principled approach to scalable programming

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

Résumé

Since the mid-2000s, the increase in transistor frequency has significantly slowed due to limitations in dissipating generated heat. In response, microprocessor designers have shifted towards multicore architectures, making parallelism essential to fully leverage the computing power of modern machines. However, writing parallel and concurrent programs is complex, requiring careful management of thread interleaving, task reordering, and a deep understanding of the memory model on which the program operates.To ease developers' work, several libraries (e.g., java.util.concurrent, Boost.LockFree...) offer concurrent objects designed to address a wide variety of use cases. Consequently, these objects often feature extensive interfaces, making their implementation complex. Specifically, mechanisms such as locks, barriers, and non-blocking primitives like compare-and-swap are used to implement these objects, which directly impacts their performance.For better performance, developers frequently implement "ad-hoc" versions of these concurrent objects, which we refer to as "adjusted objects". This thesis aims to establish both the theoretical and practical foundations of adjusted objects.To achieve this, we first present a review of the support for parallel and concurrent programming. This review is followed by an analysis of several data management systems to assess the extent to which concurrent object interfaces are used by developers. Next, we propose the first formal definition of adjusted objects, based on a new tool to measure the parallelizability of a concurrent object: the indistinguishability graph. Further, we introduce a library of adjusted objects named DEGO. This library includes several optimized versions of common concurrent objects, such as dictionaries, sets, queues, and counters. Each adjusted object provides an efficient implementation for a specific context (e.g., all concurrent write operations are commutative). The final part of this thesis focuses on evaluating the DEGO library, comparing the performance of adjusted objects with those in java.util.concurrent using micro-benchmarks and a social network-style application.
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.
Fichier principal
Vignette du fichier
117832_KANE_2025_archivage_final.pdf (1.9 Mo) Télécharger le fichier
Origine Version validée par le jury (STAR)

Dates et versions

tel-04921788 , version 1 (30-01-2025)

Identifiants

  • HAL Id : tel-04921788 , version 1

Citer

Boubacar Kane. Les objets ajustés : Une approche bien fondée et efficace pour la programmation concurrente. Informatique. Institut Polytechnique de Paris, 2025. Français. ⟨NNT : 2025IPPAS001⟩. ⟨tel-04921788⟩
0 Consultations
0 Téléchargements

Partager

More