Sous-sections

Analyse des comportements des programmes


Fenêtres de référence généralisées - approche statique



Participants : Christine Eisenbeis, Andry Randrianatoavina, François Thomasset.

Cette étude concerne l'optimisation de code pour la hiérachie mémoire, thème du projet ESPRIT MHAOTEU (section 8.2.1).

Pour estimer le bien-fondé d'une transformation de code, il faut avoir un critère facile à calculer statiquement ou à mesurer dynamiquement. Le nombre de cache miss est un tel critère, mais il est extrêmement complexe à calculer statiquement, et coûteux à mesurer. En particulier les cache miss dus aux conflits mémoire sur un même cache set sont les plus difficiles à contrôler. Martonosi et al. en ont donné une formulation comme nombre de points entiers dans une union de polyèdres. La complexité du calcul, déjà très grande dans le cas d'un cache à correspondance directe, explose dans le cas d'un cache associatif par ensembles. En tout état de cause, la formule n'est pas paramétrée par l'ordonnancement des tâches et ne permet donc pas a posteriori une optimisation directe de code.

Nous étudions une autre approche, moins complexe en théorie, qui n'est plus basée directement sur le calcul du nombre de cache miss, mais sur le nombre de variables en vie dans chaque cache set. Nous perdons de la précision puisque ces 2 nombres ne sont pas directement liés. En retour, nous gagnons une moindre complexité de calcul ainsi que la prise en compte dans la formule de l'ordonnancement.

Le calcul du nombre de cache miss dans chaque cache set est une extension de nos études passées des fenêtres de références [4], appliquées en chaque cache set. Nous avons donc commencé par réimplémenter le calcul des fenêtres de référence dans l'outil Polaris de parallélisation de code. Cette implémentation utilise le logiciel de calcul du nombre de points entiers dans les polyèdres développé par Philippe Clauss à l'Université de Strasbourg, qui n'existait pas lors de nos premières études. De nombreuses difficultés théoriques persistent, en particulier le calcul de la taille de la projection d'un polyèdre paramétré. Cette année, nous avons tenté une autre voie d'attaque, en travaillant sur la structure mémoire des lignes de cache. Au lieu de linéariser l'adresse de la ligne, ce qui donne lieu à des polyèdres dégénérés, nous conservons la structure multidimensionnelle des tableaux le plus tard possible, et avons un treillis de lignes, ou, plus loin, un treillis des lignes qui s'appliquent sur un set s fixé. Ceci nous a permis de traiter le cas de la réorganisation des tableaux en mémoire ( array padding).

Nous étudions ces problèmes en partenariat avec l'Université de Strasbourg.


Fenêtres de référence généralisées - approche dynamique



Participants : Aloke Bajpai, Christine Eisenbeis, Andry Randrianatoavina, Sid Ahmed Ali Touati.

Dans le cadre du projet ESPRIT MHAOTEU 8.2.1, pour étudier la pertinence des GRW (fenêtres de référence généralisées), en dépit de la complexité de l'approche statique, nous avions développé l'outil DGRW d'évaluation dynamique des fenêtres. Le but était seulement de vérifier expérimentalement la corrélation entre la taille de la fenêtre et le nombre de cache miss dus aux interférences.

Cette année, nous avons développé un module pour les outils MHAOTEU, de visualisation de l'évolution au cours du temps de la fenêtre généralisée. Ce module est basé sur le même schéma que l'outil CVT (Cache Visualisation Tool) développé par Grégory Watts - serveur qui interpréte une suite de références mémoire générées au vol. Cet outil, nommé DGVT (Dynamic General reference window Visualisation Tool) a été développé par Aloke Bajpai lors de son stage dans le projet [34]. De même que CVT, il peut être utilisé comme un debugger de performances.

Prédiction de branchement : les limites de la corrélation



Participants : Alexandre Farcy, Olivier Temam.

Les mécanismes de prédiction des branchements conditionnels les plus efficaces utilisent la corrélation entre branchements. Dans cette étude, nous définissons et classons les relations de corrélation complexes que ces mécanismes arrivent à extraire. Pour les branchements les plus mal prédits, nous montrons les limites de la prédiction par corrélation. Nous montrons également qu'il existe un potentiel pour calculer plus tôt leur condition. Enfin, nous proposons des méthodes alternatives, exploitant ce potentiel, permettant de réduire le risque de mauvaise prédiction [26].