• Aucun résultat trouvé

4.3 Flot pour la tolérance aux fautes

4.3.1 Amélioration de la diversité des mappings

Les deux flots présentés précédemment permettent d’obtenir un grand nombre de solutions de mappings pour un CGRA donné et une contrainte de nombre de tuiles utilisables. Toutes ces solutions ont la même latence et utilisent généralement le même nombre de tuiles (sauf si le DFG ou le BB est très petit ou si l’architecture possède un très grand nombre de ressources). Cepen- dant, cela s’avère insuffisant pour pouvoir fonctionner le plus longtemps possible en changeant de configuration. Cette section commence par présenter les paramètres pertinents permettant d’influer sur la diversité des solutions, puis détaille deux algorithmes (un de diversification et un d’intensification) permettant d’utiliser ces paramètres pour augmenter la diversité des solutions.

4.3.1.1 Paramètres favorisants la diversification

Le premier paramètre dont il a déjà été question est le nombre maximal de tuiles que la projection est autorisé à utiliser. Lorsque ce paramètre n’est pas contraint, la projection peut s’étendre au maximum, en étant limité uniquement par la taille du CGRA, le réseau d’intercon- nexion, l’éventuelle contrainte de nombre simultané d’accès à la mémoire et ses dépendances de données.

Deux autres paramètres ont été retenus pour favoriser la diversité des mappings :

— le nombre maximal de voisins avec lesquels chaque tuile est autorisée à communiquer ; — et le nombre de tuiles autorisées à utiliser ce nombre maximal.

Ils permettent tous deux de restreindre l’utilisation du CGRA en limitant l’utilisation du réseau d’interconnexion. Par exemple, sur un CGRA de largeur et hauteur supérieur à cinq tuiles possédant une interconnexion de type mesh-2D, la figure 4.4 présente les quatre réseaux existant possédant cinq tuiles. Ils ont les caractéristiques suivantes :

— celui de gauche possède une seule tuile avec quatre voisins ;

— ceux du milieu et du bas à droite possèdent une seule tuile à trois voisins ; — celui d’en haut à droite possède trois tuiles à deux voisins.

Si le CGRA possède une largeur inférieure ou égale à cinq tuiles et qu’il possède un mesh torique alors d’autre réseaux sont atteignables comme une ligne bouclée sur elle-même où toutes tuiles ont deux voisins. De même, si le CGRA est un 3 × 3 torique alors il y aurait d’autres versions du réseau de gauche de la figure 4.4 : avec la tuile A connectée à la tuile E et/ou la tuile B connectée à la tuile D. L’annexe B présente les différents réseaux atteignables possédant huit tuiles dans un mesh-2D simple à quatre voisins.

B A C D E A B C D E A B C D E A B C D E

Figure 4.4 – Les quatre réseaux différents possibles pour 5 tuiles sur un CGRA dont les dimen- sions sont supérieures à 5 tuiles.

4.3.1.2 Les boucles de diversification

Les trois paramètres décrit précédemment sont utilisés dans l’algorithme 6 afin de favoriser au mieux la diversification des mappings.

Algorithme 6 Diversification des mappings

1: Initialisation(CDF G, Archi)

2: pour nbT uiles = N bT uilesArchi à 1 faire

3: pour nbM axV oisins = M axV oisins à 2 faire

4: pour nbM axT uilesN bM axV oisins = N bT uilesArchi à 1 faire

5: listeM appings += MultiProjection(CDF G, Archi, contraintes)

6: SuppressionRedondance(listeM appings)

7: fin pour

8: fin pour

9: fin pour

La première itération de l’algorithme correspond à celle sans contrainte particulière. La va- riable N bT uilesArchi vaut le nombre totale de tuiles disponibles dans le CGRA et M axV oisins dépend du réseau d’interconnexion (e.g. 4 pour un mesh-2D ; 8 pour un mesh-X).

La fonction FindMappings() est celle qui réalise le processus de projection comme détaillé dans les chapitres précédents. La fonction SuppressionRedondance() n’est pas à la fonction d’élagage utilisée lors de la projection et doit s’exécuter en plus de cette dernière. Elle répond aux critères suivants :

— si un mapping utilise un réseau qui contient celui d’un autre mapping et possède la même latence, alors il n’est pas conservé ;

— si un mapping utilise un réseau qui est plus connecté que celui d’un autre mapping (avec les mêmes tuiles) et possède tout deux la même latence, alors il n’est pas conservé ; — si un mapping est plus connecté qu’un autre mapping et/ou le contient et possède une

latence plus faible, alors ils sont tous deux conservés ;

Dans tous les autres cas, le mapping est conservé. En effet, comme expliqué dans le chapitre 2, l’objectif de la méthode est triple : surface/latence/réseau. C’est pour cette raison qu’il faut conserver les mappings plus lents mais moins connectés et/ou plus petits.

Pour réduire le nombre d’itérations, sans perdre de généralité, il est possible d’agir de deux manières :

— connaissant la durée maximale acceptable pour l’exécution d’un DFG ou d’un BB, il est possible de sortir des boucles quand cette contrainte n’est plus respectée ;

— la connaissance des caractéristiques du réseau d’interconnexion permet d’affiner la condi- tion d’arrêt de la boucle la plus interne.

En effet, certaines combinaisons sont redondantes. Par exemple si il y est possible d’utiliser cinq tuiles, mais que la contrainte du nombre de voisins maximal est à deux et que la limite de nombre maximum de tuiles pouvant avoir deux voisins est en dessous de trois, il ne sera pas possible d’obtenir une solution à 5 tuiles. Cette combinaison de contraintes donnera exactement les même résultats que celle avec seulement quatre tuiles autorisées et est donc redondante.

Par exemple, avec un mesh-2D simple, les formules empiriques des équations 4.3.1, 4.3.2 et 4.3.3 donnent la valeur de la borne supérieure du nombre maximal de tuiles pouvant commu- niquer avec le nombre de voisins maximal en fonction des deux autres variables :

− Si 4 voisins au maximum : borne =

     0 si nbT uiles ≤ 4 1 si 5 ≤ nbT uiles ≤ 7  2 +jnbT uiles−82 k si nbT uiles ≥ 8 (4.3.1)

− Si 3 voisins au maximum : borne =      0 si nbT uiles ≤ 3 1 si nbT uiles = 4 (nbT uiles − 4) si nbT uiles ≥ 5 (4.3.2)

− Si 2 voisins au maximum : borne =

(

0 si nbT uiles ≤ 1

(nbT uiles − 2) si nbT uiles ≥ 2 (4.3.3)

Si la borne est zéro, cela signifie qu’il n’y a pas besoin d’effectuer ce tour de boucle car il est redondant.

Ces formules sont bien évidemment très dépendantes du réseau d’interconnexion et ne sont valables que dans le cas d’un réseau d’interconnexion possédant quatre voisins au maximum. En cas d’un réseau d’interconnexion torique, la borne doit être augmentée si le nombre de tuiles autorisée est supérieure à une des dimensions. Par exemple, dans le cas de deux voisins maximum, la borne ne sera plus (nbT uiles − 2) mais nbT uiles (qui correspond à un anneau).

Remarque

Dans le chapitre 2, il a été exclu a priori d’effectuer la projection d’un code par une méthode permettant de trouver un mapping pour chaque réseau qu’il est possible d’obtenir à partir de l’architecture initiale. Il faut maintenant vérifier que l’approche de diversification est bien meilleure que celle exclue.

L’approche proposée par diversification effectuera dans le pire des cas et sans optimisation : — n tours de la boucle de nombre de tuiles utilisables avec n représentant le nombre de

tuiles de l’architecture ;

— un nombre fixe de tours de la boucle intermédiaire dépendant du nombre de voisins disponibles dans le réseau d’interconnexion ;

— n tours de la boucle de nombre de ressources capable d’utiliser la capacité de communi- cation définie dans la boucle de niveau supérieur.

Soit au total une complexité en O(n2). L’approche par contrainte de réseaux a une complexité en

O(2n). Nous confirmons a posteriori que la démarche « objectif de réseaux » est bien pertinente.

4.3.1.3 Les boucles d’intensification

Après avoir effectué les boucles de diversification, il est possible d’effectuer une intensifi- cation de la recherche de mappings différents. Cette étape s’appuie sur les mappings trouvés précédemment pour chaque BB pour en obtenir d’autres.

Cette recherche se passe en deux étapes comme illustrées dans le pseudo-code 7 : 1. obtenir de nouvelles « signatures » de réseaux ;

2. réaliser la projection pour chacune d’elles.

Algorithme 7 Intensification des mappings

Nécessite : hlisteM appingsbbi : liste de mappings précédemment trouvée pour le BB considéré

1: nouvellesSignaturesReseaux = ObtentionNouveauxReseaux(listeM appingsbb)

2: pour signatureReseau ∈ nouvellesSignaturesReseaux faire

3: hlisteM appingsbbi += MultiProjection(bb, Archi, signatureReseau)

4: SuppressionRedondance(hlisteM appingsbbi)

5: fin pour

Le principe général de cette intensification est le suivant : obtenir tous les réseaux possibles au delà d’une taille très petite de CGRA n’étant pas possible, une heuristique de détermination

de réseaux est mise en place. Elle consiste, à partir d’une solution de mapping déjà trouvée, à supprimer une tuile utilisée de la solution et à conserver le ou les réseaux obtenus de cette manière pour les utiliser par la suite. En d’autres termes cela revient à prédire des scénarios d’apparition de fautes permanentes sur des solutions de mapping déjà existantes. Par exemple, supposons que la diversification ait permis de trouver les réseaux de cinq tuiles de la figure 4.4. La première partie de l’intensification va alors pour chacun d’eux supprimer une tuile. Dans le cas du réseau de gauche, différentes variantes de réseau en « T » seront trouvées (avec des orientations différentes). Avec le réseau central, il sera possible d’obtenir un réseau carré, un « T » ou alors une ligne coudée. Les deux derniers réseaux permettront eux aussi d’obtenir un « T » ou des lignes.

Comme il n’est pas réaliste d’effectuer une synthèse pour chacun de ces réseaux particuliers, ce ne sera pas exactement le réseau qui sera donné comme paramètre à l’algorithme de projection, mais une « signature ». Cette signature est une représentation réduite et incomplète d’un réseau. Elle est composée du nombre de tuiles utilisant un certain nombre de voisins pour chaque nombre de voisins connectables possibles. Par exemple le réseau de gauche de la figure 4.4 a pour signature « 1-0-0-4 » car il possède une tuile avec quatre voisins, zéro tuile à trois et deux voisins, et quatre tuiles à un voisin. La seconde partie de l’intensification consiste à utiliser ces signatures explicites pour relancer la projection. Pour chaque signature différente, le flot de projection va obtenir l’ensemble des mappings. La signature suffit ici car durant le processus, si une solution en ligne est trouvée, les solutions en ligne coudée le seront aussi. De même l’orientation du « T » n’a pas d’importance dans la contrainte car toutes les orientations seront trouvées. Après ce processus, si le nombre de mappings différents a augmenté, il pourrait être intéressant de relancer l’intensification avec les solutions nouvelles.

Au final, après avoir exécuté les heuristiques de diversification et d’intensification, on dispose d’un grand nombre de solutions de mappings pour tous les BBs utilisant des réseaux différents. La section suivante présente la méthode développée pour déterminer en ligne la configuration du CGRA à partir de cet ensemble généré hors ligne.