Master's lecture in Software Engineering - Sunna Berglind Sigurðardóttir

The lecture will held via Zoom: https://zoom.us/j/69954534602
Master's student: Sunna Berglind Sigurðardóttir
Title: A refactoring catalogue and tool for refactoring C/C++ HPC code
___________________________________________
Faculty: Faculty of Industrial Engineering, Mechanical Engineering and Computer Science
Advisor: Helmut Neukirchen, Professor at the Faculty of Industrial Engineering, Mechanical Engineering and Computer Science
Other members of the masters committee: Morris Riedel, Assistant Professor at the Faculty of Industrial Engineering, Mechanical Engineering and Computer Science
Examiner: Markus Götz, PostDoc at Steinbuch Centre for Computing, Karlsruhe Institute of Technology, Germany
Abstract
High-Performance Computing (HPC), or supercomputing, has become a big part of our daily life even though people might not be aware of it. The use of HPC is growing and the need for HPC is expected to keep growing. HPC code is typically written by domain experts who are not experienced in software engineering so when it is modified most often the complexity of it increases, losing readability and maintainability. One of the techniques developed to decrease this complexity is refactoring. Refactoring is a technique for improving the internal structure of soft-ware without changing its external behavior. It has been widely used for all kinds of software but for HPC code it is still evolving and different definitions of HPC refactoring have surfaced. This thesis discusses previous work on HPC refactoring and C/C++ refactoring and introduces a new definition of HPC refactoring which focuses not only on improving readability and maintainability but includes performance and portability as well. With this definition in mind a new catalogue for HPC refactoring is started along with implementing a semi-automated refactoring.The five refactorings in the catalogue are aimed at improving performance of HPC code written in C/C++ with detailed descriptions of how to apply them. The implemented refactoring demonstrates the advantages of semi-automated refactorings for their users by limiting the risks inevitably followed by code changes.