Melhorando a Geração Automática de Código Paralelo para o Paradigma de Processamento de Stream em Multi-cores
Keywords:
Processamento de Stream, Compiladores, Paralelismo de Stream, Paralelismo de Dados, CAbstract
A programação paralela ainda é um desafio para desenvolvedores, pois exibe demasiados detalhes de baixo nível e de sistemas operacionais. Programadores precisam lidar com detalhes como escalonamento, balanceamento de carga e sincronizações. Esse trabalho contribui com otimizações para uma abstração de programação paralela para expressar paralelismo de stream em multi-cores. O trabalho estendeu a SPar adicionando dois novos atributos na sua linguagem, e implementou melhorias no seu compilador a fim de proporcionar melhor desempenho ao código paralelo gerado automaticamente. Os experimentos revelaram que a nova versão da SPar consegue abstrair detalhes do paralelismo com desempenho similar às versões paralelizadas manualmente.
Downloads
Referências
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.