previous up next top index
Précédent : a) Dépendances et régularité. Remonter : Régularité et transformations de programmes Suivant : c) Exploitation du parallélisme.


b) Détection du parallélisme.

 

Nous avons poursuivi nos travaux sur la détection du parallélisme dans les structures régulières. Notre but est d'exposer automatiquement au programmeur le parallélisme maximal qui peut être détecté au niveau des boucles de son code et qui peut être également décrit par des boucles. Dans le contexte d'HPF, ceci revient à annoter automatiquement le code, lorsque cela est possible, par des directives !hpf$ independent. Les principales techniques permettant de réaliser cet objectif sont des techniques d'ordonnancement. Nos principaux résultats concernant les ordonnancements mono-dimensionnels figurent dans [13]. La prise en compte de structures plus complexes telles que les graphes réduits polyédriques (voir paragraphe précédent) nous a amenés à développer des techniques d'ordonnancements multi-dimensionnels [38, 40, 14].

Les méthodes de parallélisation citées plus haut sont essentiellement des techniques de recherche de parallélisme à grain fin, au niveau des boucles. Elles conviennent plutôt à des machines vectorielles ou à des machines parallèles à mémoire partagée. Pour certains types de machines telles que les processeurs VLIW, un grain encore plus fin est nécessaire, et le pipeline logiciel (software pipelining ) est utile. Nous en avons proposé une nouvelle heuristique pour le pipeline logiciel avec contraintes de ressources [35] (la meilleure garantie à ce jour). Pour d'autres types de machines telles que les machines à mémoires distribuées, un grain plus gros peut être nécessaire si le degré de parallélisme est trop faible et les techniques dites de ``tiling'' sont utiles. Nous poursuivons actuellement nos recherches dans ce sens.