A Hybrid Approach to Parallel Pattern Discovery in C++

Parallel pattern libraries offer a strong combination of abstraction and performance. However, discovering places in sequential code where parallel patterns should be introduced is still highly non-trivial, often requiring expert manual analysis and profiling. We present a hybrid discovery technique to detect instances of parallel patterns in sequential code. This employs both static and dynamic trace-based analysis, together with hotspot detection. We evaluate our pattern discovery mechanism on a number of representative benchmarks. We evaluate the performance of the resulting parallelised benchmarks on a 24core parallel machine.

[1]  Felix Wolf,et al.  Automatic Parallel Pattern Detection in the Algorithm Structure Design Space , 2016, 2016 IEEE International Parallel and Distributed Processing Symposium (IPDPS).

[2]  Marco Danelutto,et al.  FastFlow: High-level and Efficient Streaming on Multi-core , 2017 .

[3]  Christoph W. Kessler,et al.  SkePU: a multi-backend skeleton programming library for multi-GPU systems , 2010, HLPP '10.

[4]  Björn Franke,et al.  Semi-automatic extraction and exploitation of hierarchical pipeline parallelism using profiling information , 2010, 2010 19th International Conference on Parallel Architectures and Compilation Techniques (PACT).

[5]  Luis Miguel Sánchez,et al.  Finding parallel patterns through static analysis in C++ applications , 2018, Int. J. High Perform. Comput. Appl..

[6]  Sanjay Ghemawat,et al.  MapReduce: Simplified Data Processing on Large Clusters , 2004, OSDI.

[7]  Zhen Li,et al.  Discovery of Potential Parallelism in Sequential Programs , 2013, 2013 42nd International Conference on Parallel Processing.

[8]  Manuel Selva,et al.  Data-flow/dependence profiling for structured transformations , 2019, PPoPP.

[9]  Koen De Bosschere,et al.  A profile-based tool for finding pipeline parallelism in sequential programs , 2010, Parallel Comput..

[10]  Alan Mycroft,et al.  Redux: A Dynamic Dataflow Tracer , 2003, RV@CAV.

[11]  Philippe Clauss,et al.  Profiling Data-Dependence to Assist Parallelization: Framework, Scope, and Optimization , 2012, 2012 45th Annual IEEE/ACM International Symposium on Microarchitecture.