Co-designing software abstraction and optimisation for productivity and performance

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...

Full description

Bibliographic Details
Main Author: Barrett, Colin Ronald Benjamin
Published: University of Manchester 2015
Subjects:
Online Access:http://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.677783
id ndltd-bl.uk-oai-ethos.bl.uk-677783
record_format oai_dc
spelling ndltd-bl.uk-oai-ethos.bl.uk-6777832017-07-25T03:25:45ZCo-designing software abstraction and optimisation for productivity and performanceBarrett, Colin Ronald Benjamin2015Improving 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.006.3University of Manchesterhttp://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.677783https://www.research.manchester.ac.uk/portal/en/theses/codesigning-software-abstraction-and-optimisation-for-productivity-and-performance(1a567441-978e-4b91-a613-1af723fe5251).htmlElectronic Thesis or Dissertation
collection NDLTD
sources NDLTD
topic 006.3
spellingShingle 006.3
Barrett, Colin Ronald Benjamin
Co-designing software abstraction and optimisation for productivity and performance
description 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.
author Barrett, Colin Ronald Benjamin
author_facet Barrett, Colin Ronald Benjamin
author_sort Barrett, Colin Ronald Benjamin
title Co-designing software abstraction and optimisation for productivity and performance
title_short Co-designing software abstraction and optimisation for productivity and performance
title_full Co-designing software abstraction and optimisation for productivity and performance
title_fullStr Co-designing software abstraction and optimisation for productivity and performance
title_full_unstemmed Co-designing software abstraction and optimisation for productivity and performance
title_sort co-designing software abstraction and optimisation for productivity and performance
publisher University of Manchester
publishDate 2015
url http://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.677783
work_keys_str_mv AT barrettcolinronaldbenjamin codesigningsoftwareabstractionandoptimisationforproductivityandperformance
_version_ 1718504904077606912