OpenStream is a stream programming language, designed as an incremental extension to the OpenMP parallel programming language, and allowing to express arbitrary dependence patterns between tasks in the form of task-level data flow dependences. Programmers expose task parallelism while providing the compiler with data flow information, through compiler annotations (pragmas), used to generate code that dynamically builds a streaming program. It allows to exploit task, pipeline and data parallelism. The language is compiled by our publicly available GCC-based implementation and targets one of the two runtime implementations: a pure data-flow flavored library and a more classical stream-based implementation with a FIFO behaviour. Additionally, we provide a GCC back-end targeting the T* ISA extension to x86, which allows exploring large-scale (1000+ cores) data-flow architectures on a simulator.


OpenStream is currently supported by the Royal Academy of Engineering through a 5-year Research Fellowship and by the European Commission through the EU FET-HPC project ExaNoDe id. H2020-671578.

ExaNoDe logo               Royal Academy of Engineering

Previous Funding

OpenStream has also been supported by the European Commission through the FP7 projects TERAFLUX id. 249013 and PHARAON id. 288307 and by the EPSRC through grant id. EP/M004880/1.

Teraflux logo               Pharaon logo               EPSRC - Engineering and Physical Sciences Research Council