|
|
|
|
Par exemple l'inversion de boucles peut amener une boucle parallèle externe en position interne. C'est indispensable pour qu'une machine vectorielle puisse exploiter le parallélisme. Ainsi, dans le nid de boucleLa méthode de parallélisation de programmes par transformations successives présente un inconvénient majeur : l'ordre optimal d'application des transformations n'a toujours pas été trouvé. Il est d'ailleurs probable qu'il n'en existe pas et que la seule méthode optimale consiste à essayer toutes les combinaisons possibles. C'est pourquoi des méthodes plus systématiques ont été mises au point. La méthode de Kennedy et Allen [3] permet de traiter un programme entier. L'idée de base est que les composantes fortement connexes du graphe de dépendances du programme représentent des opérations contenues dans le même nid de boucles 1. Le nouveau programme généré par la méthode de Kennedy et Allen est tel que :la boucle externe est parallèle alors que la boucle interne ne l'est pas. Pour un processeur vectoriel mieux vaut inverser les boucles (c'est valide pour cet exemple) et vectoriser la boucle interne :DO i=1,n DO j=1,n s(i,j)=s(i,j-1)+a(i,j) END DO END DODO j=1,n DO ALL i=1,n s(i,j)=s(i,j-1)+a(i,j) END DO END DO
|