GPUCheck: Detecting CUDA Thread Divergence with Static Analysis

Loading...
Thumbnail Image

Citation for Previous Publication

Link to Related Item

Abstract

Description

Graphics Processing Units~(GPUs) have been widely used to accelerate the performance of programs. However, such performance gains can be significantly degraded by irregular data accesses and by control-flow divergence. Both of these performance issues arise only in the presence of thread-divergent expressions---expressions that evaluate to different values for different threads. The effect on performance depends on the number of threads that are left idle by control divergence, or on the number of distinct memory accesses that are required to satisfy all the memory references from a single warp of threads. Even experienced programmers may fail to identify control divergence or non-coalesceable memory accesses. This paper introduces GPUcheck: a static analysis tool that detects branch divergence and non-coalesceable memory accesses in GPU programs. GPUcheck relies on a static dataflow analysis to find thread-dependent expressions and on a novel symbolic analysis to determine when such expressions could lead to performance issues. GPUcheck supports programmers by informing them, at compile time without executing any GPU code, of potential performance problems.

Item Type

http://purl.org/coar/resource_type/c_93fc

Alternative

Other License Text / Link

Language

en

Location

Time Period

Source