Supporting Advanced Patterns in GrPPI, a Generic Parallel Pattern Interface

  • David del Rio Astorga
  • Manuel F. Dolz
  • Javier Fernández
  • J. Daniel García
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10659)

Abstract

The emergence of generic interfaces, encapsulating algorithmic aspects in pattern-based constructions, has greatly alleviated the development of data-intensive and stream-processing applications. In this paper, we complement the basic patterns supported by GrPPI, a C++ General and Reusable Parallel Pattern Interface of the state-of-the-art, with the advanced parallel patterns Pool, Windowed-Farm, and Stream-Iterator. This collection of advanced patterns is basically oriented to some domain-specific applications, ranging from the evolutionary to the real-time computing areas, where compositions of basic patterns are not capable of fully mimicking algorithmic behavior of their original sequential codes. The experimental evaluation of the advanced patterns on a set of domain-specific use-cases, using different back-ends (C++ Threads, OpenMP and Intel TBB) and pattern-specific parameters, reports remarkable performance gains. We also demonstrate the benefits of the GrPPI pattern interface from the usability and flexibility points of view.

Keywords

Parallel programming framework Domain-specific parallel pattern Data and stream computing High-level API 

Notes

Acknowledgements

This work was partially supported by the EU project ICT 644235 “RePhrase: REfactoring Parallel Heterogeneous Resource-Aware Applications” and the project TIN2013-41350-P “Scalable Data Management Techniques for High-End Computing Systems” from the Ministerio de Economía y Competitividad, Spain.

References

  1. 1.
    MALLBA geographically distributed environments: combinatorial optimization library (2000). http://www.cs.upc.edu/~mallba
  2. 2.
    Aldinucci, M., Campa, S., Danelutto, M., Kilpatrick, P., Torquati, M.: Pool evolution: a parallel pattern for evolutionary and symbolic computing. Int. J. Parallel Program. 44(3), 531–551 (2016)CrossRefGoogle Scholar
  3. 3.
    Aldinucci, M., Danelutto, M., Kilpatrick, P., Torquati, M.: Fastflow: High-Level and Efficient Streaming on Multicore, pp. 261–280. Wiley, Hoboken (2017)Google Scholar
  4. 4.
    Beard, J.C., Li, P., Chamberlain, R.D.: 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 2015, pp. 96–105. ACM, New York (2015)Google Scholar
  5. 5.
    Belikov, E., Deligiannis, P., Totoo, P., Aljabri, M., Loidl, H.W.: A survey of high-level parallel programming models. Technical report HW-MACS-TR-0103. Department of Computer Science, Heriot-Watt University, December 2013Google Scholar
  6. 6.
    Bucur, D., Iacca, G., Squillero, G., Tonda, A.: An evolutionary framework for routing protocol analysis in wireless sensor networks. In: Esparcia-Alcázar, A.I. (ed.) EvoApplications 2013. LNCS, vol. 7835, pp. 1–11. Springer, Heidelberg (2013).  https://doi.org/10.1007/978-3-642-37192-9_1 CrossRefGoogle Scholar
  7. 7.
    De Matteis, T., Mencagli, G.: Parallel patterns for window-based stateful operators on data streams: an algorithmic skeleton approach. Int. J. Parallel Program. 45(2), 382–401 (2017)CrossRefGoogle Scholar
  8. 8.
    Diaz, J., Muoz-Caro, C., Nio, A.: A survey of parallel programming models and tools in the multi and many-core era. IEEE Trans. Parallel Distrib. Syst. 23(8), 1369–1386 (2012)CrossRefGoogle Scholar
  9. 9.
    Enmyren, J., Kessler, C.W.: 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 2010, pp. 5–14. ACM, New York (2010)Google Scholar
  10. 10.
    Gajda-Zagórska, E.: Multiobjective evolutionary strategy for finding neighbourhoods of pareto-optimal solutions. In: Esparcia-Alcázar, A.I. (ed.) EvoApplications 2013. LNCS, vol. 7835, pp. 112–121. Springer, Heidelberg (2013).  https://doi.org/10.1007/978-3-642-37192-9_12 CrossRefGoogle Scholar
  11. 11.
    ISO/IEC: Programming Languages - Technical Specification for C++ Extensions for Parallelism, July 2015. iSO/IEC TS 19570:2015Google Scholar
  12. 12.
    Kaiser, H., Heller, T., Adelstein-Lelbach, B., Serio, A., Fey, D.: 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 2014, pp. 6:1–6:11. ACM, New York (2014)Google Scholar
  13. 13.
    Khronos OpenCL Working Group: SYCL: C++ Single-source Heterogeneous Programming for OpenCL. https://www.khronos.org/sycl. (Accessed May 2015)
  14. 14.
    Kist, D., Pinto, B., Bazo, R., Bois, A.R.D., Cavalheiro, G.G.H.: Kanga: a skeleton-based generic interface for parallel programming. In: 2015 International Symposium on Computer Architecture and High Performance Computing Workshop (SBAC-PADW), pp. 68–72, October 2015Google Scholar
  15. 15.
    Mattson, T., Sanders, B., Massingill, B.: Patterns for Parallel Programming, 1st edn. Addison-Wesley Professional, Boston (2004)MATHGoogle Scholar
  16. 16.
    McCool, M., Reinders, J., Robison, A.: Structured Parallel Programming: Patterns for Efficient Computation, 1st edn. Morgan Kaufmann Publishers Inc., San Francisco (2012)Google Scholar
  17. 17.
    NVIDIA Corporation: Thrust. https://thrust.github.io/
  18. 18.
    Popovic, V., Seyid, K., Pignat, E., Çogal, Ö., Leblebici, Y.: Multi-camera platform for panoramic real-time HDR video construction and rendering. J. Real-Time Image Process. 12(4), 697–708 (2016)CrossRefGoogle Scholar
  19. 19.
    Reinders, J.: Intel Threading Building Blocks - Outfitting C++ for Multi-Core Processor Parallelism. O’Reilly, Sebastopol (2007)Google Scholar
  20. 20.
    del Rio Astorga, D., Dolz, M.F., Fernández, J., García, J.D.: A generic parallel pattern interface for stream and data processing. Concurr. Comput.: Pract. Exp. 29, e4175-n/a (April 2017)Google Scholar
  21. 21.
    Shan, A.: Heterogeneous processing: a strategy for augmenting Moore’s law. Linux J. 2006(142), 7 (2006)Google Scholar

Copyright information

© Springer International Publishing AG, part of Springer Nature 2018

Authors and Affiliations

  1. 1.Computer Science and Engineering DepartmentUniversity Carlos III of MadridLeganésSpain

Personalised recommendations