Multithreaded Code from Synchronous Programs: Generating Software Pipelines for OpenMP.

Daniel Baudisch, Jens Brandt, Klaus Schneider · MBMV · 2010

In this paper, we describe an automatic synthesis procedure that translates synchronous programs to software pipelines, i.e. to multithreaded software systems whose sequential threads form single stages of a pipeline which are connected by FIFO buffers. The single-loop form that is required for pipelining is thereby already given by a pre-processing step that translates the synchronous programs to synchronous guarded actions. These synchronous guarded actions are analyzed in terms of their data-dependencies to define legal partitions into pipeline stages. Given such a legal partitioning into pipeline stages, the presented synthesis procedure automatically identifies potential pipeline conflicts and implements code for forwarding (if possible) while stalling is implicitly given by the FIFO buffers. Finally, the sequential threads for the conflict-free pipeline stages are implemented in OpenMP-based C-code. We demonstrate the usefulness of our approach by some preliminary experimental results.

Read the paper · More papers on PaperTik