Depuis la fin du scaling de Dennard, il s’est avéré que de futurs gains de performance viendront du calcul parallèle, et plus particulièrement de l’utilisation d’architectures multicœur. Aussi bien programmer qu’obtenir les performances optimales sur de telles architectures s’est historiquement révélé difficile.
De nombreux outils ont été créés afin d’aider les programmeurs à écrire des programmes corrects et performants. Les futurs en sont un exemple : une abstraction qui permet à une tâche de se synchroniser avec la fin d’une autre tâche et de récupérer sa valeur calculée. Les files sont un autre outil : des canaux de communication permettant à des tâches (productrices) de stocker des valeurs dans un espace mémoire partagé, dans lequel d’autres tâches (consommatrices) pourront récupérer ces valeurs, le tout de façon sûre.
Dans ce manuscrit nous étudions et améliorons les futurs et les files sous trois aspects : sûreté, efficacité, simplicité. Nous fournissons les dataflow explicit futures en tant que bibliothèque. Il s’agit d’une évolution théorique des futurs qui offre aux programmeurs une plus grande expressivité et permet d’écrire plus facilement des programmes qui manipulent les futurs. Une seconde contribution, FIFOPlus, améliore les files. FIFOPlus est une file qui embarque un modèle analytique afin de reconfigurer dynamiquement sa granularité de synchronisation. Cette reconfiguration se base sur un calcul d’une approximation du temps nécessaire pour effectuer un transfert de données selon une granularité de synchronisation. Contrairement à plusieurs outils pré-existants, l’analyse est simple et effectuée à l’exécution, ce qui rend l’outil simple d’utilisation.
Gratuit
Disciplines