Programmation en FPGA avec Eclat : tests de performance, squelettes de parallélisme et chaîne de compilation libre
Objectif
Les FPGA ([1] field-programmable gate arrays) sont des circuits numériques configurables par logiciel pour implémenter des calculs sur-mesure. Ces circuits sont particulièrement appréciés pour la spécialisation et la parallélisation de certaines tâches.
La programmation de FPGA se fait habituellement dans un langage de description de matériel comme VHDL ou Verilog qui sont assez éloignés des langages algorithmiques. Pour une programmation de plus haut niveau, on développe le langage Eclat [2] qui permet de mixer calculs et interactions sur FPGA.
Un programme Eclat est traduit en VHDL puis synthétisé sur des cartes FPGA Orange-Crab (resp. DE-10 Lite) via l’environnement yosis-npr (resp. Quartus d’Intel). Ce VHDL peut aussi être exécuté sur PC en utilisant des outils de simulation tel GHDL [3]. Celui-ci permet aussi d'effectuer une estimation du temps d'exécution. Enfin le programme Eclat peut être traduit en OCaml [4], compilé et exécuté directement sur PC. Dans ce dernier cas certaines fonctions, non prises en compte dans la compilation en VHDL, permettent d'afficher des traces de l'exécution.
L'objectif de ce stage est d'enrichir les tests de performance sur des programmes réalistes, en particulier de comparer les styles fonctionnels et impératifs, y compris à base de squelettes de parallélisme, pour décrire les calculs pour fournir un nouvel ensemble d'applications Eclat illustrant ces différences.
Tâches à réaliser
Une première tâche sera la prise en main de l'environnement Eclat en testant les différentes chaînes de compilation d'Eclat (chaîne libre de la plateforme OrangeCrab, chaîne Intel sur la carte DE-Lite 10) en particulier sur l'utilisation des "blocs RAM" pour les tableaux en et testant la communication avec les périphériques externes (boutons poussoirs, LED, ...). On pourra s'intéresser à d'autres plateformes (Xylinx, Basys, ...).
Les tâches suivantes consistent :
- à sélectioner des applications de taille moyenne permettant de comparer les styles fonctionnel avec copie des valeurs et impératif avec modifications physiques, et la facilité de les paralléliser en fonction du style choisi ;
- de proposer de nouveaux squelettes de parallélisme liés à ces styles
- de les implanter en s'intéressant au côté prédictif qu'apporte le système de types d'Eclat.
Prérequis
- avoir des bases de programmation en C et en OCaml
- la connaissance de la programmation FPGA est un plus
Références
- Jocelyn. Sérot. La programmation des circuits FPGA et le langage VHDL. Une introduction pour les programmeurs et par l’exemple. Ellipse, 2019.
- Loïc Sylvestre, "Programmation sûre, expressive et efficace de circuits FPGA", thèse de doctorat de Sorbonne Université, nov 2024.
- http://ghdl.free.fr/
- https://ocaml.org/
Le stagiaire devra être d'accord pour que ses contributions soient distribuées sous licence libre.
Contacts : Contacts : Emmanuel Chailloux & Jocelyn Sérot & Loïc Sylvestre
IRILL - Research and Innovation on Free Software