Improving Automatic Parallel Code Generation for Stream Processing on Multi-cores

Authors

Keywords:

Stream Processing, Compilers, Stream Parallelism, Data Parallelism, C

Abstract

Parallel programming is still a challenge for programmers since it exhibits too many low level and operational system details. Programmers must deal with scheduling, load balancers and synchronizations. This work contributes with optimizations to a parallel programming abstraction for expressing stream parallelism in multi-cores. This work has extended SPar by including two new attributes to its language, and implementing new optimizations in its compiler for improving better performance to the parallel code automatically generated. Experiments revealed that our new SPar version can abstract parallelism details with similar performance to manually parallelized code.

Downloads

Download data is not yet available.

References

Astorga, D. d. R., Dolz, M. F., Fernández, J., and García, J. D. A generic parallel pattern interface for stream and data processing. CCPE, 29(24):e4175.

Cole, M. (1989). Algorithmic skeletons: Structured management of parallel computation.

Duran, A., Ayguadé, E., Badia, R. M., Labarta, J., Martinell, L., Martorell, X., and Planas, J. (2011). OmpSs: a Proposal for Programming Heterogeneous Multi-Core Architectures. Parallel Process. Lett., 21(2):173–193.

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. (2017a). SPar: A DSL for High-Level and Productive Stream Parallelism. PPL, 27(01):1740005.

Griebler, D., Hoffmann, R. B., Danelutto, M., and Fernandes, L. G. (2018a). High-Level and Productive Stream Parallelism for Dedup, Ferret, and Bzip2. International Journal of Parallel Programming, 47(1):253–271.

Griebler, D., Hoffmann, R. B., Loff, J., Danelutto, M., and Fernandes, L. G. (2017b). High-Level and Efficient Stream Parallelism on Multi-core Systems with SPar for Data Compression Applications. In WSCAD, pages 16–27, Campinas, SP, Brasil. SBC.

Griebler, D., Loff, J., Mencagli, G., Danelutto, M., and Fernandes, L. G. (2018b). Efficient NAS Benchmark Kernels with C++ Parallel Programming. In PDP, PDP’18, pages 733–740, Cambridge, UK. IEEE.

Mattson, T., Sanders, B., and Massingill, B. (2004). Patterns for Parallel Programming. Addison-Wesley Professional, first edition.

McCool, M., Robison, A., and Reinders, J. (2012). Structured Parallel Programming: Patterns for Efficient Computation. Elsevier Science.

Mencagli, G., Torquati, M., Griebler, D., Danelutto, M., and Fernandes, L. G. L. (2019). Raising the Parallel Abstraction Level for Streaming Analytics Applications. IEEE Access, 7:131944 – 131961.

Misale, C., Drocco, M., Tremblay, G., Martinelli, A. R., and Aldinucci, M. (2018). Pico: High-performance data analytics pipelines in modern c++. Future Generation Computer Systems, 87:392 – 403.

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

Prema, S., Nasre, R., Jehadeesan, R., and Panigrahi, B. K. (2019). A study on popular auto-parallelization frameworks. Concurr. Comput. Pract. Exp., 31(17).

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.

Published

2021-06-03

How to Cite

Löff, J., Griebler, D., & Gustavo Fernandes, L. (2021). Improving Automatic Parallel Code Generation for Stream Processing on Multi-cores. Electronic Journal of Undergraduate Research on Computing, 19(2). Retrieved from https://journals-sol.sbc.org.br/index.php/reic/article/view/2083

Issue

Section

Special Issue: CTIC/CSBC