# 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 ».