{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,8,1]],"date-time":"2025-08-01T03:54:03Z","timestamp":1754020443953,"version":"3.38.0"},"reference-count":21,"publisher":"SAGE Publications","issue":"6","license":[{"start":{"date-parts":[[2017,3,9]],"date-time":"2017-03-09T00:00:00Z","timestamp":1489017600000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/journals.sagepub.com\/page\/policies\/text-and-data-mining-license"}],"content-domain":{"domain":["journals.sagepub.com"],"crossmark-restriction":true},"short-container-title":["The International Journal of High Performance Computing Applications"],"published-print":{"date-parts":[[2018,11]]},"abstract":"<jats:p> Since the \u2018free lunch\u2019 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 identifying Map, Farm, and Pipeline parallel patterns and evaluate the quality of the detection for a set of different C++ applications. <\/jats:p>","DOI":"10.1177\/1094342017695639","type":"journal-article","created":{"date-parts":[[2017,3,10]],"date-time":"2017-03-10T03:52:43Z","timestamp":1489117963000},"page":"779-788","update-policy":"https:\/\/doi.org\/10.1177\/sage-journals-update-policy","source":"Crossref","is-referenced-by-count":11,"title":["Finding parallel patterns through static analysis in C++ applications"],"prefix":"10.1177","volume":"32","author":[{"given":"David","family":"del Rio Astorga","sequence":"first","affiliation":[{"name":"Department of Computer Science, University Carlos III of Madrid, Spain"}]},{"given":"Manuel F","family":"Dolz","sequence":"additional","affiliation":[{"name":"Department of Computer Science, University Carlos III of Madrid, Spain"}]},{"given":"Luis Miguel","family":"S\u00e1nchez","sequence":"additional","affiliation":[{"name":"Department of Computer Science, University Carlos III of Madrid, Spain"}]},{"given":"J Daniel","family":"Garc\u00eda","sequence":"additional","affiliation":[{"name":"Department of Computer Science, University Carlos III of Madrid, Spain"}]},{"given":"Marco","family":"Danelutto","sequence":"additional","affiliation":[{"name":"Department of Computer Science, University of Pisa, Italy"}]},{"given":"Massimo","family":"Torquati","sequence":"additional","affiliation":[{"name":"Department of Computer Science, University of Pisa, Italy"}]}],"member":"179","published-online":{"date-parts":[[2017,3,9]]},"reference":[{"key":"bibr1-1094342017695639","doi-asserted-by":"publisher","DOI":"10.1177\/109434209100500306"},{"key":"bibr2-1094342017695639","doi-asserted-by":"publisher","DOI":"10.1145\/2633448.2633453"},{"key":"bibr3-1094342017695639","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-35887-6_13"},{"key":"bibr4-1094342017695639","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-15940-9_2"},{"key":"bibr5-1094342017695639","doi-asserted-by":"publisher","DOI":"10.1145\/2883404.2883411"},{"key":"bibr6-1094342017695639","unstructured":"ISO\/IEC 14882:20111 (2011) Information technology\u2014Programming languages\u2014C++."},{"key":"bibr7-1094342017695639","doi-asserted-by":"publisher","DOI":"10.1016\/j.procs.2015.05.365"},{"key":"bibr8-1094342017695639","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-16012-2_3"},{"volume-title":"Patterns for Parallel Programming","year":"2004","author":"Mattson TG","key":"bibr9-1094342017695639"},{"volume-title":"Structured Parallel Programming: Patterns for Efficient Computation","year":"2012","author":"McCool M","key":"bibr10-1094342017695639"},{"key":"bibr11-1094342017695639","doi-asserted-by":"publisher","DOI":"10.1145\/2024445.2024447"},{"key":"bibr12-1094342017695639","doi-asserted-by":"publisher","DOI":"10.1145\/2712386.2712392"},{"key":"bibr13-1094342017695639","unstructured":"Pouchet LN, Bondhugula U, Bastoul C, (2009) Hybrid iterative and model-driven optimization in the polyhedral model. Technical Report 6962, INRIA Research Report."},{"volume-title":"Intel Threading Building Blocks-Outfitting C++ for Multi-Core Processor Parallelism","year":"2007","author":"Reinders J","key":"bibr14-1094342017695639"},{"key":"bibr15-1094342017695639","unstructured":"Repara (2016) Reengineering and Enabling Performance And poweR of Applications. Available at: http:\/\/repara-project.eu\/1 st October 2016."},{"key":"bibr16-1094342017695639","unstructured":"RePhrase (2016) RePhrase: Refactoring parallel heterogeneous resource-aware applications\u2014a software engineering approach. Available at: http:\/\/rephrase-eu.weebly.com\/ 1 st October 2016."},{"key":"bibr17-1094342017695639","doi-asserted-by":"publisher","DOI":"10.1016\/j.parco.2010.05.006"},{"key":"bibr18-1094342017695639","doi-asserted-by":"publisher","DOI":"10.1007\/s00354-013-0301-5"},{"key":"bibr19-1094342017695639","first-page":"44","volume-title":"IEEE international symposium on workload characterization","author":"Shuai C","year":"2009"},{"key":"bibr20-1094342017695639","unstructured":"Sutter H (2012) Welcome to the jungle. Available at: http:\/\/herbsutter.com\/welcome-to-the-jungle\/ (accessed 20 October 2016)."},{"key":"bibr21-1094342017695639","doi-asserted-by":"publisher","DOI":"10.1145\/1854273.1854321"}],"container-title":["The International Journal of High Performance Computing Applications"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/journals.sagepub.com\/doi\/pdf\/10.1177\/1094342017695639","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/journals.sagepub.com\/doi\/full-xml\/10.1177\/1094342017695639","content-type":"application\/xml","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/journals.sagepub.com\/doi\/pdf\/10.1177\/1094342017695639","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,2,28]],"date-time":"2025-02-28T19:06:05Z","timestamp":1740769565000},"score":1,"resource":{"primary":{"URL":"https:\/\/journals.sagepub.com\/doi\/10.1177\/1094342017695639"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2017,3,9]]},"references-count":21,"journal-issue":{"issue":"6","published-print":{"date-parts":[[2018,11]]}},"alternative-id":["10.1177\/1094342017695639"],"URL":"https:\/\/doi.org\/10.1177\/1094342017695639","relation":{},"ISSN":["1094-3420","1741-2846"],"issn-type":[{"type":"print","value":"1094-3420"},{"type":"electronic","value":"1741-2846"}],"subject":[],"published":{"date-parts":[[2017,3,9]]}}}