- NVIDIA GRID
- Quadro VCA
- NVIDIA DRIVE
- About NVIDIA
|"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|
|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.