Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

Paul Thomson

dblp:120/2177 · DBLP profile ↗
← Back
9ranked-venue papers
2as first author
1since 2021 · last 2021
—ORCID · none

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

Software engineering, systems software and programming languages · 6 · 1 since 2021Systems, architecture and hardware · 3 · 2 first-authorDatabases, data management, data science and information retrieval · 1

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
8 papers
Software testing · 42% Concurrent programming · 24% Program verification · 12%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Storage systems · 100%

Topics — the 20 heaviest of 22, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Software testing
compiler testing
0.822021
Test-case reduction and deduplication almost for free with transformation-based compiler testing · PLDI 2021
Automated testing of graphics shader compilers · Proc. ACM Program. Lang. 2017
Software testing › concurrency testing
systematic concurrency testing
0.632015
The lazy happens-before relation: better partial-order reduction for systematic concurrency testing · PPoPP 2015
Asynchronous programming, analysis and testing with state machines · PLDI 2015
Concurrency testing using schedule bounding: an empirical study · PPoPP 2014
Debugging and program repair › automated debugging
delta debugging
0.512021
Test-case reduction and deduplication almost for free with transformation-based compiler testing · PLDI 2021
Software testing › test optimization
test case reduction
0.512021
Test-case reduction and deduplication almost for free with transformation-based compiler testing · PLDI 2021
Concurrent programming
concurrency bugs
0.422015
The lazy happens-before relation: better partial-order reduction for systematic concurrency testing · PPoPP 2015
Concurrency testing using schedule bounding: an empirical study · PPoPP 2014
Program verification › code-level verification
GPU kernel verification
0.422015
The Design and Implementation of a Verification Technique for GPU Kernels · ACM Trans. Program. Lang. Syst. 2015
GPUVerify: a verifier for GPU kernels · OOPSLA 2012
Software testing
metamorphic testing
0.312017
Automated testing of graphics shader compilers · Proc. ACM Program. Lang. 2017
Software testing › compiler testing
shader compiler testing
0.312017
Automated testing of graphics shader compilers · Proc. ACM Program. Lang. 2017
Storage systems
distributed storage
0.212016
Uncovering Bugs in Distributed Storage Systems during Testing (Not in Production!) · FAST 2016
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
happens-before relation
0.212015
The lazy happens-before relation: better partial-order reduction for systematic concurrency testing · PPoPP 2015
Concurrent programming
memory models
0.212015
The lazy happens-before relation: better partial-order reduction for systematic concurrency testing · PPoPP 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 verification › model checking
partial order reduction
0.212015
The lazy happens-before relation: better partial-order reduction for systematic concurrency testing · PPoPP 2015
Program analysis › concurrent program analysis
static race detection
0.212015
Asynchronous programming, analysis and testing with state machines · PLDI 2015
Concurrent programming
concurrency bug detection
0.212014
Concurrency testing using schedule bounding: an empirical study · PPoPP 2014
Compilers and program optimization
intermediate representation
0.112021
Test-case reduction and deduplication almost for free with transformation-based compiler testing · PLDI 2021
Program analysis › static analysis
bug detection
0.112016
Uncovering Bugs in Distributed Storage Systems during Testing (Not in Production!) · FAST 2016
Empirical software engineering › software engineering research methodology
empirical study
0.112014
Concurrency testing using schedule bounding: an empirical study · PPoPP 2014

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

semantics-preserving transformation · 0.5deduplication · 0.5loop invariant inference · 0.4test case minimization · 0.3metamorphic testing · 0.3theorem proving · 0.2lazy happens-before relation · 0.2domain-specific language design · 0.2preemption bounding · 0.2delay bounding · 0.2
YearPublicationVenuePosition
2021 Test-case reduction and deduplication almost for free with transformation-based compiler testing
abstract
Recent transformation-based approaches to compiler testing look for mismatches between the results of pairs of equivalent programs, where one program is derived from the other by randomly applying semantics-preserving transformations. We present a formulation of transformation-based compiler testing that provides effective test-case reduction almost for free: if transformations are designed to be as small and independent as possible, standard delta debugging can be used to shrink a bug-inducing transformation sequence to a smaller subsequence that still triggers the bug. The bug can then be reported as a delta between an original and minimally-transformed program. Minimized transformation sequences can also be used to heuristically deduplicate a set of bug-inducing tests, recommending manual investigation of those that involve disparate types of transformations and thus may have different root causes. We demonstrate the effectiveness of our approach via a new tool, spirv-fuzz, the first compiler-testing tool for the SPIR-V intermediate representation that underpins the Vulkan GPU programming model.
Alastair F. Donaldson, Paul Thomson, Vasyl Teliman, Stefano Milizia, André Perez Maselco, Antoni Karpinski
PLDI2
2020 Putting Randomized Compiler Testing into Production (Experience Report)
abstract
We describe our experience over the last 18 months on a compiler testing technology transfer project: taking the GraphicsFuzz research project on randomized metamorphic testing of graphics shader compilers, and building the necessary tooling around it to provide a highly automated process for improving the Khronos Vulkan Conformance Test Suite (CTS) with test cases that expose fuzzer-found compiler bugs, or that plug gaps in test coverage. We present this tooling for test automation - gfauto - in detail, as well as our use of differential coverage and test case reduction as a method for automatically synthesizing tests that fill coverage gaps. We explain the value that GraphicsFuzz has provided in automatically testing the ecosystem of tools for transforming, optimizing and validating Vulkan shaders, and the challenges faced when testing a tool ecosystem rather than a single tool. We discuss practical issues associated with putting automated metamorphic testing into production, related to test case validity, bug de-duplication and floating-point precision, and provide illustrative examples of bugs found during our work.
Alastair F. Donaldson, Hugues Evrard, Paul Thomson
ECOOP3
2017 Automated testing of graphics shader compilers
abstract
We present an automated technique for finding defects in compilers for graphics shading languages. key challenge in compiler testing is the lack of an oracle that classifies an output as correct or incorrect; this is particularly pertinent in graphics shader compilers where the output is a rendered image that is typically under-specified. Our method builds on recent successful techniques for compiler validation based on metamorphic testing, and leverages existing high-value graphics shaders to create sets of transformed shaders that should be semantically equivalent. Rendering mismatches are then indicative of shader compilation bugs. Deviant shaders are automatically minimized to identify, in each case, a minimal change to an original high-value shader that induces a shader compiler bug. We have implemented the approach as a tool, GLFuzz, targeting the OpenGL shading language, GLSL. Our experiments over a set of 17 GPU and driver configurations, spanning the main 7 GPU designers, have led to us finding and reporting more than 60 distinct bugs, covering all tested configurations. As well as defective rendering, these issues identify security-critical vulnerabilities that affect WebGL, including a significant remote information leak security bug where a malicious web page can capture the contents of other browser tabs, and a bug whereby visiting a malicious web page can lead to a ``blue screen of death'' under Windows 10. Our findings show that shader compiler defects are prevalent, and that metamorphic testing provides an effective means for detecting them automatically.
Alastair F. Donaldson, Hugues Evrard, Andrei Lascu, Paul Thomson
Proc. ACM Program. Lang.4
2016 Uncovering Bugs in Distributed Storage Systems during Testing (Not in Production!)
Pantazis Deligiannis, Matt McCutchen, Paul Thomson, Shuo Chen 0001, Alastair F. Donaldson, John Erickson, Akash Lal, Rashmi Mudduluru, Shaz Qadeer, Wolfram Schulte
FAST3
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
PLDI5
2015 The lazy happens-before relation: better partial-order reduction for systematic concurrency testing
abstract
We present the lazy happens-before relation (lazy HBR), which ignores mutex-induced edges to provide a more precise notion of state equivalence compared with the traditional happens-before relation. We demonstrate experimentally that the lazy HBR has the potential to provide greater schedule reduction during systematic concurrency testing with respect to a set of 79 Java benchmarks.
Paul Thomson, Alastair F. Donaldson
PPoPP1
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.6
2014 Concurrency testing using schedule bounding: an empirical study
abstract
We present the first independent empirical study on schedule bounding techniques for systematic concurrency testing (SCT). We have gathered 52 buggy concurrent software benchmarks, drawn from public code bases, which we call SCTBench. We applied a modified version of an existing concurrency testing tool to SCTBench to attempt to answer several research questions, including: How effective are the two main schedule bounding techniques, preemption bounding and delay bounding, at bug finding? What challenges are associated with applying SCT to existing code? How effective is schedule bounding compared to a naive random scheduler at finding bugs? Our findings confirm that delay bounding is superior to preemption bounding and that schedule bounding is more effective at finding bugs than unbounded depth-first search. The majority of bugs in SCTBench can be exposed using a small bound (1-3), supporting previous claims, but there is at least one benchmark that requires 5 preemptions. Surprisingly, we found that a naive random scheduler is at least as effective as schedule bounding for finding bugs. We have made SCTBench and our tools publicly available for reproducibility and use in future work.
Paul Thomson, Alastair F. Donaldson, Adam Betts
PPoPP1
2012 GPUVerify: a verifier for GPU kernels
abstract
We present a technique for verifying race- and divergence-freedom of GPU kernels that are written in mainstream kernel programming languages such as OpenCL and CUDA. Our approach is founded on a novel formal operational semantics for GPU programming termed synchronous, delayed visibility (SDV) semantics. The SDV semantics provides a precise definition of barrier divergence in GPU kernels and allows kernel verification to be reduced to analysis of a sequential program, thereby completely avoiding the need to reason about thread interleavings, and allowing existing modular techniques for program verification to be leveraged. We describe an efficient encoding for data race detection and propose a method for automatically inferring loop invariants required for verification. We have implemented these techniques as a practical verification tool, GPUVerify, which can be applied directly to OpenCL and CUDA source code. We evaluate GPUVerify with respect to a set of 163 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, Shaz Qadeer, Paul Thomson
OOPSLA5