A generic parallel pattern interface for stream and data processing

David del Rio Astorga1, Manuel F. Dolz1, Javier Fernández1, J. Daniel García1
1Computer Science and Engineering Department University Carlos III of Madrid 28911–Leganés Spain

Tóm tắt

SummaryCurrent parallel programming frameworks aid developers to a great extent in implementing applications that exploit parallel hardware resources. Nevertheless, developers require additional expertise to properly use and tune them to operate efficiently on specific parallel platforms. On the other hand, porting applications between different parallel programming models and platforms is not straightforward and demands considerable efforts and specific knowledge. Apart from that, the lack of high‐level parallel pattern abstractions, in those frameworks, further increases the complexity in developing parallel applications. To pave the way in this direction, this paper proposes GRPPI, a generic and reusable parallel pattern interface for both stream processing and data‐intensive C++ applications. GRPPI accommodates a layer between developers and existing parallel programming frameworks targeting multi‐core processors, such as C++ threads, OpenMP and Intel TBB, and accelerators, as CUDA Thrust. Furthermore, thanks to its high‐level C++ application programming interface and pattern composability features, GRPPI allows users to easily expose parallelism via standalone patterns or patterns compositions matching in sequential applications. We evaluate this interface using an image processing use case and demonstrate its benefits from the usability, flexibility, and performance points of view. Furthermore, we analyze the impact of using stream and data pattern compositions on CPUs, GPUs and heterogeneous configurations.

Từ khóa


Tài liệu tham khảo

AmarasingheS HallM LethinR et al.ASCR Programming Challenges for Exascale Computing [Technical Report]   U.S. DOE Office of Science (SC);2011.

EnmyrenJ KesslerCW.SkePU: a multi‐backend skeleton programming library for multi‐GPU systems. In: Proceedings of the Fourth International Workshop on High‐level Parallel Programming and Applications HLPP '10 ACM;2010;New York NY USA:5‐14.https://doi.org/10.1145/1863482.1863487.

Aldinucci M, 2012, Programming Multi‐core and Many‐core Computing Systems, 13

Reinders J, 2007, Intel Threading Building Blocks ‐ Outfitting C++ for Multi‐Core Processor Parallelism

10.1109/Trustcom.2015.623

10.1002/cpe.1671

10.1016/j.apnum.2014.12.008

10.1002/spe.1026

del Rio AstorgaD DolzMF SanchezLM BlasJG GarcíaJD.C++ generic parallel pattern interface for stream processing. In: Proceedings of the 16th International Conference Algorithms and Architectures for Parallel Processing (ICA3PP 2016).Cham Switzerland:Springer International Publishing;2016:74‐87.

Gamma E, 1995, Design Patterns: Elements of Reusable Object‐Oriented Software

10.1007/978-1-4471-0097-3

McCool M, 2012, Structured Parallel Programming: Patterns for Efficient Computation

NewburnCJ SoB LiuZ et al.Intel's array building blocks: A retargetable dynamic compiler and embedded language. In: 2011 9th Annual IEEE/ACM International Symposium on Code Generation and Optimization (CGO).Chamonix France;2011:224‐235.

KistD PintoB BazoR BoisARD CavalheiroGGH.Kanga: a skeleton‐based generic interface for parallel programming. In: 2015 International Symposium on Computer Architecture and High Performance Computing Workshop (SBAC‐PADW).Florianópolis SC Brazil;2015:68‐72.https://doi.org/10.1109/SBAC‐PADW.2015.16.

NVIDIA Corporation.Thrust.https://thrust.github.io/. Accessed November 15 2016.

Khronos OpenCL Working Group.SYCL: C++ Single‐source Heterogeneous Programming For openCL.https://www.khronos.org/sycl. Accessed May 2015.

ISO/IEC.Programming languages – technical specification for c++ extensions for parallelism July 2015: ISO/IEC TS;2015.

KaiserH HellerT Adelstein‐LelbachB SerioA FeyD.Hpx: a task based programming model in a global address space. In: Proceedings of the 8th International Conference on Partitioned Global Address Space Programming Models PGAS '14 ACM;2014;New York NY USA:6:1‐6:11.

BeardJC LiP ChamberlainRD.RaftLib: a C++ template library for high performance stream parallel processing. In: Proceedings of the Sixth International Workshop on Programming Models and Applications for Multicores and Manycores PMAM '15 ACM;2015;New York NY USA:96‐105.https://doi.org/10.1145/2712386.2712400.

Mattson T, 2004, Patterns for Parallel Programming

10.1177/1094342014567907