Javascript must be enabled to continue!
Application de la métaprogrammation template à la conception de bibliothèques actives de parallélisation assistée
View through CrossRef
L'écriture de programmes parallèles, par opposition aux programmes classiques séquentiels et n'utilisant donc qu'un processeur, est devenue une nécessité. En effet, si jusqu'au début du millénaire la puissance de calcul des ordinateurs dépendait principalement de la fréquence du processeur, elle est maintenant liée au nombre de cœurs de calcul qui sont de plus en plus nombreux. Pourtant, à cause des difficultés introduites par la parallélisation, la plupart des programmes sont toujours écrits de manière classique. En particulier, il peut être compliqué de déterminer, étant donné une sous partie d'un programme, si la parallélisation est possible, c'est-à-dire si elle n'introduira pas un changement de comportement du programme. Cependant, même en sachant précisément ce qui peut être parallélisé, le faire correctement est aussi une tâche difficile. Cette thèse présente deux approches pour simplifier l'écriture de programmes parallèles. Nous proposons une bibliothèque active -- par métaprogrammation template, elle agit durant la compilation -- qui acquiert des informations à propos d'une portion de programme, correspondant à une boucle, au moyen de patrons d'expression. Celles-ci sont utilisées pour analyser les instructions et identifier lesquelles peuvent être exécutées en parallèle. Cette analyse repose sur deux niveaux de connaissance : l'ensemble des variables utilisées en distinguant les accès en lecture de ceux en écriture, et, puisqu'il s'agit souvent de tableaux, des fonctions d'indice. Les variables et leur mode d'accès permettent de savoir quelles instructions sont interdépendantes tandis que les fonctions d'indice nous servent à déterminer, pour un groupe d'instructions, s'il est possible de procéder à une exécution parallèle des itérations de la boucle. L'objectif de cette bibliothèque est de proposer un cadre, à la fois pour les développeurs afin d'écrire des boucles qui seront automatiquement exécutées en parallèle si cela est possible, mais aussi à un niveau plus élevé pour intégrer de nouvelles méthodes de parallélisation ou d'autres règles à utiliser pour l'analyse. Nous proposons également une seconde bibliothèque, active elle aussi, orientée sur la parallélisation assistée en utilisant la technique des squelettes algorithmiques comme interface pour le développeur. Celle-ci permet de représenter des algorithmes complets comme des assemblages de motifs d'exécution : séquence de tâches ; exécution répétée d'une tâche en parallèle ; ... En utilisant cette connaissance, nous pouvons mettre en place des choix dans la manière de répartir les tâches exécutées en parallèle sur les différents processeurs. Par ailleurs, nous avons choisi d'expliciter l'expression de la transmission des données entre les tâches, contrairement à ce qui est habituellement fait.Grâce à cela, la bibliothèque automatise notamment la transmission de paramètres qui ne doivent pas être partagés par des tâches parallèles. Cela nous permet en particulier de garantir la répétabilité des exécutions y compris lorsque, par exemple, les tâches utilisent des nombres pseudo-aléatoires. En tenant compte de la politique d'exécution choisie et des nombres de processeurs possibles, nous réduisons la quantité nécessaire de ces paramètres ne devant pas être partagés. Ainsi, cette seconde bibliothèque propose elle aussi un cadre de programmation à plusieurs niveaux. Celle-ci est extensible au niveau de ses politiques d'exécution ou des motifs pour la construction des squelettes algorithmiques. On peut l'utiliser pour définir une variété de squelettes algorithmiques, lesquels serviront ensuite à un développeur pour écrire des programmes dont la parallélisation sera facilitée.
Title: Application de la métaprogrammation template à la conception de bibliothèques actives de parallélisation assistée
Description:
L'écriture de programmes parallèles, par opposition aux programmes classiques séquentiels et n'utilisant donc qu'un processeur, est devenue une nécessité.
En effet, si jusqu'au début du millénaire la puissance de calcul des ordinateurs dépendait principalement de la fréquence du processeur, elle est maintenant liée au nombre de cœurs de calcul qui sont de plus en plus nombreux.
Pourtant, à cause des difficultés introduites par la parallélisation, la plupart des programmes sont toujours écrits de manière classique.
En particulier, il peut être compliqué de déterminer, étant donné une sous partie d'un programme, si la parallélisation est possible, c'est-à-dire si elle n'introduira pas un changement de comportement du programme.
Cependant, même en sachant précisément ce qui peut être parallélisé, le faire correctement est aussi une tâche difficile.
Cette thèse présente deux approches pour simplifier l'écriture de programmes parallèles.
Nous proposons une bibliothèque active -- par métaprogrammation template, elle agit durant la compilation -- qui acquiert des informations à propos d'une portion de programme, correspondant à une boucle, au moyen de patrons d'expression.
Celles-ci sont utilisées pour analyser les instructions et identifier lesquelles peuvent être exécutées en parallèle.
Cette analyse repose sur deux niveaux de connaissance : l'ensemble des variables utilisées en distinguant les accès en lecture de ceux en écriture, et, puisqu'il s'agit souvent de tableaux, des fonctions d'indice.
Les variables et leur mode d'accès permettent de savoir quelles instructions sont interdépendantes tandis que les fonctions d'indice nous servent à déterminer, pour un groupe d'instructions, s'il est possible de procéder à une exécution parallèle des itérations de la boucle.
L'objectif de cette bibliothèque est de proposer un cadre, à la fois pour les développeurs afin d'écrire des boucles qui seront automatiquement exécutées en parallèle si cela est possible, mais aussi à un niveau plus élevé pour intégrer de nouvelles méthodes de parallélisation ou d'autres règles à utiliser pour l'analyse.
Nous proposons également une seconde bibliothèque, active elle aussi, orientée sur la parallélisation assistée en utilisant la technique des squelettes algorithmiques comme interface pour le développeur.
Celle-ci permet de représenter des algorithmes complets comme des assemblages de motifs d'exécution : séquence de tâches ; exécution répétée d'une tâche en parallèle ; .
En utilisant cette connaissance, nous pouvons mettre en place des choix dans la manière de répartir les tâches exécutées en parallèle sur les différents processeurs.
Par ailleurs, nous avons choisi d'expliciter l'expression de la transmission des données entre les tâches, contrairement à ce qui est habituellement fait.
Grâce à cela, la bibliothèque automatise notamment la transmission de paramètres qui ne doivent pas être partagés par des tâches parallèles.
Cela nous permet en particulier de garantir la répétabilité des exécutions y compris lorsque, par exemple, les tâches utilisent des nombres pseudo-aléatoires.
En tenant compte de la politique d'exécution choisie et des nombres de processeurs possibles, nous réduisons la quantité nécessaire de ces paramètres ne devant pas être partagés.
Ainsi, cette seconde bibliothèque propose elle aussi un cadre de programmation à plusieurs niveaux.
Celle-ci est extensible au niveau de ses politiques d'exécution ou des motifs pour la construction des squelettes algorithmiques.
On peut l'utiliser pour définir une variété de squelettes algorithmiques, lesquels serviront ensuite à un développeur pour écrire des programmes dont la parallélisation sera facilitée.
Related Results
Size Investigation and Engineering Application of Pull Screw Aluminum Alloy Template
Size Investigation and Engineering Application of Pull Screw Aluminum Alloy Template
As one of the aluminum alloy formwork systems, the pull screw aluminum alloy template is widely used in construction projects. However, in the template design, due to the inability...
Parallélisation et optimisation d'un simulateur de morphogénèse d'organes. Application aux éléments du rein
Parallélisation et optimisation d'un simulateur de morphogénèse d'organes. Application aux éléments du rein
Depuis plusieurs dizaines d’années, la modélisation du vivant est un enjeu majeur qui nécessite de plus en plus de travaux dans le domaine de la simulation. En effet, elle ouvre la...
Drilling Optimization on Gyda Development Project: A Case Study
Drilling Optimization on Gyda Development Project: A Case Study
ABSTRACT
BP Norway's North Sea Gyda Field development commenced when a nine slot template was installed and the first template well spudded in November 1987. Eigh...
Fearless Automatic Parallelisation
Fearless Automatic Parallelisation
Despite significant advancements in parallel programming techniques, stagnating single-core performance and the increasing prevalence of multi-core processors demand new approaches...
La télécopie et le prêt entre bibliothèques; une expérience récente dans le réseau de l’Université du Québec
La télécopie et le prêt entre bibliothèques; une expérience récente dans le réseau de l’Université du Québec
Les expériences de télécopie réalisées au cours des années 1960 sur des appareils commerciaux de première génération ont démontré l’insuffisance de la technologie pour transmettre ...
Specification Platform for Library IP Development
Specification Platform for Library IP Development
Plateforme de spécification pour le développement de bibliothèques de cellules et d'IPs
Une plateforme de conception est une solution totale qui permet à une équipe...
Cost-Effectiveness of Folic Acid Supplementation Strategies for Preventing Neural Tube Defects in Ethiopia: A Markov Model Analysis
Cost-Effectiveness of Folic Acid Supplementation Strategies for Preventing Neural Tube Defects in Ethiopia: A Markov Model Analysis
Abstract
Background
Neural tube defects (NTDs) are congenital malformations of the brain and spinal cord that result from the incomplete development of the central nervous...
Template impact in nucleus basalis segmentation
Template impact in nucleus basalis segmentation
AbstractBackgroundThe Nucleus Basalis of Meynert (NB), located within the basal forebrain sublenticular region, is a cholinergic center with neurons providing cholinergic afferents...

