Grâce à la miniaturisation et à l'arrivée des processeurs multicœurs dans les ordinateurs personnels, la programmation parallèle ne semble plus être réservée aux groupes restreints d'utilisateurs ayant accès à des superordinateurs ou à des grappes de calculs. De plus, avec la tendance actuelle d'augmenter constamment le nombre de cœurs des processeurs, le besoin de développer des applications pouvant s'exécuter correctement sur l'ensemble des unités de traitement disponibles est un enjeu déterminant. Sous de telles conditions, tout langage de programmation récent devrait être doté de mécanismes permettant la génération et l'exploitation de calculs parallèles. Dans le présent mémoire, nous explorons la possibilité d'intégrer des extensions parallèles à un langage orienté objet récent qui, au départ, ne possédait aucun support pour la programmation parallèle. Le langage utilisé est Nit, un langage développé conjointement à l'UQAM et au LIRMM (Montpellier, France). Nit est un langage moderne orienté objet dont la mise en œuvre utilise de nouvelles techniques de compilation, à la fine pointe de la recherche sur les langages orientés objet. À ce langage de base séquentiel, nous avons ajouté un module, appelé NitSpace, qui permet d'échanger de l'information entre des processus qui s'exécutent en parallèle. Ce module est fondé sur le modèle Linda proposé par Carriero et Gelernter (2). Le modèle Linda propose de partager, entre les processus, un espace de tuples par l'intermédiaire duquel les divers processus échangent de l'information, et ce à l'aide de quatre opérations principales : out, in, rd et eval. À ces quatre opérations s'ajoutent aussi deux variantes non bloquantes des opérations de lecture : inp et rdp. Ces diverses opérations permettent l'ajout, l'extraction et la lecture dans un espace partagé de tuples. Un avantage du modèle Linda est sa simplicité, mais en permettant malgré tout la définition des structures de données plus complexes telles que sémaphores, barrières de synchronisation, sacs de tâches, tableaux distribués, flux de données, etc. Le modèle Linda, défini au départ dans le contexte du langage C, a par la suite été intégré à d'autres langages, qui ont introduit des variantes au modèle original. Quelques-unes de ces variantes seront présentées, en présentant les implémentations qui ont été réalisées dans les langages Ruby, Python, Scala et Java. Nous avons choisi de présenter ces langages car, tout comme Nit, il s'agit de langages orientés objets. Les caractéristiques de ces différentes mises en œuvre du modèle Linda ont aussi influencé le choix de conception et de réalisation de notre module NitSpace. L'implémentation de ce module fut réalisée en trois couches que l'on présentera en détail. La majeure partie représentant la couche de bas niveau fut réalisée en C. À celle-ci s'ajoute une couche médiane qui permet de relier la couche C à la couche Nit. Finalement, la couche supérieure, écrite entièrement en Nit, représente l'API qui permet à un programme Nit de générer des calculs parallèles.
______________________________________________________________________________
MOTS-CLÉS DE L’AUTEUR : Nit, NitSpace, programmation parallèle, Linda, espace de tuples.
Identifer | oai:union.ndltd.org:LACETR/oai:collectionscanada.gc.ca:QMUQ.5774 |
Date | 06 1900 |
Creators | Poirier, Sylvain |
Source Sets | Library and Archives Canada ETDs Repository / Centre d'archives des thèses électroniques de Bibliothèque et Archives Canada |
Detected Language | French |
Type | Mémoire accepté, NonPeerReviewed |
Format | application/pdf |
Relation | http://www.archipel.uqam.ca/5774/ |
Page generated in 0.002 seconds