DiscoPoP is a tool that helps software developers parallelize their programs with threads. It discovers potential parallelism in a sequential program and makes recommendations on how to exploit it using OpenMP. Because a compiler does not know the precise value of pointers and array indices computed at runtime, it may assume parallelism-preventing data dependences in places where they would never occur in practice. As a result, parallelization becomes too conservative.
With our parallelism discovery tool DiscoPoP, we aim to circumvent this problem. We abandon the idea of fully automatic parallelization and instead point the programmer to likely parallelization opportunities that we identify via a combination of static and dynamic dependence analysis. In this way, we consider only data dependences that may actually occur. From these dynamic dependences we derive possible parallel design patterns including pipeline, doall, geometric decomposition, reduction, and task parallelism. Finally, DiscoPoP recommends programmers how to parallelize programs using OpenMP.
A joint project of Technical University of Darmstadt and Iowa State University