NVIDIA Research
Thumb "Automated Dynamic Analysis of CUDA Programs"
Michael Boyer, Kevin Skadron, Westley Weimer, in "Third Workshop on Software Tools for MultiCore Systems", April 2008

Publication(s): Third Workshop on Software Tools for MultiCore Systems
Author(s): Kevin Skadron
Year: April 2008
URL:
Download(s):
BibTeX

TXT
PDF

PDF

Abstract: Recent increases in the programmability and performance of GPUs have led to a surge of interest in utilizing them for general-purpose computations. Tools such as NVIDIA’s CUDA allow programmers to use a C-like language to code algorithms for execution on the GPU. Unfortunately, parallel programs are prone to subtle correctness and performance bugs, and Cuda tool support for solving these remains a work in progress.

As a first step towards addressing these problems, we present an automated analysis technique for finding two specific classes of bugs in CUDA programs: race conditions, which impact program correctness, and shared memory bank conflicts, which impact program performance. Our technique automatically instruments a program in two ways: to keep track of the memory locations accessed by different threads, and to use this data to determine whether bugs exist in the program. The instrumented source code can be run directly in CUDA’s device emulation mode, and any potential errors discovered will be automatically reported to the user. This automated analysis can help programmers find and solve subtle bugs in programs that are too complex to analyze manually. Although these issues are explored in the context of CUDA programs, similar issues will arise in any sufficiently “manycore” architecture.


 
 
LinkedInTwitterGoogle+FacebookReddit