OpenStreamOpenStream 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.
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.