Geração de Código OpenMP para o Paralelismo deStream

Authors

Keywords:

Programação Paralela, Processamento de Stream, OpenMP, Anotações C

Abstract

OpenMP é uma interface para a programação paralela padrão e amplamente usada na indústria e academia, porém, torna-se complexa quando usada para desenvolver aplicações paralelas de fluxo de dados ou stream. Para resolver esse problema, foi proposto usar uma interface de programação paralela de alto nível (chamada SPar) e seu compilador para a geração de código estruturado de mais baixo nível com OpenMP em aplicações de fluxo de dados. O objetivo é diminuir a complexidade e verbosidade introduzida pelo OpenMP nas aplicações de stream. Nos experimentos em 4 aplicações, notou-se uma redução no tempo de execução de até 25,42%. Além do mais, requer-se um número de linhas de código fonte menor para expressar o paralelismo.

Downloads

Não há dados estatísticos.

Referências

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.

Downloads

Published

2021-06-03

Como Citar

Hoffmann, R. B., Griebler, D., & Fernandes, L. G. (2021). Geração de Código OpenMP para o Paralelismo deStream. Revista Eletrônica De Iniciação Científica Em Computação, 19(2). Recuperado de https://journals-sol.sbc.org.br/index.php/reic/article/view/2082

Issue

Section

Edição Especial: CTIC/CSBC