Skip to content

Research at St Andrews

Refactoring GrPPI: generic refactoring for generic parallelism in C++

Research output: Contribution to journalArticlepeer-review

Author(s)

Christopher Mark Brown, Vladimir Janjic, Adam David Barwell, Jose Daniel Garcia, K. MacKenzie

School/Research organisations

Abstract

The Generic Reusable Parallel Pattern Interface (GrPPI) is a very useful abstraction over different parallel pattern libraries, allowing the programmer to write generic patterned parallel code that can easily be compiled to different backends such as FastFlow, OpenMP, Intel TBB and C++ threads. However, rewriting legacy code to use GrPPI still involves code transformations that can be highly non-trivial, especially for programmers who are not experts in parallelism. This paper describes software refactorings to semi-automatically introduce instances of GrPPI patterns into sequential C++ code, as well as safety checking static analysis mechanisms which verify that introducing patterns into the code does not introduce concurrency-related bugs such as race conditions. We demonstrate the refactorings and safety-checking mechanisms on four simple benchmark applications, showing that we are able to obtain, with little effort, GrPPI-based parallel versions that accomplish good speedups (comparable to those of manually-produced parallel versions) using different pattern backends.
Close

Details

Original languageEnglish
Number of pages23
JournalInternational Journal of Parallel Programming
VolumeFirst Online
Early online date10 Jul 2020
DOIs
Publication statusE-pub ahead of print - 10 Jul 2020

    Research areas

  • Refactoring, Parallelism, Parallel patterns, TBB, C++, GrPI, C++ threads

Discover related content
Find related publications, people, projects and more using interactive charts.

View graph of relations

Related by author

  1. Programming heterogeneous parallel machines using refactoring and Monte-Carlo tree search

    Brown, C. M., Janjic, V., Goli, M. & McCall, J., Aug 2020, In: International Journal of Parallel Programming. 48, 4, p. 583–602 20 p.

    Research output: Contribution to journalArticlepeer-review

  2. Restoration of legacy parallelism in C and C++ applications

    Brown, C. M., Barwell, A. D. & Janjic, V., 1 Jul 2020, (Accepted/In press).

    Research output: Contribution to conferencePaperpeer-review

  3. A hybrid approach to parallel pattern discovery in C++

    Brown, C. M., Janjic, V., Barwell, A. D., Thomson, J. D., Castañeda Lozano, R., Cole, M., Franke, B., Garcia-Sanchez, J. D., Del Rio Astorga, D. & MacKenzie, K., 14 May 2020, 2020 28th Euromicro International Conference on Parallel, Distributed and Network-Based Processing (PDP). IEEE Computer Society, 5 p. 9092377. (Proceedings - Euromicro Workshop on Parallel and Distributed Processing).

    Research output: Chapter in Book/Report/Conference proceedingConference contribution

  4. A trustworthy framework for resource-aware embedded programming

    Barwell, A. D. & Brown, C. M., 11 Feb 2020, (Accepted/In press) Proceedings of International Symposium on Implementation and Application of Functional Languages (IFL'19). Stutterheim, J. & Chin, W. N. (eds.). ACM

    Research output: Chapter in Book/Report/Conference proceedingConference contribution

  5. Reasoning about non-functional properties using compiler intrinsic function annotations

    Jadhav, S., Roth, M., Falk, H., Brown, C. M. & Barwell, A. D., 6 Nov 2019, Proceedings of the 13th Junior Researcher Workshop on Real-Time Computing. INP ENSEEIHT/IRIT, p. 25-28 4 p.

    Research output: Chapter in Book/Report/Conference proceedingConference contribution

Related by journal

  1. Programming heterogeneous parallel machines using refactoring and Monte-Carlo tree search

    Brown, C. M., Janjic, V., Goli, M. & McCall, J., Aug 2020, In: International Journal of Parallel Programming. 48, 4, p. 583–602 20 p.

    Research output: Contribution to journalArticlepeer-review

  2. Guest editorial: High-level programming for heterogeneous parallel systems

    Brown, C. M., 18 May 2018, In: International Journal of Parallel Programming. First Online

    Research output: Contribution to journalEditorialpeer-review

  3. The Missing Link! A new skeleton for evolutionary multi-agent systems in Erlang

    Stypka, J., Turek, W., Byrski, A., Kisiel-Dorohinicki, M., Barwell, A. D., Brown, C. M., Hammond, K. & Janjic, V., Feb 2018, In: International Journal of Parallel Programming. 46, 1, p. 4-22 19 p.

    Research output: Contribution to journalArticlepeer-review

  4. High-level heterogeneous and hierarchical parallel systems (HLPGPU 2014)

    Brown, C. M., 28 Oct 2015, In: International Journal of Parallel Programming. 43, 5, p. 892-893 2 p.

    Research output: Contribution to journalEditorialpeer-review

ID: 267665742

Top