![]()
In partial fulfillment of the Requirements for the Degree of
Doctor of Philosophy
Zhenying Liu
will defend her thesis
Improving the Scalability of OpenMP Programs for Large Systems
Abstract
OpenMP is a successful and portable shared memory programming interface that promises high programmer productivity. OpenMP is available on many large systems including shared memory systems, cache-coherent Non-Uniform Memory Access systems, vector machines and emerging architectures containing Chip MultiThreading.
Unfortunately, it is non-trivial to obtain scalable performance for OpenMP programs. Programmers have achieved high scalability by rewriting their directive-based OpenMP code into a so-called SMPD form, but this counteracts one of the most important benefits of the API, namely its ease of use. In order to overcome this problem, in this thesis we propose an alternative compiler translation that essentially converts an OpenMP program into an SPMD-style code. This form achieves scalability by enhancing the data locality of OpenMP codes. We demonstrate the benefits of SPMD style, discuss the required analyses for the translation, and describe the translation strategies for OpenMP constructs. In particular, we adopt an array access analysis to decide how to privatize arrays. After comparing the efficiency and accuracy of different array access analysis approaches, we choose Regions analysis to summarize array references. We carried out some experiments to determine whether our approach is likely to boost performance on an NEC SX-8 vector
machine and found that, in contrast to cache-based architectures, it did not provide benefits there.