Scalable Automatic Verification of GPU Kernels
Scalable Automatic Verification of GPU Kernels
批准号:
EP/K011499/1
负责人:
Alastair Donaldson
金额:
$12.75万
依托单位:
依托单位国家:
英国
项目类别:
Research Grant
财政年份:
2013
资助国家:
英国
项目状态:
已结题
起止时间:
2013 至 --
中文摘要
点击翻译按钮获取中文摘要
英文摘要
Until relatively recently the processing speed of computer systems increased at an exponential rate. Each year it was possible to use computers to solve computational problems that the previous year were out of reach. Around 2005, physical limits stopped this trend: it became infeasible to increase the clock rate of a processor without consuming an exorbitant amount of energy. To counter this, processor manufacturers have since aimed to provide increased performance by designing "multicore" processors, which consist of two or more processing units on a chip. Many computational tasks are parallelisable, in which case they can be distributed across the cores of a multicore processor.Recently there has been a trend towards "many-core" processors, with hundreds or thousands of processing elements. For highly parallel applications, many-core processors can offer a massive speedup. The most readily available many-core processors are graphics processing units (GPUs) from companies such as NVIDIA, AMD, Intel, ARM and Imagination Technologies. GPUs were originally designed to accelerate graphical computations, but have become sufficiently general purpose for accelerating computational tasks in a variety of domains, including financial analysis, medical imaging, media processing and simulation.GPUs are programmed by writing a "kernel" function, a program which will be executed by hundreds or thousands of threads running in parallel on the GPU. Parallel threads can communicate using shared memory, and synchronise using barrier statements. Writing correct GPU kernels is more challenging than writing sequential software due to two main problems: data races and barrier divergence. A data race occurs when two GPU threads access a shared memory location, at least one of the threads modifies this location, and no barrier statement separates the accesses. Data races almost always signify bugs in the kernel and lead to nondeterministic behaviour. Barrier divergence occurs when distinct threads reach different barrier statements in the kernel, and leads to deadlock.Because GPUs are becoming widely used for general purpose software development, there is an urgent need for analysis techniques to help GPU programmers write correct code. Techniques to analyse GPU kernels with respect to data races and barrier divergence would significantly speed up the GPU software development process, leading to shorter time-to-market for GPU-accelerated applications.In this project we plan to design formal techniques for verifying race- and divergence-freedom for GPU kernels. To be adopted and trusted by industrial practitioners our techniques must be highly automatic, scalable, and based on rigorous semantic foundations.We plan to achieve these aims by developing a rigorous GPU memory model specification, and a formal semantics for GPU kernel execution that makes no assumptions about the structure of the kernel to be analysed. Based on these semantic foundations, we will design a verification technique that aims to prove absence of data races and barrier divergence by generating a "contract" for the kernel: a machine-checkable proof that kernel execution cannot lead to these defects. Contract-based verification is modular - each kernel procedure is analysed separately - and thus scalable. We will design a template-based contract generation method that captures domain-specific knowledge about common GPU programming idioms. This will allow efficient verification of GPU kernels that use typical data access patterns. For more intricate kernels that implement highly optimised algorithms, we will design a method based on Craig interpolation. This method will construct a proof of race- and divergence-freedom up to a bounded execution depth, and then attempt to extract a general contract from this proof.Throughout, we will evaluate our methods using open source and industrial GPU kernels, including kernels provided by our industrial collaborators.
期刊论文(10)
专著(0)
科研奖励(0)
会议论文
登录
查看更多内容
Barrier invariants
障碍不变量
DOI:
10.1145/2509136.2509517
发表时间:
2013
期刊:
影响因子:
--
作者:
[Chong N]
通讯作者:
Chong N
GPU Concurrency Weak Behaviours and Programming Assumptions
GPU 并发弱行为和编程假设
DOI:
10.1145/2775054.2694391
发表时间:
2015
期刊:
ACM SIGPLAN Notices
影响因子:
--
作者:
[Alglave J]
通讯作者:
Alglave J
NASA Formal Methods
NASA 正式方法
DOI:
10.1007/978-3-319-06200-6_18
发表时间:
2014
期刊:
影响因子:
--
作者:
[Bardsley E]
通讯作者:
Bardsley E
A sound and complete abstraction for reasoning about parallel prefix sums
用于推理并行前缀和的合理且完整的抽象
DOI:
10.1145/2535838.2535882
发表时间:
2014
期刊:
影响因子:
--
作者:
[Chong N]
通讯作者:
Chong N
GPU Concurrency
GPU并发
DOI:
10.1145/2694344.2694391
发表时间:
2015
期刊:
影响因子:
--
作者:
[Alglave J]
通讯作者:
Alglave J
共 8 条
Reliable Many-Core Programming
-
批准号:EP/N026314/1
-
项目类别:Fellowship
-
资助金额:$128.15万
-
财政年份:2016
-
负责人:Alastair Donaldson
-
依托单位:
Advanced Formal Verification Techniques for Heterogeneous Multi-core Programming
-
批准号:EP/G051100/2
-
项目类别:Fellowship
-
资助金额:$8.19万
-
财政年份:2011
-
负责人:Alastair Donaldson
-
依托单位:
Advanced Formal Verification Techniques for Heterogeneous Multi-core Programming
-
批准号:EP/G051100/1
-
项目类别:Fellowship
-
资助金额:$30.01万
-
财政年份:2009
-
负责人:Alastair Donaldson
-
依托单位:
海外基金