Des FPGA chez Aneo ?

HPC
Écrit par Damien Dubuc, le 06 février 2018

 

Aneo est présent chez différents clients dont le besoin en performance de calcul est important, particulièrement dans la finance et dans l'industrie. Nous nous intéressons tant aux aspects fonctionnels que technologiques permettant de répondre à leur besoin.

La recherche de performance en calcul scientifique et parallèle est l'une de nos thématiques principales, les technologies sont nombreuses et nous essayons de rester le plus pert inent possible. Chez Aneo, nous disposons d'une équipe d'une dizaine de membres ayant une expérience importante en architectures parallèles de type Components off-the-Shelf (COTS). Ces processeurs sont les multicoeurs x86 d'Intel ou AMD, l'architecture POWER d'IBM, les puces basse consommation d'ARM, les GPU de NVIDIA ou AMD ou encore le Xeon Phi d'Intel. Notre expérience autour des aspects de compilation, vectorisation ou de SMT (Simultaneous Multithreading) nous a permis de nous retrouver face à de nombreux langages et outils. C'est dans l'optique d'élargir ces connaissances que nous avons souhaité approcher le FPGA.

En quelques mots, c'est quoi un FPGA ?

Un FPGA, Field-Programmable Gate Array ou Circuit Logique Programmable, est un circuit qui peut être reprogrammé après sa fabrication. A l’inverse d’un hardware figé comme celui des architectures COTS, le FPGA est donc une architecture flexible, composée de millions de portes logiques, lookup tables, registres, unités arithmétiques et d’un interconnect les reliant. Toutes ces ressources peuvent se reconfigurer de manière à générer les opérations logiques et arithmétiques ainsi que les espaces mémoires afin de définir une architecture sur-mesure par rapport à une application, juste avant son exécution sur le FPGA. L’étape de reconfiguration du FPGA nécessitait habituellement un travail de fond et de design poussés, passant par des langages très spécifiques dits Hardware Description Languages comme le VHDL ou Verilog. Ci-dessous, une vue schématisée des trois composants principaux de cette architecture.

Trois raisons de reparler du FPGA aujourd'hui

Cela fait pourtant bien longtemps que les FPGA sont utilisés dans l'industrie, alors, pourquoi s'y intéresser maintenant et dans quel contexte ?

Plusieurs raisons nous ont amené à cette étude. Tout d'abord, Altera a proposé en 2014 un SDK qui se propose de générer la configuration FPGA, appelée design, à partir de kernels écrits en OpenCL. OpenCL est un langage de programmation qui permet de développer des applications visant des architectures hétérogènes, avec une API en C/C++. Sur GPU, il est notamment connu pour être une des rares alternatives au langage CUDA de NVIDIA qui ne permet de s’adresser qu’aux produits de ce même constructeur. Le FPGA apparait donc comme plus attractif pour la communauté du calcul parallèle et scientifique, notamment grâce à la généricité d'un langage plus familier qui permettait déjà de s'adresser à plusieurs architectures communément utilisées.

La seconde raison est que les performances en calcul flottant FPGA commencent en 2016 à arriver à un niveau prometteur : elles étaient jusque là bien en dessous de ce qu'un GPU pouvait fournir. L'utilisation du FPGA pourrait-donc bien se démocratiser auprès de nombreux professionnels en quête de performance, si tant est qu'il est approprié pour leurs applications.

Enfin, la consommation énergétique des FPGA est bien moins élevée que celle d'autres composants connus. A l'heure où la tendance est d'utiliser toujours de plus en plus de multiprocesseurs et accélérateurs en parallèle pour chercher plus de performance (des industriels comme des centres de recherche possèdent des systèmes utilisant jusqu'à des millions de cœurs de calculs), alléger la facture EDF et réduire ses dépendances en énergie peut faire beaucoup de bien.

Bref, le FPGA c'est un peu trendy en ce moment. Entre le rachat du constructeur ALTERA par Intel fin 2015, l'approche avec Xiliinx sur l'architecture IBM POWER, Microsoft et Amazon ajoutant respectivement des FPGA dans leurs clouds Azure et EC2 et le chinois Baïdu qui les utilisés pour faire du machine learning dans ses (gros) datacenters… On ne manque pas de prétextes pour s'intéresser au sujet.

Tous ces arguments pourraient à eux-seul nous motiver à réaliser une étude sur les FPGA ; cela-dit, ces arguments sont dans notre cas principalement des éléments déclencheurs. En effet, le moteur derrière cette étude est d'enrichir notre capacité à accompagner nos clients dans les domaines connexes au HPC. Et donc une des questions naturelles qu'ANEO se pose c'est notamment la question du trade-off gain de performance versus coût de portage d’une application vers cette architecture.

Cadrage de l'étude

Dans ce cadre, nous avons ouvert un partenariat avec les sociétés Bittware et EMG2 ainsi que la société Altera, ce qui nous a permis d'obtenir un accès temporaire à une machine disposant d'une carte FPGA Stratix V S5PH-Q D8 ainsi qu'à l'ensemble des outils du SDK OpenCL (version 14.1 au moment de l'étude). L'objectif principal du partenariat était d'appréhender l'architecture au travers d'un langage haut-niveau et d'évaluer notre capacité à répondre à un client qui souhaiterait industrialiser une solution de ce type ou accompagner sa montée en compétence.

Pour ce faire, nous avons sélectionné une application très connue, le cryptage AES 128-bit. Nous sommes partis d'une implémentation séquentielle en C que nous avons portée tout d'abord sur GPU en CUDA, puis en OpenCL. Nous avons ensuite porté cette implémentation sur FPGA. Nous avons décidé de repartir d'une implémentation naturelle et de ne pas utiliser d'implémentations déjà optimisées pour une architecture donnée.

Notre étude a été réalisée durant l'été 2015. Depuis, une nouvelle génération de FPGA est arrivée et les capacités de calculs flottants continuent de s'améliorer. Cela dit, nous avons préféré nous concentrer sur une application qui puisse tirer partie au mieux des forces du FPGA et nous sommes donc partis sur une application utilisant du calcul sur les entiers. De plus, l'étude s'intéresse davantage à la prise en main du SDK et à l'expérience utilisateur du point de vue des difficultés, perspectives ou encore des méthodologies, plutôt que de la performance brute: nous ne sommes pas experts FPGA.

Notre étude est couverte par une série de billets abordant les points suivant :

  • Architecture des FPGA et intégration
  • Conversion GPU/CUDA vers FPGA/OpenCL
  • Présentation du SDK OpenCL d'Altera
  • Présentation de l'AES et portage du CPU vers le GPU
  • Design FPGA Single Work-Item
  • Design FPGA vectorisé
  • Mémoire constante
  • Perspectives

Nous espérons que cet article a su éveiller votre intérêt sur le FPGA et nous vous retrouvons bientôt pour parler un peu plus précisément de son architecture et ses différentes possibilités d'intégration.