In April 2016 Manchester eScholar was replaced by the University of Manchester’s new Research Information Management System, Pure. In the autumn the University’s research outputs will be available to search and browse via a new Research Portal. Until then the University’s full publication record can be accessed via a temporary portal and the old eScholar content is available to search and browse via this archive.

Co-designing Software Abstraction and Optimisation for Productivity and Performance

Barrett, Colin Ronald Benjamin

[Thesis]. Manchester, UK: The University of Manchester; 2015.

Access to files

Abstract

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.

Bibliographic metadata

Type of resource:
Content type:
Form of thesis:
Type of submission:
Degree type:
Doctor of Philosophy
Degree programme:
PhD Computer Science (CDT)
Publication date:
Location:
Manchester, UK
Total pages:
224
Abstract:
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.
Thesis main supervisor(s):
Thesis co-supervisor(s):
Language:
en

Institutional metadata

University researcher(s):

Record metadata

Manchester eScholar ID:
uk-ac-man-scw:280198
Created by:
Barrett, Colin
Created:
26th November, 2015, 20:09:53
Last modified by:
Barrett, Colin
Last modified:
16th November, 2017, 14:23:39

Can we help?

The library chat service will be available from 11am-3pm Monday to Friday (excluding Bank Holidays). You can also email your enquiry to us.