OpenMP Code Generation for Stream Parallelism

Authors

Keywords:

Parallel Programming, Stream Processing, OpenMP, C Annotations

Abstract

OpenMP is an industry and academy standard for parallel programming that is complex when using to develop parallel stream processing applications. To tackle this problem, we proposed to use a high-level parallel programming model (named SPar) for generating low-level structured stream processing OpenMP code. We achieved this by employing SPar set of source code annotations to simplify the complexity and verbosity added by OpenMP. The experiments in 4 different stream processing applications demonstrated that the execution time was improved by up to 25.42%. Furthermore, SPar significantly reduced the total source lines of code required to express parallelism.

Downloads

Download data is not yet available.

References

Aldinucci, M., Danelutto, M., Kilpatrick, P., and Torquati, M. (2014). FastFlow: HighLevel and Efficient Streaming on Multi-core. In Programming Multi-core and Manycore Computing Systems, volume 1 of PDC, page 14. Wiley.

Bienia, C., Kumar, S., Singh, J. P., and Li, K. (2008). The PARSEC Benchmark Suite: Characterization and Architectural Implications. In 17th International Conference on Parallel Architectures and Compilation Techniques, pages 72–81, Toronto. ACM.

del Rio Astorga, D., Dolz, M. F., Sanchez, L. M., Blas, J. G., and García, J. D. (2016). A c++ generic parallel pattern interface for stream processing. In Algorithms and Architectures for Parallel Processing, pages 74–87. Springer International Publishing.

Gilchrist, J. (2004). Parallel Compression with BZIP2. In 16th IASTED ICPDCS, PDCS’ 04, pages 559–564, MIT, Cambridge, USA. ACTA Press.

Griebler, D. (2016). Domain-Specific Language & Support Tool for High-Level Stream Parallelism. PhD thesis, PPGCC - PUCRS, Porto Alegre, Brazil.

Griebler, D., Danelutto, M., Torquati, M., and Fernandes, L. G. (2017). SPar: A DSL for High-Level and Productive Stream Parallelism. Parallel Processing Letters, 27(01).

Griebler, D., Hoffmann, R. B., Danelutto, M., and Fernandes, L. G. (2018a). Stream Parallelism with Ordered Data Constraints on Multi-Core Systems. Journal of Supercomputing, 75(8):4042–4061.

Griebler, D., Sensi, D. D., Vogel, A., Danelutto, M., and Fernandes, L. G. (2018b). Service Level Objectives via C++11 Attributes. In Euro-Par 2018: Parallel Processing Workshops, Lecture Notes in Computer Science, pages 745–756, Turin, Italy. Springer.

Griebler, D., Vogel, A., Sensi, D. D., Danelutto, M., and Fernandes, L. G. (2019). Simplifying and implementing service level objectives for stream parallelism. Journal of Supercomputing, 76:4603–4628.

Hoffmann, R. B. (2020). Stream Parallelism Annotations for Automatic OpenMP Code Generation. Technical report, School of Technology - PUCRS, Porto Alegre, Brazil.

Hoffmann, R. B., Griebler, D., Danelutto, M., and Fernandes, L. G. (2020). Stream Parallelism Annotations for Multi-Core Frameworks. In XXIV Brazilian Symposium on Programming Languages (SBLP), SBLP’20, pages 48–55, Natal, Brazil. ACM.

Jacqueline Farrell, Dick Buttlar, B. N. (1996). PThreads Programming. O’Reilly, Sebastopol, CA, USA.

Löff, J. H. (2020). Aumentando a Expressividade e Melhorando a Geração de Código Paralelo para o Paradigma de Paralelismo de Stream em Arquiteturas Multi-core. Technical report, School of Technology - PPGCC - PUCRS, Porto Alegre, Brazil.

OmpSs (2020). The ompss programming model.

OpenMP (2020). Open multi-processing api specification for parallel programming.

Pieper, R. L. (2020). High-level Programming Abstractions for Distributed Stream Processing. Master’s thesis, PPGCC - PUCRS, Porto Alegre, Brazil.

Pop, A. and Cohen, A. (2013). Openstream: Expressiveness and data-flow compilation of openmp streaming programs. ACM Trans. Archit. Code Optim., 9(4).

Reinders, J. (2007). Intel Threading Building Blocks. O’Reilly, Sebastopol, CA, USA.

Rockenbach, D. A. (2020). High-Level Programming Abstractions for Stream Parallelism on GPUs. Master’s thesis, PPGCC - PUCRS, Porto Alegre, Brazil.

Thies, W., Karczmarek, M., and Amarasinghe, S. (2002). Streamit: A language for streaming applications. In Horspool, R. N., editor, Compiler Construction, pages 179–196, Berlin, Heidelberg. Springer Berlin Heidelberg.

Vogel, A., Griebler, D., and F, L. G. (2020). Providing High-level Self-adaptive Abstractions for Stream Parallelism on Multi-cores. Software: Practice and Experience.

Published

2021-06-03

How to Cite

Hoffmann, R. B., Griebler, D., & Fernandes, L. G. (2021). OpenMP Code Generation for Stream Parallelism. Eletronic Journal of Undergraduate Research on Computing, 19(2). Retrieved from https://journals-sol.sbc.org.br/index.php/reic/article/view/2082

Issue

Section

Special Issue: CTIC/CSBC