Exploiting parallelism with dependence-aware scheduling
Xiaotong Zhuang, Alexandre E. Eichenberger, et al.
PACT 2009
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 the usefulness of the model by characterizing and optimizing two of the PARSEC benchmarks, ferret and dedup. We identified two issues with these codes: load imbalance and I/O bottlenecks. 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 based on work stealing outperforms all other variants.
Xiaotong Zhuang, Alexandre E. Eichenberger, et al.
PACT 2009
Xiaorui Wang, Ming Chen, et al.
PACT 2009
Angeles Navarro, Rafael Asenjo, et al.
ICS 2009
Konrad Trifunovic, Dorit Nuzman, et al.
PACT 2009