Jeroen Ketema

dblp:30/5210 · DBLP profile ↗
← Back
27ranked-venue papers
12as first author
0since 2021 · last 2020
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Theory of computation · 15 · 11 first-authorSoftware engineering, systems software and programming languages · 11 · 1 first-authorSystems, architecture and hardware · 3Databases, data management, data science and information retrieval · 2 · 1 first-authorArtificial intelligence and machine learning · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
7 papers
Program verification · 56% Concurrent programming · 18% Program analysis · 15%
Theoretical computer science
1 paper
Logic in computer science · 100%
Computer architecture, parallel and distributed computing, and storage systems
5 papers
GPUs and heterogeneous computing · 100%

Topics — the 17 heaviest of 19, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program verification › code-level verification
GPU kernel verification
0.942018
Implementing and Evaluating Candidate-Based Invariant Generation · IEEE Trans. Software Eng. 2018
The Design and Implementation of a Verification Technique for GPU Kernels · ACM Trans. Program. Lang. Syst. 2015
Engineering a Static Verification Tool for GPU Kernels · CAV 2014
Program verification
invariant generation
0.312018
Implementing and Evaluating Candidate-Based Invariant Generation · IEEE Trans. Software Eng. 2018
Program analysis
static analysis
0.312018
Implementing and Evaluating Candidate-Based Invariant Generation · IEEE Trans. Software Eng. 2018
Program verification
underapproximation
0.312018
Implementing and Evaluating Candidate-Based Invariant Generation · IEEE Trans. Software Eng. 2018
Concurrent programming › concurrency models
asynchronous programming
0.212015
Asynchronous programming, analysis and testing with state machines · PLDI 2015
Concurrent programming › concurrency bug detection
data race detection
0.212015
The Design and Implementation of a Verification Technique for GPU Kernels · ACM Trans. Program. Lang. Syst. 2015
Concurrent programming
memory models
0.212015
GPU Concurrency: Weak Behaviours and Programming Assumptions · ASPLOS 2015
Programming languages and type systems › language semantics › formal semantics
operational semantics
0.212015
The Design and Implementation of a Verification Technique for GPU Kernels · ACM Trans. Program. Lang. Syst. 2015
Program analysis › concurrent program analysis
static race detection
0.212015
Asynchronous programming, analysis and testing with state machines · PLDI 2015
Software testing › concurrency testing
systematic concurrency testing
0.212015
Asynchronous programming, analysis and testing with state machines · PLDI 2015
Program verification
concurrent program verification
0.212014
A sound and complete abstraction for reasoning about parallel prefix sums · POPL 2014
Program verification
static verification
0.212014
Engineering a Static Verification Tool for GPU Kernels · CAV 2014
Logic in computer science › term rewriting
infinitary rewriting
0.112011
Infinitary Combinatory Reduction Systems · Inf. Comput. 2011
Logic in computer science
rewriting systems
0.112011
Infinitary Combinatory Reduction Systems · Inf. Comput. 2011
Logic in computer science
term rewriting
0.112011
Infinitary Combinatory Reduction Systems · Inf. Comput. 2011
GPUs and heterogeneous computing
GPU programming
0.122015
GPU Concurrency: Weak Behaviours and Programming Assumptions · ASPLOS 2015
Engineering a Static Verification Tool for GPU Kernels · CAV 2014
GPUs and heterogeneous computing
GPU computing
0.112014
A sound and complete abstraction for reasoning about parallel prefix sums · POPL 2014

Methods — techniques the papers use, named apart from their topics

under-approximation · 0.7static analysis · 0.7litmus testing · 0.4formal specification · 0.4static verification · 0.4soundness and completeness proof · 0.4abstraction · 0.4theorem proving · 0.2loop invariant inference · 0.2domain-specific language design · 0.2two-thread reduction · 0.2infinitary rewriting · 0.1combinatory logic · 0.1
YearPublicationVenuePosition
2020 Reducing Code Complexity through Code Refactoring and Model-Based Rejuvenation
abstract
Over time, software tends to grow more complex, hampering understandability and further development. To reduce accidental complexity, model-based rejuvenation techniques have been proposed. These techniques combine reverse engineering (extracting models) with forward engineering (generating code). Unfortunately, model extraction can be error-prone, and validation can often only be performed at a late stage by testing the generated code. We intend to mitigate the aforementioned challenges, making model-based rejuvenation more controlled. We describe an exploratory case study that aims to rejuvenate an industrial embedded software component implementing a nested state machine. We combine two techniques. First, we develop and apply a series of small, automated, case-specific code refactorings that ensure the code (a) uses well-known programming idioms, and (b) easily maps onto the type of model we intend to extract. Second, we perform model-based rejuvenation focusing on the high-level structure of the code. The above combination of techniques gives ample opportunity for early validation, in the form of code reviews and testing, as each refactoring is performed directly on the existing code. Moreover, aligning the code with the type of model we intend to extract significantly simplifies the extraction, making the process less error-prone. Hence, we consider code refactoring to be a useful stepping stone towards model-based rejuvenation.
Arjan J. Mooij, Jeroen Ketema, A. Steven Klusener, Mathijs Schuts
SANER2
2019 Computing with Infinite Terms and Infinite Reductions
abstract
We define computable infinitary rewriting by introducing computability to the study of strongly convergent infinite reductions over infinite first-order terms. Given computable infinitary reductions, we show that descendants and origins—essential to proving fundamental properties such as compression and confluence—are computable across such reductions.
Jeroen Ketema, Jakob Grue Simonsen
Fundam. Informaticae1
2018 Reducing Code Duplication by Identifying Fresh Domain Abstractions
abstract
When software components are developed iteratively, code frequently evolves in an inductive manner: a unit (class, method, etc.) is created and is then copied and modified many times. Such development often happens when variation points and, hence, proper domain abstractions are initially unclear. As a result, there may be substantial amounts of code duplication, and the code may be difficult to understand and maintain, warranting a redesign. We apply a model-based process to semi-automatically redesign an inductively-evolved industrial adapter component written in C++: we use reverse engineering to obtain models of the component, and generate redesigned code from the models. Based on our experience, we propose to use three models to help recover understanding of inductively-evolved components, and transform the components into redesigned implementations. Guided by a reference design, a component's code is analyzed and a legacy model is extracted that captures the component's functionality in a form close to its original structure. The legacy model is then unfolded, creating a flat model which eliminates design decisions by focusing on functionality in terms of external interfaces. Analyzing the variation points of the flat model yields a redesigned model and fresh domain abstractions to be used in the new design of the component.
A. Steven Klusener, Arjan J. Mooij, Jeroen Ketema, Hans van Wezep
ICSME3
2018 Implementing and Evaluating Candidate-Based Invariant Generation
abstract
The discovery of inductive invariants lies at the heart of static program verification. Presently, many automatic solutions to inductive invariant generation are inflexible, only applicable to certain classes of programs, or unpredictable. An automatic technique that circumvents these deficiencies to some extent is candidate-based invariant generation, whereby a large number of candidate invariants are guessed and then proven to be inductive or rejected using a sound program analyzer. This paper describes our efforts to apply candidate-based invariant generation in GPUVerify, a static checker for programs that run on GPUs. We study a set of 383 GPU programs that contain loops, drawn from a number of open source suites and vendor SDKs. Among this set, 253 benchmarks require provision of loop invariants for verification to succeed. We describe the methodology we used to incrementally improve the invariant generation capabilities of GPUVerify to handle these benchmarks, through candidate-based invariant generation, using cheap static analysis to speculate potential program invariants. We also describe a set of experiments that we used to examine the effectiveness of our rules for candidate generation, assessing rules based on their generality (the extent to which they generate candidate invariants), hit rate (the extent to which the generated candidates hold), worth (the extent to which provable candidates actually help in allowing verification to succeed), and influence (the extent to which the success of one generation rule depends on candidates generated by another rule). We believe that our methodology may serve as a useful framework for other researchers interested in candidate-based invariant generation. The candidates produced by GPUVerify help to verify 231 of the 253 programs. This increase in precision, however, makes GPUVerify sluggish: the more candidates that are generated, the more time is spent determining which are inductive invariants. To speed up this process, we have investigated four under-approximating program analyses that aim to reject false candidates quickly and a framework whereby these analyses can run in sequence or in parallel. Across two platforms, running Windows and Linux, our results show that the best combination of these techniques running sequentially-speeds up invariant generation across our benchmarks by 1.17× (Windows) and 1.01× (Linux), with per-benchmark best speedups of 93.58× (Windows) and 48.34× (Linux), and worst slowdowns of 10.24× (Windows) and 43.31× (Linux). We find that parallelizing the strategies marginally improves overall invariant generation speedups to 1.27× (Windows) and 1.11× (Linux), maintains good best-case speedups of 91.18× (Windows) and 44.60× (Linux), and, importantly, dramatically reduces worst-case slowdowns to 3.15× (Windows) and 3.17× (Linux).
Adam Betts, Nathan Chong, Pantazis Deligiannis, Alastair F. Donaldson, Jeroen Ketema
IEEE Trans. Software Eng.5
2017 Forward Progress on GPU Concurrency (Invited Talk)
abstract
The tutorial at CONCUR will provide a practical overview of work undertaken over the last six years in the Multicore Programming Group at Imperial College London, and with collaborators internationally, related to understanding and reasoning about concurrency in software designed for acceleration on GPUs. In this article we provide an overview of this work, which includes contributions to data race analysis, compiler testing, memory model understanding and formalisation, and most recently efforts to enable portable GPU implementations of algorithms that require forward progress guarantees.
Alastair F. Donaldson, Jeroen Ketema, Tyler Sorensen 0001, John Wickerson
CONCUR2
2017 Termination analysis for GPU kernels
Jeroen Ketema, Alastair F. Donaldson
Sci. Comput. Program.1
2015 PENCIL: A Platform-Neutral Compute Intermediate Language for Accelerator Programming
abstract
Programming accelerators such as GPUs with low-level APIs and languages such as OpenCL and CUDA is difficult, error-prone, and not performance-portable. Automatic parallelization and domain specific languages (DSLs) have been proposed to hide complexity and regain performance portability. We present PENCIL, a rigorously-defined subset of GNU C99-enriched with additional language constructs-that enables compilers to exploit parallelism and produce highly optimized code when targeting accelerators. PENCIL aims to serve both as a portable implementation language for libraries, and as a target language for DSL compilers. We implemented a PENCIL-to-OpenCL backend using a state-of-the-art polyhedral compiler. The polyhedral compiler, extended to handle data-dependent control flow and non-affine array accesses, generates optimized OpenCL code. To demonstrate the potential and performance portability of PENCIL and the PENCIL-to-OpenCL compiler, we consider a number of image processing kernels, a set of benchmarks from the Rodinia and SHOC suites, and DSL embedding scenarios for linear algebra (BLAS) and signal processing radar applications (SpearDE), and present experimental results for four GPU platforms: AMD Radeon HD 5670 and R9 285, NVIDIA GTX 470, and ARM Mali-T604.
Riyadh Baghdadi, Ulysse Beaugnon, Albert Cohen 0001, Tobias Grosser, Michael Kruse, Chandan Reddy 0001, Sven Verdoolaege, Adam Betts, Alastair F. Donaldson, Jeroen Ketema, Javed Absar, Sven van Haastregt, Alexey Kravets, Anton Lokhmotov, Elnar Hajiyev
PACT10
2015 GPU Concurrency: Weak Behaviours and Programming Assumptions
abstract
Concurrency is pervasive and perplexing, particularly on graphics processing units (GPUs). Current specifications of languages and hardware are inconclusive; thus programmers often rely on folklore assumptions when writing software.
Jade Alglave, Mark Batty, Alastair F. Donaldson, Ganesh Gopalakrishnan, Jeroen Ketema, Daniel Poetzl, Tyler Sorensen 0001, John Wickerson
ASPLOS5
2015 Asynchronous programming, analysis and testing with state machines
abstract
Programming efficient asynchronous systems is challenging because it can often be hard to express the design declaratively, or to defend against data races and interleaving-dependent assertion violations. Previous work has only addressed these challenges in isolation, by either designing a new declarative language, a new data race detection tool or a new testing technique. We present P#, a language for high-reliability asynchronous programming co-designed with a static data race analysis and systematic concurrency testing infrastructure. We describe our experience using P# to write several distributed protocols and port an industrial-scale system internal to Microsoft, showing that the combined techniques, by leveraging the design of P#, are effective in finding bugs.
Pantazis Deligiannis, Alastair F. Donaldson, Jeroen Ketema, Akash Lal, Paul Thomson
PLDI3
2015 The Design and Implementation of a Verification Technique for GPU Kernels
abstract
We present a technique for the formal verification of GPU kernels, addressing two classes of correctness properties: data races and barrier divergence. Our approach is founded on a novel formal operational semantics for GPU kernels termed synchronous, delayed visibility (SDV) semantics, which captures the execution of a GPU kernel by multiple groups of threads. The SDV semantics provides operational definitions for barrier divergence and for both inter- and intra-group data races. We build on the semantics to develop a method for reducing the task of verifying a massively parallel GPU kernel to that of verifying a sequential program. This completely avoids the need to reason about thread interleavings, and allows existing techniques for sequential program verification to be leveraged. We describe an efficient encoding of data race detection and propose a method for automatically inferring the loop invariants that are required for verification. We have implemented these techniques as a practical verification tool, GPUVerify, that can be applied directly to OpenCL and CUDA source code. We evaluate GPUVerify with respect to a set of 162 kernels drawn from public and commercial sources. Our evaluation demonstrates that GPUVerify is capable of efficient, automatic verification of a large number of real-world kernels.
Adam Betts, Nathan Chong, Alastair F. Donaldson, Jeroen Ketema, Shaz Qadeer, Paul Thomson, John Wickerson
ACM Trans. Program. Lang. Syst.4
2014 Engineering a Static Verification Tool for GPU Kernels
Ethel Bardsley, Adam Betts, Nathan Chong, Peter Collingbourne, Pantazis Deligiannis, Alastair F. Donaldson, Jeroen Ketema, Daniel Liew, Shaz Qadeer
CAV7
2014 A sound and complete abstraction for reasoning about parallel prefix sums
abstract
Prefix sums are key building blocks in the implementation of many concurrent software applications, and recently much work has gone into efficiently implementing prefix sums to run on massively parallel graphics processing units (GPUs). Because they lie at the heart of many GPU-accelerated applications, the correctness of prefix sum implementations is of prime importance.
Nathan Chong, Alastair F. Donaldson, Jeroen Ketema
POPL3
2013 Interleaving and Lock-Step Semantics for Analysis and Verification of GPU Kernels
Peter Collingbourne, Alastair F. Donaldson, Jeroen Ketema, Shaz Qadeer
ESOP3
2013 Barrier invariants: a shared state abstraction for the analysis of data-dependent GPU kernels
abstract
Data-dependent GPU kernels, whose data or control flow are dependent on the input of the program, are difficult to verify because they require reasoning about shared state manipulated by many parallel threads. Existing verification techniques for GPU kernels achieve soundness and scalability by using a two-thread reduction and making the contents of the shared state nondeterministic each time threads synchronise at a barrier, to account for all possible thread interactions. This coarse abstraction prohibits verification of data-dependent kernels. We present barrier invariants, a novel abstraction technique which allows key properties about the shared state of a kernel to be preserved across barriers during formal reasoning. We have integrated barrier invariants with the GPUVerify tool, and present a detailed case study showing how they can be used to verify three prefix sum algorithms, allowing efficient modular verification of a stream compaction kernel, a key building block for GPU programming. This analysis goes significantly beyond what is possible using existing verification techniques for GPU kernels.
Nathan Chong, Alastair F. Donaldson, Paul H. J. Kelly, Jeroen Ketema, Shaz Qadeer
OOPSLA4
2013 Least upper bounds on the size of confluence and church-rosser diagrams in term rewriting and λ-calculus
abstract
We study confluence and the Church-Rosser property in term rewriting and λ-calculus with explicit bounds on term sizes and reduction lengths. Given a system R , we are interested in the lengths of the reductions in the smallest valleys t → * s ′ * ← t ′ expressed as a function: —for confluence a function vs R ( m , n ) where the valleys are for peaks t ← s → * t ′ with s of size at most m and the reductions of maximum length n , and —for the Church-Rosser property a function cvs R ( m , n ) where the valleys are for conversions t ↔ * t ′ with t and t ′ of size at most m and the conversion of maximum length n . For confluent Term Rewriting Systems (TRSs), we prove that vs R is a total computable function, and for linear such systems that cvs R is a total computable function. Conversely, we show that every total computable function is the lower bound on the functions vs R ( m , n ) and cvs R ( m , n ) for some TRS R : In particular, we show that for every total computable function φ: N → N there is a TRS R with a single term s such that vs R (| s |, n ) ≥ φ( n ) and cvs R ( n , n ) ≥ φ( n ) for all n . For orthogonal TRSs R we prove that there is a constant k such that: (a) vs R ( m , n ) is bounded from above by a function exponential in k and (b) cvs R ( m , n ) is bounded from above by a function in the fourth level of the Grzegorczyk hierarchy. Similarly, for λ-calculus, we show that vs R ( m , n ) is bounded from above by a function in the fourth level of the Grzegorczyk hierarchy.
Jeroen Ketema, Jakob Grue Simonsen
ACM Trans. Comput. Log.1
2012 Characterizing Languages by Normalization and Termination in String Rewriting - (Extended Abstract)
Jeroen Ketema, Jakob Grue Simonsen
Developments in Language Theory1
2012 A distributed scheduling algorithm for real-time (D-SAR) industrial wireless sensor and actuator networks
abstract
Current wireless standards and protocols for industrial applications, such as WirelessHART and ISA100.11a, typically use centralized network management for communication scheduling and route establishment. However, due to their centralized nature, these protocols have difficulty coping with dynamic large-scale networks. To address this problem, we propose D-SAR, a distributed resource reservation algorithm that allows source nodes to meet the Quality-of-Service requirements for peer-to-peer communication. D-SAR uses concepts derived from circuit switching and Asynchronous Transfer Mode (ATM) networks and applies them to wireless sensor and actuator networks. Simulations show that latency in connection setup is 93% less in D-SAR compared to WirelessHART and that 89% fewer messages are sent during connection setup in case the distance from source to destination is 12 hops.
Pouria Zand, Supriyo Chatterjea, Jeroen Ketema, Paul J. M. Havinga
ETFA3
2012 Rational Term Rewriting Revisited: Decidability and Confluence
Takahito Aoto 0001, Jeroen Ketema
ICGT2
2012 Reinterpreting Compression in Infinitary Rewriting
abstract
Departing from a computational interpretation of compression in infinitary rewriting, we view compression as a degenerate case of standardisation. The change in perspective comes about via two observations: (a) no compression property can be recovered for non-left-linear systems and (b) some standardisation procedures, as a "side-effect", yield compressed reductions.
Jeroen Ketema
RTA1
2011 Anagopos: A Reduction Graph Visualizer for Term Rewriting and Lambda Calculus
abstract
We present Anagopos, an open source tool for visualizing reduction graphs of terms in lambda calculus and term rewriting. Anagopos allows step-by-step generation of reduction graphs under six different graph drawing algorithms. We provide ample examples of graphs drawn with the tool.
Niels Bjørn Bugge Grathwohl, Jeroen Ketema, Jens Duelund Pallesen, Jakob Grue Simonsen
RTA2
2011 Infinitary Combinatory Reduction Systems
Jeroen Ketema, Jakob Grue Simonsen
Inf. Comput.1
2011 Counterexamples in infinitary rewriting with non-fully-extended rules
Jeroen Ketema
Inf. Process. Lett.1
2009 Comparing Böhm-Like Trees
Jeroen Ketema
RTA1
2008 On Normalisation of Infinitary Combinatory Reduction Systems
Jeroen Ketema
RTA1
2005 On Confluence of Infinitary Combinatory Reduction Systems
Jeroen Ketema, Jakob Grue Simonsen
LPAR1
2005 Infinitary Combinatory Reduction Systems
Jeroen Ketema, Jakob Grue Simonsen
RTA1
2004 Böhm-Like Trees for Term Rewriting Systems
Jeroen Ketema
RTA1