<p><span>Eclat</span> is a general-purpose <span>OCaml</span>-like programming language with synchronous semantics for designing reactive hardware applications on FPGAs. It is compiled down to hardware descriptions to realize computations as intrinsically parallel circuits able to interact with the physical world. This paper presents a formalization of <span>Eclat</span> with shared memory and mutability, handling concurrent memory accesses while preserving determinacy. The language is precise enough to express efficient circuits with fine control over throughput, parallelism and time–space trade-off. It also enables abstraction by letting the programmer implement, reuse and compose algorithmic skeletons such as <i>map</i> and <i>pipe</i>. The synchronous approach makes it possible to estimate the execution time of parallel programs by simple reasoning on source code for quick prototyping and optimization.</p>

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Programming Parallelism on FPGAs with Eclat

  • Loïc Sylvestre,
  • Jocelyn Sérot,
  • Emmanuel Chailloux

摘要

Eclat is a general-purpose OCaml-like programming language with synchronous semantics for designing reactive hardware applications on FPGAs. It is compiled down to hardware descriptions to realize computations as intrinsically parallel circuits able to interact with the physical world. This paper presents a formalization of Eclat with shared memory and mutability, handling concurrent memory accesses while preserving determinacy. The language is precise enough to express efficient circuits with fine control over throughput, parallelism and time–space trade-off. It also enables abstraction by letting the programmer implement, reuse and compose algorithmic skeletons such as map and pipe. The synchronous approach makes it possible to estimate the execution time of parallel programs by simple reasoning on source code for quick prototyping and optimization.