Finding parallel patterns through static analysis in C++ applications. (November 2018) - del Rio Astorga, David; Dolz, Manuel F; Sánchez, Luis Miguel; García, J Daniel; Danelutto, Marco; Torquati, Massimo
Since the 'free lunch' of processor performance is over, parallelism has become the new trend in hardware and architecture design. However, parallel resources deployed in data centers are underused in many cases, given that sequential programming is still deeply rooted in current software development. To address this problem, new methodologies and techniques for parallel programming have been progressively developed. For instance, parallel frameworks, offering programming patterns, allow expressing concurrency in applications to better exploit parallel hardware. Nevertheless, a large portion of production software, from a broad range of scientific and industrial areas, is still developed sequentially. Considering that these software modules contain thousands, or even millions, of lines of code, an extremely large amount of effort is needed to identify parallel regions. To pave the way in this area, this paper presents Parallel Pattern Analyzer Tool, a software component that aids the discovery and annotation of parallel patterns in source codes. This tool simplifies the transformation of sequential source code to parallel. Specifically, we provide support for identifyingMap, Farm, andPipeline parallel patterns and evaluate the quality of the detection for a set of different C++ applications.