Thèse soutenue

Coûts de synchronization dans les programmes parallèlles et les structures de données simultanées

FR  |  
EN
Auteur / Autrice : Vitalii Aksenov
Direction : Carole Delporte-GalletAnatoly ShalytoPetr Kuznetsov
Type : Thèse de doctorat
Discipline(s) : Informatique. Programmation simultanée
Date : Soutenance le 26/09/2018
Etablissement(s) : Sorbonne Paris Cité en cotutelle avec ITMO University
Ecole(s) doctorale(s) : École doctorale Sciences mathématiques de Paris centre (Paris ; 2000-....)
Partenaire(s) de recherche : Equipe de recherche : Institut de recherche en informatique fondamentale (Paris ; 2016-....)
établissement de préparation : Université Paris Diderot - Paris 7 (1970-2019)
Jury : Président / Présidente : Hugues Fauconnier
Examinateurs / Examinatrices : Carole Delporte-Gallet, Anatoly Shalyto, Petr Kuznetsov, Hugues Fauconnier, Rachid Guerraoui, Danny Hendler, Sylvie Delaët
Rapporteurs / Rapporteuses : Rachid Guerraoui, Danny Hendler

Résumé

FR  |  
EN

Pour utiliser la puissance de calcul des ordinateurs modernes, nous devons écrire des programmes concurrents. L’écriture de programme concurrent efficace est notoirement difficile, principalement en raison de la nécessité de gérer les coûts de synchronisation. Dans cette thèse, nous nous concentrons sur les coûts de synchronisation dans les programmes parallèles et les structures de données concurrentes.D’abord, nous présentons une nouvelle technique de contrôle de la granularité pour les programmes parallèles conçus pour un environnement de multi-threading dynamique. Ensuite, dans le contexte des structures de données concurrentes, nous considérons la notion d’optimalité de concurrence (concurrency-optimality) et proposons la première implémentation concurrence-optimal d’un arbre binaire de recherche qui, intuitivement, accepte un ordonnancement concurrent si et seulement si l’ordonnancement est correct. Nous proposons aussi la combinaison parallèle (parallel combining), une technique qui permet l’implémentation efficace des structures de données concurrences à partir de leur version parallèle par lots. Nous validons les techniques proposées par une évaluation expérimentale, qui montre des performances supérieures ou comparables à celles des algorithmes de l’état de l’art.Dans une perspective plus formelle, nous considérons le phénomène d’assistance (helping) dans des structures de données concurrentes. On observe un phénomène d’assistance quand l’ordre d’une opération d’un processus dans une trace linéarisée est fixée par une étape d’un autre processus. Nous montrons qu’aucune implémentation sans attente (wait-free) linéarisable d’une pile utilisant les primitives read, write, compare&swap et fetch&add ne peut être “sans assistance” (help-free), corrigeant une erreur dans une preuve antérieure de Censor-Hillel et al. Finalement, nous proposons une façon simple de prédire analytiquement le débit (throughput) des structures de données basées sur des verrous à gros grains.