Analytical Modeling of Pipeline Parallelism

Angeles Navarro, Rafael Asenjo, Siham Tabik and Calin Cascaval

Parallel programming is a requirement in the multi-core era. One of the most promising techniques to make parallel programming available for the general users is the use of parallel programming patterns. Functional pipeline parallelism is a pattern that is well suited for many emerging applications, such as streaming and "Recognition, Mining and Synthesis'' (RMS) workloads. In this paper we develop an analytical model for pipeline parallelism based on queueing theory. The model is useful to both characterize the performance and efficiency of existing implementations and to guide the design of new pipeline algorithms. We demonstrate how we used the model to characterize and optimize two of the PARSEC benchmarks, ferret and dedup. We identified two issues with these codes: load imbalance and I/O bottlenecks. We propose to address the I/O bottleneck using parallel I/O. We addressed load imbalance using two techniques: i) parallel pipeline stage collapsing; and ii) dynamic scheduling. We implemented these optimizations using Pthreads and the Threading Building Blocks (TBB) libraries. We compare the performance of different alternatives and we note that the TBB implementation outperforms all other variants. However, the current pipeline template supported by TBB is restrictive and we discuss extensions that will allow more flexible pipeline designs using this library.

Back to Program