Results 1 -
5 of
5
The Design and Implementation of a Verification Technique for GPU Kernels
"... 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 se-mantics for GPU kernels termed synchronous, delayed visibility (SDV) semantics, which captu ..."
Abstract
-
Cited by 5 (4 self)
- Add to MetaCart
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 se-mantics for GPU kernels termed synchronous, delayed visibility (SDV) semantics, which captures the exe-cution 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 sequen-tial 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 ker-nels 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.
Engineering a Static Verification Tool for GPU Kernels,”
- in Proc. of the 26th International Conference on Computer-Aided Verification (CAV’14),
, 2014
"... Abstract. We report on practical experiences over the last 2.5 years related to the engineering of GPUVerify, a static verification tool for OpenCL and CUDA GPU kernels, plotting the progress of GPUVerify from a prototype to a fully functional and relatively efficient analysis tool. Our hope is tha ..."
Abstract
-
Cited by 5 (4 self)
- Add to MetaCart
(Show Context)
Abstract. We report on practical experiences over the last 2.5 years related to the engineering of GPUVerify, a static verification tool for OpenCL and CUDA GPU kernels, plotting the progress of GPUVerify from a prototype to a fully functional and relatively efficient analysis tool. Our hope is that this experience report will serve the verification community by helping to inform future tooling efforts.
Parallel prefix polymorphism permits parallelization, presentation & proof. arXiv preprint arXiv:1410.6449
, 2014
"... Polymorphism in programming languages enables code reuse. Here, we show that polymorphism has broad applicability far beyond computations for technical computing: paral-lelism in distributed computing, presentation of visual-izations of runtime data flow, and proofs for formal verifi-cation of corre ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
(Show Context)
Polymorphism in programming languages enables code reuse. Here, we show that polymorphism has broad applicability far beyond computations for technical computing: paral-lelism in distributed computing, presentation of visual-izations of runtime data flow, and proofs for formal verifi-cation of correctness. The ability to reuse a single codebase for all these purposes provides new ways to understand and verify parallel programs.
The GPUVerify Method: a Tutorial Overview
, 2014
"... I present a tutorial overview demonstrating the key technique used by GPUVerify, a static verification tool for graphics processing unit (GPU) kernels. The technique is a method for translating a massively parallel GPU kernel into a sequential program such that correctness of the sequential program ..."
Abstract
- Add to MetaCart
I present a tutorial overview demonstrating the key technique used by GPUVerify, a static verification tool for graphics processing unit (GPU) kernels. The technique is a method for translating a massively parallel GPU kernel into a sequential program such that correctness of the sequential program implies data race-freedom of the parallel kernel.
Verification of Producer-Consumer Synchronization in GPU Programs
"... ns iste nt * Complete * W ell D ocumented*Easyto ..."
(Show Context)