# En même temps mais dans l'ordre : une approche synchrone pour la programmation parallèle sur FPGA
_by Loïc Sylvestre (Lip6) - 2024.05.24_
###### tags: `VAADER` `Seminar`
![SmileDimensions](https://hackmd.io/_uploads/Skp08VFkR.png)
## Abstract
Eclat est un langage de programmation généraliste, compilé
au niveau transfert de registres, pour concevoir et implanter
des applications matérielles réactives sur des circuits FPGA.
Le langage unifie plusieurs styles de programmation (synchrone,
parallèle, fonctionnel-impératif), tout en offrant un contrôle
fin du débit et du parallélisme dans les applications. L'un des
intérêts de cet approche synchrone est que le temps d'exécution
du code source Eclat (en nombre de cycles d'horloge) est souvent
prédictible, ce qui facilite grandement l'optimisation des
programmes parallèles.
Comme exemples d'applications, nous comparerons trois variations
du Jeu de la vie (l'automate cellulaire bien connu), illustrant
comment l'on peut exploiter le parallélisme à grains fins sur un
FPGA avec Eclat. Nous montrerons aussi qu'Eclat est suffisamment
précis et expressif pour encoder des mécanismes de concurrence
avec mémoire partagée. La programmeuse ou le programmeur peut
alors utiliser ces mécanismes pour implanter, directement en Eclat,
des squelettes de parallélisme comme « map » et « pipe ».