Files in this item
Modelling energy consumption in multi-core systems using meta-heuristics and statistical modelling
Item metadata
dc.contributor.advisor | Brown, Christopher Mark | |
dc.contributor.advisor | Brady, Edwin | |
dc.contributor.author | Alguwaifli, Yasir | |
dc.coverage.spatial | 368 | en_US |
dc.date.accessioned | 2023-06-05T11:11:42Z | |
dc.date.available | 2023-06-05T11:11:42Z | |
dc.date.issued | 2023-06-14 | |
dc.identifier.uri | https://hdl.handle.net/10023/27746 | |
dc.description.abstract | Controlling energy consumption has always been a necessity in many computing contexts as the resources that provide said energy is limited, be it a battery supplying power to an SBC/SOC, an embedded system, a drone, a phone, or another low/limited energy device, or a large cluster of machines that process extensive computations requiring multiple resources, such as a NUMA system. The need to accurately predict the energy consumption of such devices is crucial in many fields. Furthermore, different types of languages, e.g. Haskell and C/C++, exhibit different behavioural properties, such as strict vs. lazy evaluation, garbage collection vs. manual memory management, and different parallel runtime behaviours. In addition most software developers do not write software with energy consumption as a goal, this is mostly due to the lack of generalised tooling to help them optimise and predict energy consumption of their software. Therefore, the need to predict energy consumption in a generalised way for different types of languages that do not rely on specific program properties is needed. We construct several statistical models based on parallel benchmarks using regression modelling such as Non-negative Least Squares (NNLS), Random Forests, and Lasso and Elastic-Net Regularized Generalized Linear Models (GLMNET) from two different programming paradigms, namely Haskell and C/C++. Furthermore, the assessment of the statistical models is made over a complete set of benchmarks that behave similarly in both Haskell and C/C++. In addition to assessing the statistical models, we develop meta-heuristic algorithms to predict the energy consumed in parallel benchmarks from Haskell's Nofib and C/C++'s PARSEC suites for a range of implementations in PThreads, OpenMP and Intel's Threading Building Blocks (TBB). The results show that benchmarks with high scalability and performance in parallel execution can have their energy consumption predicted and even optimised by selecting the best configuration for the desired results. We also observe that even in degraded performance benchmarks, high core count execution can still be predicted to the nearest configuration to produce the lowest energy sample. Additionally, the meta-heuristic technique can be employed using a language- and architecture-agnostic approach to energy consumption prediction rather than requiring hand-tuned models for specific architectures and/or benchmarks. Although meta-heuristic sampling provided acceptable levels of accuracy, the combination of the statistical model with the meta-heuristic algorithms proved to be challenging to optimise. Except for low to medium accuracy levels for the Genetic algorithm, combining meta-heuristics demonstrated limited to poor accuracy. | en_US |
dc.description.sponsorship | "Also, I would like to thank my sponsor for the Saudi Arabian Ministry of Education represented by the Saudi Arabian Cultural Bureau and my employer, the University of Imam Abdulrahman Bin Faisal. The support I received from all parties in my journey finishing this thesis has been extraordinarily generous."--Acknowledgements | en |
dc.language.iso | en | en_US |
dc.rights | Creative Commons Attribution-ShareAlike 4.0 International | * |
dc.rights.uri | http://creativecommons.org/licenses/by-sa/4.0/ | * |
dc.subject | Programming languages energy | en_US |
dc.subject | Programming languages | en_US |
dc.subject | Parallel energy | en_US |
dc.subject | Parallelism | en_US |
dc.subject | Functional programming | en_US |
dc.subject | Haskell | en_US |
dc.subject | C/C++ | en_US |
dc.subject.lcc | QA76.62A64 | |
dc.subject.lcsh | Functional programming (Computer science) | en |
dc.subject.lcsh | Programming languages (Electronic computers) | en |
dc.subject.lcsh | Haskell (Computer program language) | en |
dc.title | Modelling energy consumption in multi-core systems using meta-heuristics and statistical modelling | en_US |
dc.type | Thesis | en_US |
dc.type.qualificationlevel | Doctoral | en_US |
dc.type.qualificationname | PhD Doctor of Philosophy | en_US |
dc.publisher.institution | The University of St Andrews | en_US |
dc.identifier.doi | https://doi.org/10.17630/sta/494 |
The following licence files are associated with this item:
This item appears in the following Collection(s)
Except where otherwise noted within the work, this item's licence for re-use is described as Creative Commons Attribution-ShareAlike 4.0 International
Items in the St Andrews Research Repository are protected by copyright, with all rights reserved, unless otherwise indicated.