Usage
  • 710 views
  • 1890 downloads

GPUCheck: Detecting CUDA Thread Divergence with Static Analysis

  • Author(s) / Creator(s)
  • 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.

  • Date created
    2019-01-01
  • Subjects / Keywords
  • Type of Item
    Report
  • DOI
    https://doi.org/10.7939/R3W669R4S
  • License
    Attribution-NonCommercial 4.0 International