Implementing and Evaluating Candidate-Based Invariant Generation
Adam Betts, Nathan Chong, Pantazis Deligiannis, Alastair F. Donaldson,, Jeroen Ketema

TL;DR
This paper enhances GPU program verification by applying candidate-based invariant generation, improving success rates but also increasing computational effort, and explores methods to speed up candidate validation.
Contribution
It demonstrates the application of candidate-based invariant generation in GPUVerify, improving verification success on GPU programs and proposing techniques to accelerate candidate validation.
Findings
GPUVerify verified 231 out of 253 programs using candidate invariants.
Candidate generation increases verification success but also computational time.
Proposed analyses aim to quickly reject false candidates to improve efficiency.
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. 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 GPU programs that contain loops, drawn from a number of open source suites and vendor SDKs. 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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Testing and Debugging Techniques · Formal Methods in Verification · Logic, programming, and type systems
