On 02 of December 2020, starting 14:00, Renato B. Hoffmann (GMAP member) was approved in his Final Thesis defense as partial fulfillment for the bachelor in Computer Engineering in the School of Technology of the Pontifical Catholic University of Rio Grande do Sul (PUCRS). The thesis was advised by Dr. Luiz Gustavo Fernandes and co-advised by Dr. Dalvan Griebler (PNPD/PUCRS). The members of the examining board were Dr. Tiago Coelho Ferreto and Dr. Sergio Johann Filho, both from PUCRS. The defense was done through video conference due to the events of Covid-19.
Renato tells how was the experience of the undergraduate course:
“During 10 semesters of the undergraduate course, I spent 9 as a member of the GMAP research group. During this period, I learned a lot of important things for the undergraduate course, such as programming, technical writing or technical presentation. Above all, the most important thing was the research and scientific know-how that the group provided as well as the friendship with the other members and advisors. Just as there were moments of challenge and difficulty, there were excellent moments and I am very grateful for the experience and friendship with the research group.“Renato Barreto Hoffmann
The title and abstract of the undergraduate thesis are as follows:
Title: STREAM PARALLELISM ANNOTATIONS FOR AUTOMATIC OPENMP CODE GENERATION
Abstract: Recent computer architectures are parallel in nature and require parallel programming to fully exploit the machine power. However, this is a complex and error-prone task. Offering parallel abstractions is a way to mitigate this problem. Some examples that do it are OpenMP, Intel’s TBB (Threading Building Blocks), and FastFlow. However, each interface is designed with different implementation techniques and design goals. More specifically, OpenMP is an industry and academy standard for parallel programming that is complex when used to develop parallel stream processing applications. It lacks key programming mechanisms and abstractions that must be developed or obtained from external application programming interfaces (API). On the other hand, the importance of stream processing applications can not be ignored. They are present in data encryption and compression, sensor monitoring, data analytics, video and audio filtering, etc. To tackle this problem, we proposed to use an existing high-level parallel programming model (named SPar) for generating lower-level stream processing OpenMP code. We achieved that by implementing a stream processing template with OpenMP, using its default directives and standard C++ mechanisms. After that, aiming at increasing the abstraction level, we automatically generated code for this stream processing template using SPar’s set of source code annotations. This was based on the proposed set of transformation rules for OpenMP stream processing template, which were used for automatic source-to-source code transformations directly in the abstract syntax tree (AST). Our experiments demonstrated that in 4 different stream processing applications the maximum observed performance difference compared to the state-of-the-art implementations was: 1.72% in the case of the manual OpenMP implementation; and 2.49% in the case of the SPar’s generated code.