Supporting visual diagnosis of performance problems in multi-core and parallel software - Atachiants, Roman (Trinity College (Dublin, Ireland). School of Computer Science & Statistics, 2016)
The shift towards multicore processing has led to a much wider population of developers being faced with the challenge of exploiting parallel cores to improve software performance. Debugging and optimising parallel programs is a complex and demanding task. Tools which support development of parallel programs should provide salient information to allow programmers of multicore systems to diagnose and distinguish performance problems. Appropriate design of such tools requires a systematic analysis of the problems which might be identified, and the information used to diagnose them. In this dissertation we present a general framework aimed to support designers of parallel performance analysis tools. The framework consists of several major components including: general advice for tool developers, a parallel performance problem taxonomy, an observational model for “data-to-problem” mapping, a deeper analysis of a data locality problem identification and a visualisation tool which we have used to evaluate the effectiveness of the approach. First, with the aim of identifying issues, emerging practices and design opportunities for support, we present in this dissertation a qualitative study in which we interviewed a range of software developers, in both industry and academia. We then perform a systematic analysis of the data and identify several cross-cutting themes. These analysis themes include the practical relevance of the probe effect, the significance of orchestration models in development and the mismatch between currently available tools and developers’ needs. We also identify an important characteristic of parallel programming, where the process of optimisation goes hand in hand with the process of debugging, as opposed to clearer distinctions which may be made in traditional programming. We conclude with reflection on how the study can inform the design of software tools to support developers in the endeavour of parallel programming. Next, building on the literature, we put forward a potential taxonomy of parallel performance problems, and an observational model which links measurable performance data to these problems. We present a validation of this model carried out with parallel programming experts, identifying areas of agreement and disagreement. This is accompanied with a survey of the prevalence of these problems in software development. From this we can identify contentious areas worthy of further exploration, as well as those with high prevalence and strong agreement, which are natural candidates for initial moves towards better tool support. Finally, in order to explore the design space and how the framework can be used in the design of visualisations to support performance optimisation, the specific case of data locality is examined in more detail, and a prototype visualisation to support the diagnosis of data locality problems is introduced. Furthermore, an empirical evaluation of the visualisation was performed and the results are discussed as we reflect on the implications for the support of multicore performance analysis.
Keywords: Computer Science, Ph.D.; Ph.D. Trinity College Dublin