Kevin Hammond
Current Organizations / Institutes
The organizations/institutes from the scholar's latest article
Previous Organizations / Institutes
The organizations / institutes from the scholar's other articles in the past ten years
Research Subjects
Kevin Hammond has a total of 230 co-authors. Here are the top co-authors by number of shared publications:
- Christopher Brown
University of St Andrews
15 shared publications Vladimir Janjic
School of Computer Science, University of St Andrews, Scotland, UK
10 shared publicationsHans-Wolfgang Loidl
Heriot-Watt University
9 shared publications- Adam D. Barwell
University of St Andrews
7 shared publications Greg Michaelson
Heriot-Watt University, Edinburgh, United Kingdom
7 shared publications- Pedro Vasconcelos
Universidade do Porto, Porto, Portugal
6 shared publications
Latest Publications
- Open Access
- 15 July 2023
- Published by Association for Computing Machinery (ACM)
- p. 727-730
Synthesizing Effective Diagnostic Models from Small Samples using Structural Machine Learning: a Case Study in Automating COVID-19 Diagnosis
- 15 July 2023
- Published by Association for Computing Machinery (ACM)
- p. 727-730
Open AccessSynthesizing Effective Diagnostic Models from Small Samples using Structural Machine Learning: a Case Study in Automating COVID-19 Diagnosis
- Open Access
Mind Your Outcomes: The ΔQSD Paradigm for Quality-Centric Systems Development and Its Application to a Blockchain Case Study
This paper directly addresses a long-standing issue that affects the development of many complex distributed software systems: how to establish quickly, cheaply, and reliably whether they can deliver their intended performance before expending significant time, effort, and money on detailed design and implementation. We describe SD, a novel metrics-based and quality-centric paradigm that uses formalised outcome diagrams to explore the performance consequences of design decisions, as a performance blueprint of the system. The distinctive feature of outcome diagrams is that they capture the essential observational properties of the system, independent of the details of system structure and behaviour. The SD paradigm derives bounds on performance expressed as probability distributions encompassing all possible executions of the system. The SD paradigm is both effective and generic: it allows values from various sources to be combined in a rigorous way so that approximate results can be obtained quickly and subsequently refined. SD has been successfully used by a small team in Predictable Network Solutions for consultancy on large-scale applications in a number of industries, including telecommunications, avionics, and space and defence, resulting in cumulative savings worth billions of US dollars. The paper outlines the SD paradigm, describes its formal underpinnings, and illustrates its use via a topical real-world example taken from the blockchain/cryptocurrency domain. SD has supported the development of an industry-leading proof-of-stake blockchain implementation that reliably and consistently delivers blocks of up to 80 kB every 20 s on average across a globally distributed network of collaborating block-producing nodes operating on the public internet.Open AccessMind Your Outcomes: The ΔQSD Paradigm for Quality-Centric Systems Development and Its Application to a Blockchain Case Study
This paper directly addresses a long-standing issue that affects the development of many complex distributed software systems: how to establish quickly, cheaply, and reliably whether they can deliver their intended performance before expending significant time, effort, and money on detailed design and implementation. We describe SD, a novel metrics-based and quality-centric paradigm that uses formalised outcome diagrams to explore the performance consequences of design decisions, as a performance blueprint of the system. The distinctive feature of outcome diagrams is that they capture the essential observational properties of the system, independent of the details of system structure and behaviour. The SD paradigm derives bounds on performance expressed as probability distributions encompassing all possible executions of the system. The SD paradigm is both effective and generic: it allows values from various sources to be combined in a rigorous way so that approximate results can be obtained quickly and subsequently refined. SD has been successfully used by a small team in Predictable Network Solutions for consultancy on large-scale applications in a number of industries, including telecommunications, avionics, and space and defence, resulting in cumulative savings worth billions of US dollars. The paper outlines the SD paradigm, describes its formal underpinnings, and illustrates its use via a topical real-world example taken from the blockchain/cryptocurrency domain. SD has supported the development of an industry-leading proof-of-stake blockchain implementation that reliably and consistently delivers blocks of up to 80 kB every 20 s on average across a globally distributed network of collaborating block-producing nodes operating on the public internet. - Open Access
- 18 August 2020
- Published by Springer Nature
- p. 94-120
Flexible Formality Practical Experience with Agile Formal Methods
- 18 August 2020
- Published by Springer Nature
- p. 94-120
Open AccessFlexible Formality Practical Experience with Agile Formal Methods
- Open Access
- 24 June 2019
- Published by Wiley in Concurrency and Computation: Practice and Experience
- Vol. 33 (14)
Refactoring for introducing and tuning parallelism for heterogeneous multicore machines in Erlang
Summary: This paper presents semi‐automatic software refactorings to introduce and tune structured parallelism in sequential Erlang code, as well as to generate code for running computations on GPUs and possibly other accelerators. Our refactorings are based on the lapedo framework for programming heterogeneous multi‐core systems in Erlang. lapedo is based on the PaRTE refactoring tool and also contains (1) a set of hybrid skeletons that target both CPU and GPU processors, (2) novel refactorings for introducing and tuning parallelism, and (3) a tool to generate the GPU offloading and scheduling code in Erlang, which is used as a component of hybrid skeletons. We demonstrate, on four realistic use‐case applications, that we are able to refactor sequential code and produce heterogeneous parallel versions that can achieve significant and scalable speedups of up to 220 over the original sequential Erlang program on a 24‐core machine with a GPU.
- 24 June 2019
- Published by Wiley in Concurrency and Computation: Practice and Experience
- Vol. 33 (14)
Open AccessRefactoring for introducing and tuning parallelism for heterogeneous multicore machines in Erlang
Summary: This paper presents semi‐automatic software refactorings to introduce and tune structured parallelism in sequential Erlang code, as well as to generate code for running computations on GPUs and possibly other accelerators. Our refactorings are based on the lapedo framework for programming heterogeneous multi‐core systems in Erlang. lapedo is based on the PaRTE refactoring tool and also contains (1) a set of hybrid skeletons that target both CPU and GPU processors, (2) novel refactorings for introducing and tuning parallelism, and (3) a tool to generate the GPU offloading and scheduling code in Erlang, which is used as a component of hybrid skeletons. We demonstrate, on four realistic use‐case applications, that we are able to refactor sequential code and produce heterogeneous parallel versions that can achieve significant and scalable speedups of up to 220 over the original sequential Erlang program on a 24‐core machine with a GPU.
- 1 March 2019
- Published by MIT Press in Evolutionary Computation
- Vol. 27 (1) , 173-193
Extending the “Open-Closed Principle” to Automated Algorithm Configuration
Metaheuristics are an effective and diverse class of optimization algorithms: a means of obtaining solutions of acceptable quality for otherwise intractable problems. The selection, construction, and configuration of a metaheuristic for a given problem has historically been a manually intensive process based on experience, experimentation, and reasoning by metaphor. More recently, there has been interest in automating the process of algorithm configuration. In this paper, we identify shared state as an inhibitor of progress for such automation. To solve this problem, we introduce the Automated Open Closed Principle (AOCP), which stipulates design requirements for unintrusive reuse of algorithm frameworks and automated assembly of algorithms from an extensible palette of components. We demonstrate how the AOCP enables a greater degree of automation than previously possible via an example implementation. Metaheuristics are an effective and diverse class of optimization algorithms: a means of obtaining solutions of acceptable quality for otherwise intractable problems. The selection, construction, and configuration of a metaheuristic for a given problem has historically been a manually intensive process based on experience, experimentation, and reasoning by metaphor. More recently, there has been interest in automating the process of algorithm configuration. In this paper, we identify shared state as an inhibitor of progress for such automation. To solve this problem, we introduce the Automated Open Closed Principle (AOCP), which stipulates design requirements for unintrusive reuse of algorithm frameworks and automated assembly of algorithms from an extensible palette of components. We demonstrate how the AOCP enables a greater degree of automation than previously possible via an example implementation. Metaheuristics are an effective and diverse class of optimization algorithms: a means of obtaining solutions of acceptable quality for otherwise intractable problems. The selection, construction, and configuration of a metaheuristic for a given problem has historically been a manually intensive process based on experience, experimentation, and reasoning by metaphor. More recently, there has been interest in automating the process of algorithm configuration. In this paper, we identify shared state as an inhibitor of progress for such automation. To solve this problem, we introduce the Automated Open Closed Principle (AOCP), which stipulates design requirements for unintrusive reuse of algorithm frameworks and automated assembly of algorithms from an extensible palette of components. We demonstrate how the AOCP enables a greater degree of automation than previously possible via an example implementation.
- 1 March 2019
- Published by MIT Press in Evolutionary Computation
- Vol. 27 (1) , 173-193
Extending the “Open-Closed Principle” to Automated Algorithm Configuration
Metaheuristics are an effective and diverse class of optimization algorithms: a means of obtaining solutions of acceptable quality for otherwise intractable problems. The selection, construction, and configuration of a metaheuristic for a given problem has historically been a manually intensive process based on experience, experimentation, and reasoning by metaphor. More recently, there has been interest in automating the process of algorithm configuration. In this paper, we identify shared state as an inhibitor of progress for such automation. To solve this problem, we introduce the Automated Open Closed Principle (AOCP), which stipulates design requirements for unintrusive reuse of algorithm frameworks and automated assembly of algorithms from an extensible palette of components. We demonstrate how the AOCP enables a greater degree of automation than previously possible via an example implementation. Metaheuristics are an effective and diverse class of optimization algorithms: a means of obtaining solutions of acceptable quality for otherwise intractable problems. The selection, construction, and configuration of a metaheuristic for a given problem has historically been a manually intensive process based on experience, experimentation, and reasoning by metaphor. More recently, there has been interest in automating the process of algorithm configuration. In this paper, we identify shared state as an inhibitor of progress for such automation. To solve this problem, we introduce the Automated Open Closed Principle (AOCP), which stipulates design requirements for unintrusive reuse of algorithm frameworks and automated assembly of algorithms from an extensible palette of components. We demonstrate how the AOCP enables a greater degree of automation than previously possible via an example implementation. Metaheuristics are an effective and diverse class of optimization algorithms: a means of obtaining solutions of acceptable quality for otherwise intractable problems. The selection, construction, and configuration of a metaheuristic for a given problem has historically been a manually intensive process based on experience, experimentation, and reasoning by metaphor. More recently, there has been interest in automating the process of algorithm configuration. In this paper, we identify shared state as an inhibitor of progress for such automation. To solve this problem, we introduce the Automated Open Closed Principle (AOCP), which stipulates design requirements for unintrusive reuse of algorithm frameworks and automated assembly of algorithms from an extensible palette of components. We demonstrate how the AOCP enables a greater degree of automation than previously possible via an example implementation.
- Open Access
- 1 February 2019
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- p. 1-8
Learning-Based Dynamic Pinning of Parallelized Applications in Many-Core Systems
This paper introduces a learning-based framework for dynamic placement of threads of parallel applications to the cores of Non-Uniform Memory Access (NUMA) architectures. Adaptation takes place in two levels, where at the first level each thread independently decides on which group of cores (NUMA node) it will execute, and on the second level it decides to which particular core from the group it will be pinned. Naturally, these two adaptation levels run on different time-scales: a low-frequency switching for the NUMA-node adaptation, and a high-frequency switching for the CPU-node level adaptation. In addition, the learning dynamics have been designed to handle measurement noise and rapid variations in the performance of the threads. The advantage of the proposed learning scheme is the ability to easily incorporate any multi-objective criterion and easily adapt to performance variations during runtime. Our objective is to demonstrate that this framework is appropriate for supervising parallel processes and intervening with respect to better resource allocation. Under the multi-objective criterion of maximizing total completed instructions per second (i.e., both computational and memory-access instructions), we compare the performance of the proposed scheme with the Linux operating system scheduler. We have observed that performance improvement could be significant especially under limited availability of resources and under irregular memory-access patterns.
- 1 February 2019
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- p. 1-8
Open AccessLearning-Based Dynamic Pinning of Parallelized Applications in Many-Core Systems
This paper introduces a learning-based framework for dynamic placement of threads of parallel applications to the cores of Non-Uniform Memory Access (NUMA) architectures. Adaptation takes place in two levels, where at the first level each thread independently decides on which group of cores (NUMA node) it will execute, and on the second level it decides to which particular core from the group it will be pinned. Naturally, these two adaptation levels run on different time-scales: a low-frequency switching for the NUMA-node adaptation, and a high-frequency switching for the CPU-node level adaptation. In addition, the learning dynamics have been designed to handle measurement noise and rapid variations in the performance of the threads. The advantage of the proposed learning scheme is the ability to easily incorporate any multi-objective criterion and easily adapt to performance variations during runtime. Our objective is to demonstrate that this framework is appropriate for supervising parallel processes and intervening with respect to better resource allocation. Under the multi-objective criterion of maximizing total completed instructions per second (i.e., both computational and memory-access instructions), we compare the performance of the proposed scheme with the Linux operating system scheduler. We have observed that performance improvement could be significant especially under limited availability of resources and under irregular memory-access patterns.
- 1 July 2018
- Published by Cambridge University Press (CUP) in Theory and Practice of Logic Programming
- Vol. 18 (3-4) , 484-501
Proof-relevant Horn Clauses for Dependent Type Inference and Term Synthesis
First-order resolution has been used for type inference for many years, including in Hindley-Milner type inference, type-classes, and constrained data types. Dependent types are a new trend in functional languages. In this paper, we show that proof-relevant first-order resolution can play an important role in automating type inference and term synthesis for dependently typed languages. We propose a calculus that translates type inference and term synthesis problems in a dependently typed language to a logic program and a goal in the proof-relevant first-order Horn clause logic. The computed answer substitution and proof term then provide a solution to the given type inference and term synthesis problem. We prove the decidability and soundness of our method.
- 1 July 2018
- Published by Cambridge University Press (CUP) in Theory and Practice of Logic Programming
- Vol. 18 (3-4) , 484-501
Proof-relevant Horn Clauses for Dependent Type Inference and Term Synthesis
First-order resolution has been used for type inference for many years, including in Hindley-Milner type inference, type-classes, and constrained data types. Dependent types are a new trend in functional languages. In this paper, we show that proof-relevant first-order resolution can play an important role in automating type inference and term synthesis for dependently typed languages. We propose a calculus that translates type inference and term synthesis problems in a dependently typed language to a logic program and a goal in the proof-relevant first-order Horn clause logic. The computed answer substitution and proof term then provide a solution to the given type inference and term synthesis problem. We prove the decidability and soundness of our method.
- 1 February 2018
- Published by Elsevier in Future Generation Computer Systems
- Vol. 79, 669-686
Finding parallel functional pearls: Automatic parallel recursion scheme detection in Haskell functions via anti-unification
- 1 February 2018
- Published by Elsevier in Future Generation Computer Systems
- Vol. 79, 669-686
Finding parallel functional pearls: Automatic parallel recursion scheme detection in Haskell functions via anti-unification
- 1 February 2018
- Published by Elsevier in Future Generation Computer Systems
- Vol. 79, 653-668
Automatically deriving cost models for structured parallel processes using hylomorphisms
- 1 February 2018
- Published by Elsevier in Future Generation Computer Systems
- Vol. 79, 653-668
Automatically deriving cost models for structured parallel processes using hylomorphisms