Improving Automatic Parallel Code Generation for Stream Processing on Multi-cores
Keywords:
Stream Processing, Compilers, Stream Parallelism, Data Parallelism, CAbstract
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
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.