Incentivando a adoção de modelos de programação concorrente/paralela a partir da visualização de ganhos na geração de fractais em tempo-real

Resumo


A programação concorrente, ou paralela, é uma realidade na produção de software em função da popularização das arquiteturas multicore. No entanto, as formações em nível superior, em geral, introduzem este modelo de programação a partir da segunda metade dos cursos, reduzindo o tempo que os alunos tem para se apropriar completamente das técnicas no restante de suas formações. Neste trabalho é apresentada uma ferramenta interativa para percepção dos impactos da aplicação de diferentes recursos de programação paralela no comportamento e desempenho de uma aplicação com forte apelo visual, um gerador de fractais. A ferramenta construída permite visualização da execução explorando o paralelismo entre nós (MPI), intra-nós (OpenMP) e entre instruções (instruções vetoriais), alterando em tempo real o conjunto nível de paralelismo explorado.

Palavras-chave: Programação Concorrente, Programação Paralela, Modelos de Programação, Suporte ao Ensino

Referências

Al-Ali, F., Gamage, T. D., Nanayakkara, H. W., Mehdipour, F., and Ray, S. K. (2019). Supercomputer networks in the datacenter: Benchmarking the evolution of communication granularity from macroscale down to nanoscale. In 2019 29th International Telecommunication Networks and Applications Conference (ITNAC), pages 1–6. IEEE.

Almeida Jr., R., Farias, H., Saavedra, M., and Arauoj, J. (2021). Metodologias de ensino na programação paralela com placas gráficas: Uma revisão sistemática da literatura. In Anais do XXXII Simpósio Brasileiro de Informática na Educação, pages 1243–1252, Porto Alegre, RS, Brasil. SBC.

Baker, M. and Buyya, R. (1999). Cluster Computing at a Glance, pages 3 – 47. Prentice Hall PTR.

Calderon, I., Silva, W., and Feitosa, E. (2021). Um mapeamento sistemático da literatura sobre o uso de metodologias ativas durante o ensino de programação no Brasil. In Anais do XXXII Simpósio Brasileiro de Informática na Educação, pages 1152–1161, Porto Alegre, RS, Brasil. SBC.

Cave, W. C., Wassmer, R. E., Ledgard, H. F., Salisbury, A. B., Irvine, K. T., and Mulshine, M. A. (2020). A new approach to parallel processing. IEEE Access, 8:30287–30305.

Conte, D. J., de Souza, P. S. L., Martins, G., and Bruschi, S. M. (2020). Teaching parallel programming for beginners in Computer Science. In 2020 IEEE Frontiers in Education Conference (FIE), pages 1–9.

Drakopoulos, V., Mimikou, N., and Theoharis, T. (2003). An overview of parallel visualisation methods for Mandelbrot and Julia sets. Computers Graphics, 27(4):635–646.

Figueiredo, J. and García-Peñalvo, F. (2021). Teaching and learning tools for introductory programming in university courses. In 2021 International Symposium on Computers in Education (SIIE), pages 1–6.

Giacaman, N. and Sinnen, O. (2018). Preparing the software engineer for a modern multicore world. Journal of Parallel and Distributed Computing, 118:247–263.

Guimarães, F., Leite, M., Reinaldo, F., and Ito, G. (2018). Métodos ativos de ensino aliados com tecnologia para a prática de ensino: Um relato de experiência. In Anais do XXIV Workshop de Informática na Escola, pages 333–342, Porto Alegre, RS, Brasil. SBC.

Huseinovic, A. and Ribic, S. (2015). Benchmark comparison of computing the Mandelbrot set in OpenCL. In 2015 23rd Telecommunications Forum Telfor (TELFOR), pages 994–997.

Khmelevsky, Y. and Hains, G. J. D. R. (2021). Parallel programming applied research projects for teaching parallel programming to beginner students. arXiv. arXiv:2105.13574.

o, Y., Burgstaller, B., and Scholz, B. (2013). Parallel from the beginning: The case for multicore programming in the Computer Science undergraduate curriculum. pages 415–420.

Li, X., Wang, Z., Che, X., and Lu, T. (2007). Artistic fractal images for complex mapping F(z) and T(z). 2007 10th IEEE International Conference on Computer-Aided Design and Computer Graphics, pages 501–504

Rios, M. G., Herrera, D. J. C., Lucio, K. S. N., and Vazquez, M. Y. L. (2020). AHP for a comparative study of tools used for programming learning. In Nazir, S., Ahram, T., and Karwowski, W., editors, Advances in Human Factors in Training, Education, and Learning Sciences, pages 356–362, Cham. Springer International Publishing.

Sadowski, C., Ball, T., Bishop, J., Burckhardt, S., Gopalakrishnan, G., Mayo, J., Musuvathi, M., Qadeer, S., and Toub, S. (2011). Practical parallel and concurrent programming. In Proceedings of the 42nd ACM Technical Symposium on Computer Science Education, SIGCSE ’11, page 189–194, New York, NY, USA. Association for Computing Machinery.

Sarkar, V., Grossman, M., Budimlic, Z., and Imam, S. (2018). A one year retrospective on a MOOC in parallel, concurrent, and distributed programming in Java. In 2018 IEEE/ACM Workshop on Education for High-Performance Computing (EduHPC), pages 61–68.

Schmidt, B., Gonzalez-Dominguez, J., Hundt, C., and Schlarb, M. (2017). Parallel Programming: Concepts and Practice. Elsevier Science.

Sitsylitsyn, Yuriy (2020). Methods and tools for teaching parallel and distributed computing in universities: a systematic review of the literature. SHS Web Conf., 75:04017.

Soto Gómez, E. (2020). Mpi vs openmp: Un caso de estudio sobre la generación del conjunto de mandelbrot. Innovación y Software, 1(2):12–26

Vasconcelos, L. B. A., Soares, F. A. L., Penna, P. H. M. M., Machado, M. V., Góes, L. F. W., Martins, C. A. P. S., and Freitas, H. C. (2019). Teaching parallel programming to freshmen in an undergraduate Computer Science program. In 2019 IEEE Frontiers in Education Conference (FIE), pages 1–8.

Velásquez, R. A., Isaza, S., Montoya, E., García, L. G., and Gómez, J. (2020). Embedded cluster platform for a remote parallel programming lab. In 2020 IEEE Global Engineering Education Conference (EDUCON), pages 763–772

Wilhelm, A., ˇCakari ́c, F., Gerndt, M., and Schuele, T. (2018). Tool-based interactive software parallelization: A case study. In Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Practice, ICSE-SEIP ’18, page 115–123, New York, NY, USA. Association for Computing Machinery.

Ziogas, A. N., Ben-Nun, T., Schneider, T., and Hoefler, T. (2021). NPBench: A benchmarking suite for high-performance numpy. In Proceedings of the ACM International Conference on Supercomputing, pages 63–74.
Publicado
16/11/2022
MORAIS, Lucas; TORCHELSEN, Rafael; CAVALHEIRO, Gerson Geraldo H.. Incentivando a adoção de modelos de programação concorrente/paralela a partir da visualização de ganhos na geração de fractais em tempo-real. In: SIMPÓSIO BRASILEIRO DE INFORMÁTICA NA EDUCAÇÃO (SBIE), 33. , 2022, Manaus. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2022 . p. 311-322. DOI: https://doi.org/10.5753/sbie.2022.225734.