Feng Li, Antoniu Pop, Albert Cohen. Advances in Parallel-Stage Decoupled Software Pipelining. In Florent Bouchez, Sebastian Hack, Eelco Visser, editors, Proceedings of the Workshop on Intermediate Representations. pages 29-36, 2011.
Decoupled Software Pipelining (DSWP) is a thread partitioning method enabling compilers to extract pipeline parallelism from sequential programs. Parallel Stage DSWP (PS-DSWP) is an extension that also exploits the data parallelism within pipeline filters.
This paper presents a new method, inspired from loop distribution, for automatically extracting pipeline and data parallelism from serial programs. We provide a nested/structured partitioning algorithms based on the hierarchy of control dependences, and with the support of a stream extension of OpenMP as a back-end, we use nested-tasks for generating fine grained and structured stream code, without copying the conditional nodes. We use the Single Static Assignment (SSA) form as an intermediate representation, which could easily generate code for multiple producers and multiple consumers and reduce the complexity of building the scalar dependences.