Skip to main content
Log in

OpenMP as runtime for providing high-level stream parallelism on multi-cores

  • Published:
The Journal of Supercomputing Aims and scope Submit manuscript

Abstract

OpenMP is an industry and academic standard for parallel programming. However, using it for developing parallel stream processing applications is complex and challenging. OpenMP lacks key programming mechanisms and abstractions for this particular domain. To tackle this problem, we used a high-level parallel programming framework (named SPar) for automatically generating parallel OpenMP code. We achieved this by leveraging SPar’s language and its domain-specific code annotations for simplifying the complexity and verbosity added by OpenMP in this application domain. Consequently, we implemented a new compiler algorithm in SPar for automatically generating parallel code targeting the OpenMP runtime using source-to-source code transformations. The experiments in four different stream processing applications demonstrated that the execution time of SPar was improved up to 25.42% when using the OpenMP runtime. Additionally, our abstraction over OpenMP introduced at most 1.72% execution time overhead when compared to handwritten parallel codes. Furthermore, SPar significantly reduces the total source lines of code required to express parallelism with respect to plain OpenMP parallel codes.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4

Similar content being viewed by others

Notes

  1. https://gmap.pucrs.br/spar.

  2. Obtained with SLOCCOUNT tool.

References

  1. Aldinucci M, Danelutto M, Kilpatrick P, Meneghin M, Torquati M (2011) Accelerating code on multi-cores with FastFlow. Euro-Par 2011 parallel processing, vol 6853. Lecture notes in computer science. Springer, Berlin, pp 170–181

  2. Aldinucci M, Danelutto M, Kilpatrick P, Torquati M (2014) FastFlow: high-level and efficient streaming on multi-core. In: Programming Multi-core and Many-core Computing Systems, PDC, vol 1, p 14

  3. Bienia C, Kumar S, Singh JP, Li K (2008) The PARSEC benchmark suite: characterization and architectural implications. In: 17th International Conference on Parallel Architectures and Compilation Techniques. PACT ’08. ACM, Toronto, Ontario, Canada, pp 72–81

  4. Bradski G (2000) The OpenCV library. Dr. Dobb’s journal of software tools

  5. Danelutto M, Matteis TD, Sensi DD, Mencagli G, Torquati M, Aldinucci M, Kilpatrick P (2019) The rephrase extended pattern set for data intensive parallel computing. Int J Parallel Progr 47:74–93. https://doi.org/10.1007/s10766-017-0540-z

    Article  Google Scholar 

  6. del Rio Astorga D, Dolz MF, Sanchez LM, Blas JG, García JD (2016) A c++ generic parallel pattern interface for stream processing. In: Algorithms and Architectures for Parallel Processing, Springer International Publishing, Cham, pp 74–87

  7. Gilchrist J (2004) Parallel Compression with BZIP2. In: 16th IASTED International Conference on Parallel and Distributed Computing and Systems. PDCS’ 04. ACTA Press, MIT, Cambridge, USA, pp 559–564

  8. Griebler D (2016) Domain-specific language and support tool for high-level stream parallelism. Ph.D. thesis, Faculdade de Informática - PPGCC - PUCRS, Porto Alegre, Brazil. http://tede2.pucrs.br/tede2/handle/tede/6776

  9. Griebler D, Danelutto M, Torquati M, Fernandes LG (2017) SPar: a DSL for high-level and productive stream parallelism. Parallel Process Lett 27(01):1740005. https://doi.org/10.1142/S0129626417400059

    Article  MathSciNet  Google Scholar 

  10. Griebler D, Hoffmann RB, Danelutto M, Fernandes LG (2017) Higher-level parallelism abstractions for video applications with SPar. In: Parallel Computing is Everywhere, Proceedings of the International Conference on Parallel Computing, ParCo’17, IOS Press, Bologna, Italy, pp 698–707 https://doi.org/10.3233/978-1-61499-843-3-698

  11. Griebler D, Hoffmann RB, Danelutto M, Fernandes LG (2018) High-level and productive stream parallelism for Dedup, Ferret, and Bzip2. Int J Parallel Progr 47(1):253–271. https://doi.org/10.1007/s10766-018-0558-x

    Article  Google Scholar 

  12. Griebler D, Hoffmann RB, Danelutto M, Fernandes LG (2018) Stream parallelism with ordered data constraints on multi-core systems. J Supercomput 75(8):4042–4061. https://doi.org/10.1007/s11227-018-2482-7

    Article  Google Scholar 

  13. Hoffmann RB, Griebler D, Danelutto M, Fernandes LG (2020) Stream parallelism annotations for multi-core frameworks. In: XXIV Brazilian Symposium on Programming Languages (SBLP), SBLP’20, ACM, Natal, Brazil, pp 48–55 https://doi.org/10.1145/3427081.3427088

  14. ISO/IEC-14882:2011 (2011) Information technology - programming languages - C++. Technical report, International Standard, Geneva, Switzerland

  15. Jacqueline FD, Buttlar BN (1996) PThreads programming. O’Reilly, Sebastopol, CA, USA

  16. Lee ITA, Leiserson CE, Schardl TB, Zhang Z, Sukha J (2015) On-the-fly pipeline parallelism. ACM Trans Parallel Comput. https://doi.org/10.1145/2809808

    Article  Google Scholar 

  17. Leiserson CE (2009) The cilk++ concurrency platform. In: Proceedings of the 46th Annual Design Automation Conference, DAC ’09, Association for Computing Machinery, New York, NY, USA, pp 522–527 https://doi.org/10.1145/1629911.1630048

  18. Mattson T, Sanders B, Massingill B (2004) Patterns for parallel programming, 1st edn. Addison-Wesley Professional, New York

    MATH  Google Scholar 

  19. McCool M, Reinders J, Robison A (2012) Structured parallel programming: patterns for efficient computation. Morgan Kaufmann Publishers Inc., San Francisco

    Google Scholar 

  20. Memeti S, Pllana S (2018) Hstream: a directive-based language extension for heterogeneous stream computing. In: 2018 IEEE International Conference on Computational Science and Engineering (CSE), pp 138–145 https://doi.org/10.1109/CSE.2018.00026

  21. Nakao M, Murai H, Sato M (2019) Multi-accelerator extension in openmp based on pgas model. In: Proceedings of the International Conference on High Performance Computing in Asia-Pacific Region, HPC Asia 2019, Association for Computing Machinery, New York, NY, USA, pp 18–25 https://doi.org/10.1145/3293320.3293324

  22. OmpSs: The ompss programming model (2020). https://pm.bsc.es/ompss

  23. OpenMP (2020) Open multi-processing api specification for parallel programming http://openmp.org/

  24. Pop A, Cohen A (2013) Openstream: expressiveness and data-flow compilation of openmp streaming programs. ACM Trans Archit Code Optim. https://doi.org/10.1145/2400682.2400712

    Article  Google Scholar 

  25. Reinders J (2007) Intel threading building blocks. O’Reilly, Sebastopol

    Google Scholar 

  26. Rockenbach DA, Griebler D, Danelutto M, Fernandes LG (2019) High-level stream parallelism abstractions with SPar targeting GPUs. In: Parallel Computing is Everywhere, Proceedings of the International Conference on Parallel Computing (ParCo), ParCo’19, IOS Press, Prague, Czech Republic, vol 36, pp 543–552 https://doi.org/10.3233/APC200083

  27. Thies W, Karczmarek M, Amarasinghe S (2002) Streamit: a language for streaming applications. In: Horspool RN (ed) Compiler construction. Springer, Berlin, pp 179–196

    Chapter  Google Scholar 

  28. Vogel A, Griebler D, Fernandes LG (2021) Providing high-level self-adaptive abstractions for stream parallelism on multicores. Software: practice and experience 51(6):1194–1217. https://doi.org/10.1002/spe.2948

    Article  Google Scholar 

Download references

Acknowledgements

We would like to acknowledge the support of LAD-PUCRS, GMAP research group and PUCRS university. This research is partially funded by Coordenação de Aperfeiçoamento de Pessoal de Nível Superior - Brasil (CAPES) - Finance Code 001, FAPERGS 05/2019-PQG project ParAS (N\(^{o}\) 19/2551-0001895-9), FAPERGS 10/2020-ARD project SPar4.0 (N\(^{o}\) 21/2551-0000725-7), Universal MCTIC/CNPq N\(^{o}\) 28/2018 project SParCloud (N\(^{o}\) 437693/2018-0), and MCTIC/CNPq call 25/2020 (N\(^{o}\) 130484/2021-0)

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Dalvan Griebler.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Hoffmann, R.B., Löff, J., Griebler, D. et al. OpenMP as runtime for providing high-level stream parallelism on multi-cores. J Supercomput 78, 7655–7676 (2022). https://doi.org/10.1007/s11227-021-04182-9

Download citation

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11227-021-04182-9

Keywords

Navigation