Prospector : Discovering Parallelism via Dynamic Data-Dependence Profiling

Multiprocessor architectures are increasingly common these days. Unfortunately, writing correct and efficient parallel programs remains very challenging. Part of the reason is that software tools like execution profilers for parallel programming is still premature. At the same time, while many compilers support automatic parallelization, we find that they usually fail to parallelize C/C++ programs. In this paper, we propose Prospector, a new binary-instrumentation based profiler which dynamically detects frequently executed loops and the data dependences that they carry. We demonstrate that Prospector is able to discover parallelizable loops that are missed by state-of-the-art compilers.

[1]  Susan L. Graham,et al.  Gprof: A call graph execution profiler , 1982, SIGPLAN '82.

[2]  Ken Kennedy,et al.  Parascope:a Parallel Programming Environment , 1988 .

[3]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[4]  David B. Whalley,et al.  Tools for application-oriented performance tuning , 2001, ICS '01.

[5]  Allen,et al.  Optimizing Compilers for Modern Architectures , 2004 .

[6]  Arturo González-Escribano,et al.  The OpenMP source code repository , 2005, 13th Euromicro Conference on Parallel, Distributed and Network-Based Processing.

[7]  Harish Patil,et al.  Pin: building customized program analysis tools with dynamic instrumentation , 2005, PLDI '05.

[8]  James Reinders,et al.  Intel® threading building blocks , 2008 .

[9]  Dirk Grunwald,et al.  Identifying potential parallelism via loop-centric profiling , 2007, CF '07.

[10]  Konstantin Popov,et al.  Embla - Data Dependence Profiling for Parallel Programming , 2008, 2008 International Conference on Complex, Intelligent and Software Intensive Systems.