[AHUG SC'20] Portage de BLIS vers SVE

Find AI Tools
No difficulty
No complicated process
Find ai tools

[AHUG SC'20] Portage de BLIS vers SVE

Table of Contents:

  1. Introduction
  2. Investigating Future Arm-Based Architectures for Supercomputers
    • 2.1 Scalable Vector Extension (SVE)
    • 2.2 Comparison with Other Vector Extensions
    • 2.3 Potential Implementations of SVE
  3. The Advantages of SVE for Bliss Framework
  4. Implementing Bliss Kernels with SVE
    • 4.1 Vector Length Agnostic Programming with SVE
    • 4.2 Optimized Microkernels for Bliss Framework
    • 4.3 Handling Kernel Sizes and Block Sizes
  5. Evaluating Performance of SVE Kernels
    • 5.1 Performance testing on Simulated Cores
    • 5.2 Promising Results on ARM Neoverse and Huawei Kunpeng 920
    • 5.3 Future Performance on SVE Hardware
  6. Conclusion
  7. Resources

🏭 Investigating Future Arm-Based Architectures for Supercomputers

L'industrie des supercalculateurs est en constante évolution, et de nouvelles architectures prometteuses émergent pour répondre aux besoins de calcul intensif. Dans cette optique, une attention particulière est portée sur le développement de futures architectures basées sur ARM. Plus précisément, l'attention se porte sur la nouvelle extension vectorielle évolutive (SVE) pour les architectures ARM.

🔎 Scalable Vector Extension (SVE)

L'extension vectorielle évolutive (SVE) est la successeure du NEON, la précédente extension vectorielle fixe. Contrairement à NEON, SVE utilise une approche différente où la taille du vecteur n'est pas connue du programmeur. Elle reste fixe au niveau matériel, sauf si le processeur dispose d'une fonctionnalité spéciale permettant une reconfiguration. La taille du vecteur est contrainte à des multiples de 128 bits, avec une taille maximale de 2048 bits.

🔄 Comparison with Other Vector Extensions

SVE se distingue des autres extensions vectorielles telles que AVX2 et AVX-512 sur l'architecture x86, qui utilisent des registres vectoriels fixes de 256 bits et 512 bits respectivement. Bien que SVE ne nécessite pas nécessairement des registres SMD plus grands que NEON, il est raisonnable de supposer que les premières implémentations proposeront des tailles de puissance de deux, similaires à AVX-512.

Un exemple de système basé sur ARM avec SVE est le système Fugaku de RIKEN, qui est actuellement classé en première place dans le TOP500. Le système Fugaku est basé sur les processeurs A64FX de Fujitsu, qui utilisent deux unités SVE de 512 bits.

💡 Potential Implementations of SVE

Plusieurs entreprises proposent déjà des systèmes HPC (High-Performance Computing) basés sur ARM, et elles prévoient d'offrir des produits compatibles avec SVE à l'avenir. Parmi les processeurs actuellement disponibles pour les tests, on peut citer l'Arm Neoverse N1, le Marvell ThunderX2 et le Huawei Kunpeng 920. Ces processeurs prennent en charge NEON, la précédente extension vectorielle ARM.


🚀 The Advantages of SVE for Bliss Framework

Le framework Bliss est une plateforme logicielle permettant d'instancier des bibliothèques de calcul intensif en algèbre linéAire dense, similaire à BLAS (Basic Linear Algebra Subprograms). L'un des avantages de ce framework est sa capacité à optimiser la plupart de ses opérations couramment utilisées en implémentant quelques micro-noyaux optimisés.

SVE offre de nombreux outils pour réaliser une programmation agnostique de la longueur du vecteur. Il met à disposition des prédicats pouvant masquer des éléments, des instructions permettant de les générer, ainsi que des outils pour le contrôle de boucles sans nécessiter de cas particuliers pour les éléments restants de la largeur du vecteur. Ces fonctionnalités sont particulièrement intéressantes pour les noyaux utilisés par Bliss.


✍ Implementing Bliss Kernels with SVE

Pour tirer pleinement parti de SVE dans le framework Bliss, nous avons implémenté des micro-noyaux pour les opérations de multiplication de matrices en précision simple (SGEMM) et double (DGEMM), ainsi que pour les opérations en précision double complexe (ZGEMM). Le point clé de ces micro-noyaux est de permettre une programmation agnostique de la longueur du vecteur grâce à SVE.

🔗 Vector Length Agnostic Programming with SVE

Grâce à SVE, il est désormais possible de compiler du code une seule fois et de l'exécuter sur n'importe quel processeur ARM compatible avec SVE. Le programmeur n'a plus besoin de connaître la taille du vecteur à l'avance, ce qui facilite le développement de codes portables. Cependant, cela ne garantit pas automatiquement une optimisation optimale.

✔ Optimized Microkernels for Bliss Framework

Bliss se distingue par ses micro-noyaux optimisés permettant de réaliser des opérations intensives en calcul simultané. Cela est rendu possible grâce aux outils offerts par SVE, tels que le masquage des éléments avec des prédicats, les instructions pour générer ces prédicats, ainsi que les boucles de contrôle sans cas particuliers pour les éléments restants de la largeur du vecteur.

📐 Handling Kernel Sizes and Block Sizes

Pour rendre les noyaux Bliss plus flexibles et adaptés à différentes tailles de problèmes, nous avons mis en œuvre une approche permettant de déterminer la taille des blocs à l'exécution. Cela nous permet de choisir dynamiquement les blocs pour chaque exécution en fonction de la taille du problème, améliorant ainsi l'efficacité des calculs.


📊 Evaluating Performance of SVE Kernels

Nous avons effectué des tests de performance sur des cœurs simulés et des processeurs réels pour évaluer les performances des noyaux Bliss utilisant SVE.

💻 Performance Testing on Simulated Cores

Nous avons utilisé le simulateur Gem5 pour évaluer les performances des micro-noyaux Bliss sur des cœurs ARM simulés. Les résultats ont été prometteurs, atteignant une efficacité de plus de 90% pour des tailles de problèmes importantes.

📈 Promising Results on ARM Neoverse and Huawei Kunpeng 920

Nous avons également testé nos noyaux Bliss sur des processeurs réels, tels que ARM Neoverse et Huawei Kunpeng 920. Les résultats montrent une performance très encourageante, avec une efficacité de plus de 90% de la puissance théorique du processeur.

📅 Future Performance on SVE Hardware

Nous prévoyons de publier les résultats de nos tests sur les processeurs A64FX d'ici la fin du mois. Nous continuerons à évaluer les performances des noyaux Bliss sur du matériel réel compatible avec SVE afin de fournir des informations plus détaillées sur les gains de performance attendus.


💡 Conclusion

L'extension vectorielle évolutive (SVE) offre de nouvelles possibilités pour les architectures ARM dans le domaine des supercalculateurs. En adoptant cette nouvelle technologie, Bliss Framework bénéficie de performances améliorées grâce à la programmation agnostique de la longueur du vecteur et à l'optimisation des micro-noyaux. Nos tests préliminaires sur des simulateurs et des processeurs réels ont montré des résultats prometteurs. Nous continuerons d'explorer les avantages et les performances de SVE pour offrir des supercalculateurs plus puissants.


🌐 Resources


🙋 FAQ

Q: Quelle est la différence entre SVE et NEON ?
R: SVE est la successeure de NEON et offre une approche différente pour les extensions vectorielles ARM. Contrairement à NEON, la taille du vecteur n'est pas connue du programmeur et elle est fixée au niveau matériel. SVE offre également des fonctionnalités avancées pour une programmation agnostique de la longueur du vecteur.

Q: Quels sont les avantages de SVE pour le framework Bliss ?
R: SVE offre des outils qui permettent une programmation agnostique de la longueur du vecteur, ce qui facilite le développement de codes portables. De plus, SVE permet d'optimiser les micro-noyaux utilisés par Bliss, ce qui améliore les performances des calculs intensifs en algèbre linéaire dense.

Q: Quels sont les résultats de performance obtenus avec SVE ?
R: Les tests réalisés sur des cœurs simulés et des processeurs réels ont montré des résultats prometteurs, avec une efficacité de plus de 90% pour des tailles de problèmes importantes. Les résultats détaillés seront publiés prochainement.

Q: Où puis-je trouver plus d'informations sur le travail réalisé avec SVE pour Bliss ?
R: Vous pouvez consulter le dépôt public de Bliss avec la branche SVE pour plus d'informations. Assurez-vous de lire le fichier README_sve pour des détails supplémentaires.

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.