Use this URL to cite or link to this record in EThOS:
Title: Co-designing software abstraction and optimisation for productivity and performance
Author: Barrett, Colin Ronald Benjamin
ISNI:       0000 0004 5369 4130
Awarding Body: University of Manchester
Current Institution: University of Manchester
Date of Award: 2015
Availability of Full Text:
Access from EThOS:
Access from Institution:
Improving the execution time of applications is important, but there is a tendency to sacrifice programmability in its pursuit. This thesis investigates co-design approaches, in which APIs provide an abstraction that is strictly maintained using sound software engineering practices while performance is optimised within a managed runtime environment. Flexibility in APIs and weak encapsulation often results in hand-optimisation that restricts the effectiveness of performance improvements and obfuscates functionality. Domain specific applications contain semantics that general purpose languages cannot exploit during compilation. Hand-optimisation addresses this by manually improving the implementation of applications, requiring both expertise and time. Two application domains are used to demonstrate approaches for exploiting semantics to improve performance; MapReduce parallelism and SLAM in computer vision. Creating correct parallel software is challenging and, thus, frameworks have been developed to exploit the available performance of commodity hardware. MapReduce is a popular programming framework to facilitate the development of data analytics applications. Implementations hide the complexities of data management, scheduling and fault tolerance from users; as MapReduce frameworks evolve, new specialisations and optimisations are introduced. However, improvements often require manual integration into applications to enable performance gains. Hand-optimisation may be used because the semantics of the underlying abstraction or the scope of the compiler are unsuitable. This thesis demonstrates that the semantics of MapReduce may be used to extend the scope of the dynamic compiler. By analysing applications using a MapReduce framework with co-designed optimisation, it is possible to execute these applications in Java in a comparative time to hand-optimised C and C++. The benefits also include improved efficiency of memory management and reduction in the volume of the intermediate data generated. Hence, it is possible to speedup Java application performance twofold. Most importantly, it does not require any extension or rewriting of existing applications. Computer vision, SLAM in particular, contains a mix of regular and irregular vector operations. These are not addressed directly, for this domain, by existing abstractions because many of the data types used represent small vectors (2-7 elements). An array is the natural choice to contain the elements of a vector, but it is not optimal for performance or productivity. This thesis presents a new class collection for small vectors in Java using sound software engineering practice. By co-designing the data-level implementation with its interaction with the dynamic compiler, overheads introduced by the strict API have been eliminated during optimisation. This results in kernels, frequently used in SLAM applications, with improved performance relative to a popular C++ SLAM library. In addition to this, it is possible to demonstrate how the small vector implementation may exploit SIMD instructions and registers to improve performance further. When programmability is prioritised, performance should not be obtained by hand-optimisation because this tends to obfuscate application code. To compensate for this restriction, co-design approaches can extend the communication of application semantics. This thesis demonstrates that there is the potential for co-designed optimisations crossing abstraction boundaries for better performance without affecting productivity.
Supervisor: Not available Sponsor: Not available
Qualification Name: Thesis (Ph.D.) Qualification Level: Doctoral
EThOS ID:  DOI: Not available