sakkmesterke - Fotolia
ARM dévoile des extensions vectorielles pour le HPC
ARM s'intéresse au calcul numérique. La firme britannique a dévoilé hier un jeu d'extensions vectorielles à son architecture ARMv8, baptisé Scalable Vector Extensions et à même de traiter des vecteurs allant jusqu'à 2048 bit.
ARM a profité cette année de la conférence HotChips pour dévoiler une nouvelle série d’extensions vectorielles pour son architecture ARMv8-A, les extensions SVE (Scalable Vector Extensions) . L’objectif de la firme anglaise est de renforcer son attrait face à l’architecture x86 dans le monde du HPC. Un attrait illustré récemment par Fujitsu qui a choisi l’architecture ARM pour développer le successeur du supercluster petaflopique K de l’institut Riken au Japon [ K est le 5e supercalculateur au monde au classement Top 500].
ARM avait déjà marqué son intérêt pour le monde du HPC l’an passé en annonçant une série de librairies optimisées pour le calcul à haute performance, les ARM Performance Libraries (incluant notamment des packages comme BLAS, FFT, LAPACK et des librairies comme, ATLAS, NumPy, OpenMPI ou TAU).
Cette fois-ci toutefois, c’est une extension fondamentale de son jeu d’instruction que la société propose à ses licenciés. Les concepteurs de processeurs utilisant déjà l’architecture ARMv8 et désireux d’optimiser leurs puces pour les applications HPC pourront licencier séparément les extensions SVE afin d’ajouter à leurs puces des capacités de traitements de vecteurs de 128 bit à 2048 bit.
Il s’agit dans la pratique de créer au côté des cœurs ARMv8 des unités vectorielles spécialisées qui seront à même de traiter de façon optimisée des opérations matricielles de façon bien plus massive que l’actuel jeu d’instructions SIMD NEON d’ARM (NEON est intégré à l’architecture ARMv8).
Une architecture capable de traiter des vecteurs jusqu'à 2048 bit
ARM indique qu’il va prochainement soumettre des correctifs pour les compilateurs GCC et LLVM qui supporteront la vectorisation automatique du code. Dans la pratique, cela veut dire qu’une fois ces correctifs intégrés à GCC et LLVM, les développeurs n’auront pas à modifier eux-mêmes leur code pour tirer parti de SVE. Les compilateurs seront automatiquement à même de détecter les portions de code vectorisables et de générer les instructions nécessaires pour tirer parti de SVE. Dans la pratique cela veut dire qu’un code ainsi compilé pourra tirer parti des extensions SVE si elles sont présentes sur le processeur sur lequel le code s’exécute.
Cerise sur le gâteau, peu importe si l’implémentation de SVE sur le processeur cible est une implémentation à 512 bit, 1024 bit ou 2048 bit. Du fait de leur nature « scalable », les instructions SVE sont découpables par le processeur cible. Ainsi une puce ne supportant que les extensions SVE à 512 bit traitera une instruction SVE 2048 bit en la fragmentant en 4 vecteurs de 512 bit. À l’inverse, une puce SVE à 2048 bit confronté à des vecteurs de 512 bit pourra les agréger pour optimiser les performances.
Sans surprise, Fujitsu sera le premier à licencier les extensions SVE. LA firme a d’ailleurs annoncé hier à HotChips que sa première puce implémentant SVE sera la puce utilisée pour le successeur du supercalculateur K et qu’elle supportera des vecteurs de 512 bit. Le successeur de K doit selon Fujitsu atteindre la barre de l’Exaflop une fois l’ensemble de ses composants installés, à l’horizon 2019/2020.