Avancées dans les réseaux reconfigurables à grain large
Un nouveau compilateur améliore les capacités du CGRA pour diverses applications logicielles.
― 8 min lire
Table des matières
- Le défi des restrictions de domaine
- La nécessité de meilleures solutions
- Comment fonctionne le compilateur flexible CGRA
- Évaluation des gains de performance
- La structure des CGRAs
- L'importance des Règles de réécriture
- Techniques pour une compilation efficace
- Le rôle du benchmarking
- Application des règles de réécriture
- Résultats des études expérimentales
- Conclusion
- Source originale
- Liens de référence
Les tableaux reconfigurables à grains grossiers (CGRAs) sont des types de matériel spéciaux qui mélangent la flexibilité des FPGA avec la rapidité et l'efficacité des circuits intégrés spécifiques à des applications (ASICs). Ils sont conçus pour exécuter des tâches spécifiques de manière plus rapide et économe en énergie que les processeurs généralistes. Mais ils présentent un défi : s'ils sont conçus pour un éventail limité de tâches, ils pourraient ne pas répondre à tous les besoins logiciels actuels et futurs, ce qui peut les rendre moins intéressants.
Le défi des restrictions de domaine
Un gros souci avec le matériel spécialisé comme les CGRAs, c'est qu'ils ne peuvent exécuter que certains types de logiciels. Ça peut freiner leur utilisation plus large. Quand les utilisateurs doivent modifier leurs algorithmes pour s'adapter à ces systèmes spécialisés, ils peuvent être réticents, surtout s'ils s'inquiètent du temps et du coût de ces modifications.
Les CGRAs existants se concentrent sur l'exécution efficace des tâches, mais ils se limitent souvent à un petit éventail d'opérations. Ça veut dire que si un logiciel contient juste une opération que le CGRA ne soutient pas, le logiciel ne peut pas du tout tourner. Ce problème met en lumière la question des restrictions de domaine, où le matériel spécialisé peut ne pas soutenir un éventail assez large d'applications logicielles.
La nécessité de meilleures solutions
Pour résoudre ce problème, on a besoin d'une nouvelle approche qui puisse automatiquement ajuster les programmes utilisateurs pour qu'ils s'adaptent aux capacités des CGRAs. Cela permettrait au matériel de supporter un plus large éventail de logiciels sans que les utilisateurs aient à changer leurs programmes d'origine.
Une solution proposée est un nouveau Compilateur flexible pour CGRA. Ce compilateur peut aider à adapter les CGRAs pour soutenir des opérations qu'ils ne gèrent pas nativement. En réécrivant le code logiciel, il peut remplacer les opérations non supportées par des alternatives que le CGRA soutient.
Comment fonctionne le compilateur flexible CGRA
Le compilateur flexible CGRA utilise une stratégie appelée réécriture de flux de données. Cette approche consiste à parcourir le code pour identifier les sections que le CGRA ne peut pas exécuter et transformer ces sections en formats que le matériel peut gérer. Pour gérer ce processus efficacement, une technique appelée saturation d'égalité est utilisée, ce qui permet au compilateur d'explorer un large éventail d'options de réécriture pour trouver les adaptations les plus appropriées.
En appliquant ce compilateur flexible à divers types de Structures de boucle dans le logiciel, on peut augmenter de manière significative le nombre d'applications logicielles pouvant tourner sur les CGRAs. Cela entraîne des temps d'exécution plus rapides comparé à l'exécution du même logiciel sur des CPU généralistes.
Évaluation des gains de performance
En gros, le compilateur flexible CGRA a montré une augmentation significative du nombre de structures de boucle qu'il peut compiler. Dans les tests, il a pu soutenir 2,2 fois plus de boucles que les autres techniques actuellement disponibles.
Les améliorations de performance sont impressionnantes aussi. Lorsqu'il exécute des boucles qui ne seraient normalement pas soutenues, le compilateur atteint environ trois fois la vitesse par rapport à l'exécution de tâches similaires sur des processeurs plus traditionnels. Cela veut dire qu'adopter une approche flexible pour les CGRAs peut entraîner des avancées significatives en performance sans nécessiter de changements étendus dans le logiciel.
La structure des CGRAs
Les CGRAs sont composés d'une grille d'éléments de traitement (PEs) qui peuvent effectuer diverses opérations. Contrairement aux architectures traditionnelles qui pourraient avoir un seul type de PE, les CGRAs peuvent varier en termes de capacités. Certains CGRAs peuvent ne prendre en charge que quelques opérations, tandis que d'autres peuvent en gérer un éventail plus large. Cette flexibilité est ce qui les rend attrayants, mais cela contribue aussi à la complexité de leur programmation, car les utilisateurs doivent s'assurer que leur logiciel correspond aux capacités du matériel.
Types de CGRAs
CGRAs homogènes : Ceux-ci ont un agencement uniforme où tous les éléments de traitement soutiennent les mêmes opérations. Ils sont plus faciles à programmer mais manquent des avantages de performance liés à la spécialisation.
CGRAs hétérogènes : Ces derniers présentent des éléments de traitement spécialisés adaptés à des tâches spécifiques, permettant une meilleure performance dans ces domaines. Cependant, programmer ces systèmes peut être plus difficile, car les utilisateurs doivent naviguer à travers les restrictions imposées par les composants spécialisés.
Règles de réécriture
L'importance desUn aspect crucial du compilateur flexible CGRA est son utilisation de règles de réécriture. Ces règles sont essentiellement des motifs prédéfinis qui aident à transformer des opérations non soutenues en celles que le CGRA peut exécuter. En appliquant proactivement ces règles, le compilateur peut adapter le programme pour qu'il s'adapte mieux au matériel.
Techniques pour une compilation efficace
Le compilateur flexible CGRA emploie une approche hybride qui combine des techniques de réécriture traditionnelles avec la saturation d'égalité. Cette stratégie à deux volets lui permet non seulement de s'adapter rapidement à des cas simples mais aussi d'explorer des cas plus complexes où le logiciel pourrait devoir subir des changements significatifs pour être compatible avec le CGRA.
Réécriture avide : Cette technique applique rapidement des règles de réécriture dans l'espoir de trouver une correspondance qui s'adapte au matériel. Cependant, elle peut avoir du mal avec des structures complexes nécessitant une exploration plus approfondie.
Saturation d'égalité : Cette méthode plus avancée explore systématiquement l'ensemble des réécritures possibles, permettant au compilateur de trouver des solutions pour des constructions logicielles plus difficiles qui auraient pu être négligées.
Le rôle du benchmarking
Pour évaluer l'efficacité du compilateur flexible CGRA, une suite de benchmark complète a été développée. Cette suite se compose de milliers de boucles du monde réel provenant de divers projets open source, assurant une grande diversité de styles et de techniques de programmation.
En examinant cette suite de benchmarks, le compilateur peut démontrer ses capacités sur de nombreuses architectures différentes. Il devient clair que le compilateur CGRA non seulement améliore la performance du logiciel original mais élargit également la gamme de code qui peut fonctionner efficacement sur différents CGRAs.
Application des règles de réécriture
L'application des règles de réécriture n'est pas uniforme à travers différents CGRAs. Chaque architecture peut bénéficier de différents ensembles de règles en fonction de ses capacités spécifiques. Par exemple, certaines règles peuvent améliorer la performance pour des opérations en virgule flottante, tandis que d'autres se concentrent sur des opérations logiques.
Cette application ciblée de divers ensembles de règles garantit que le compilateur flexible CGRA peut maximiser les Performances en fonction des forces et faiblesses uniques de l'architecture.
Résultats des études expérimentales
De nombreux tests ont montré que le compilateur flexible CGRA peut augmenter significativement le nombre de boucles que divers CGRAs peuvent exécuter. En fait, selon l'architecture et le logiciel impliqué, certains CGRAs peuvent voir le nombre de boucles soutenues augmenter de plus du double.
Améliorations de performance
En termes pratiques, l'accélération moyenne observée lors de l'exécution du logiciel adapté sur des CGRAs est d'environ trois fois plus rapide que l'exécution des mêmes tâches sur des CPU standard. Ce bond substantiel en performance fait du compilateur flexible CGRA un développement captivant pour les industries cherchant à tirer parti du matériel spécialisé.
Conclusion
L'introduction d'un compilateur flexible CGRA qui s'attaque efficacement au problème des restrictions de domaine représente une avancée importante dans l'optimisation des systèmes de calcul spécialisés. En utilisant des techniques de réécriture avancées et des ensembles de règles soigneusement sélectionnés, cette approche permet une application plus large des CGRAs dans divers projets logiciels.
Avec une capacité accrue à faire fonctionner plus de logiciels efficacement et plus rapidement que les processeurs traditionnels, les CGRAs ont le potentiel de révolutionner la façon dont certaines tâches computationnelles sont gérées. À mesure que le paysage logiciel continue d'évoluer, avoir les outils pour adapter les applications existantes et futures au matériel spécialisé sera crucial pour maximiser la performance et l'efficacité des systèmes informatiques.
Ce progrès ouvre de nouvelles avenues pour le développement et l'innovation, rendant possible l'adaptation des technologies aux demandes changeantes plutôt que de devenir obsolètes. À mesure que les industries continuent d'explorer les avantages du matériel spécialisé, le compilateur flexible CGRA se distingue comme un élément clé dans le domaine de l'informatique.
Titre: Rewriting History: Repurposing Domain-Specific CGRAs
Résumé: Coarse-grained reconfigurable arrays (CGRAs) are domain-specific devices promising both the flexibility of FPGAs and the performance of ASICs. However, with restricted domains comes a danger: designing chips that cannot accelerate enough current and future software to justify the hardware cost. We introduce FlexC, the first flexible CGRA compiler, which allows CGRAs to be adapted to operations they do not natively support. FlexC uses dataflow rewriting, replacing unsupported regions of code with equivalent operations that are supported by the CGRA. We use equality saturation, a technique enabling efficient exploration of a large space of rewrite rules, to effectively search through the program-space for supported programs. We applied FlexC to over 2,000 loop kernels, compiling to four different research CGRAs and 300 generated CGRAs and demonstrate a 2.2$\times$ increase in the number of loop kernels accelerated leading to 3$\times$ speedup compared to an Arm A5 CPU on kernels that would otherwise be unsupported by the accelerator.
Auteurs: Jackson Woodruff, Thomas Koehler, Alexander Brauckmann, Chris Cummins, Sam Ainsworth, Michael F. P. O'Boyle
Dernière mise à jour: 2023-09-16 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2309.09112
Source PDF: https://arxiv.org/pdf/2309.09112
Licence: https://creativecommons.org/licenses/by/4.0/
Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.
Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.