Refactoring GrPPI: Generic Refactoring for Generic Parallelism in C++

被引:0
|
作者
Christopher Brown
Vladimir Janjic
Adam D. Barwell
J. Daniel Garcia
Kenneth MacKenzie
机构
[1] University of St Andrews,School of Computer Science
[2] University of Dundee,School of Science and Engineering
[3] University Carlos III of Madrid,undefined
[4] IOHK,undefined
关键词
Refactoring; Parallelism; Parallel patterns; TBB; C++; GrPPI; C++ threads;
D O I
暂无
中图分类号
学科分类号
摘要
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.
引用
收藏
页码:603 / 625
页数:22
相关论文
共 50 条
  • [1] Refactoring GrPPI: Generic Refactoring for Generic Parallelism in C plus
    Brown, Christopher
    Janjic, Vladimir
    Barwell, Adam D.
    Garcia, J. Daniel
    MacKenzie, Kenneth
    [J]. INTERNATIONAL JOURNAL OF PARALLEL PROGRAMMING, 2020, 48 (04) : 603 - 625
  • [2] Generic Refactoring Methodology for Cloud Migration
    Kesavulu, Manoj
    Bezbradica, Marija
    Helfert, Markus
    [J]. CLOSER: PROCEEDINGS OF THE 7TH INTERNATIONAL CONFERENCE ON CLOUD COMPUTING AND SERVICES SCIENCE, 2017, : 664 - 667
  • [3] Towards a Generic Framework for Trustworthy Program Refactoring
    Horpacsi, Daniel
    Koszegi, Judit
    Nemeth, David J.
    [J]. ACTA CYBERNETICA, 2022, 25 (04): : 753 - 779
  • [4] Role-Based Generic Model Refactoring
    Heimann, Jan
    Seifert, Mirko
    Assmann, Uwe
    [J]. MODEL DRIVEN ENGINEERING LANGUAGES AND SYSTEMS, PT II, 2010, 6395 : 78 - 92
  • [5] ReL : A Generic Refactoring Language for Specification and Execution
    Ruhroth, Thomas
    Wehrheim, Heike
    Ziegert, Steffen
    [J]. 2011 37TH EUROMICRO CONFERENCE ON SOFTWARE ENGINEERING AND ADVANCED APPLICATIONS (SEAA 2011), 2011, : 83 - 90
  • [6] A Refactoring Approach to Parallelism
    Dig, Danny
    [J]. IEEE SOFTWARE, 2011, 28 (01) : 17 - 22
  • [7] Refactoring generic instantiations based on type propagation analysis
    Chen, Lin
    Xu, Bao-Wen
    Qian, Ju
    Zhou, Tian-Lin
    Zhou, Yu-Ming
    [J]. Ruan Jian Xue Bao/Journal of Software, 2009, 20 (10): : 2617 - 2627
  • [8] Efficiently refactoring Java']Java applications to use generic libraries
    Fuhrer, R
    Tip, F
    Kiezun, A
    Dolby, J
    Keller, M
    [J]. ECOOP 2005 - OBJECT-ORIENTED PROGRAMMING, PROCEEDINGS, 2005, 3586 : 71 - 96
  • [9] A Practical Tutorial on Refactoring for Parallelism
    Dig, Danny
    [J]. 2010 IEEE INTERNATIONAL CONFERENCE ON SOFTWARE MAINTENANCE, 2010,
  • [10] GENERIC CONTAINERS IN C++
    DAVIDSON, A
    [J]. DR DOBBS JOURNAL, 1991, 16 (08): : 50 - &