Total Recall: A Debugging Framework for GPUs

Loading...
Thumbnail Image
Date
2008
Journal Title
Journal ISSN
Volume Title
Publisher
The Eurographics Association
Abstract
GPUs have transformed from simple fixed-function processors to powerful, programmable stream processors and are continuing to evolve. Programming these massively parallel GPUs, however, is very different from programming a sequential CPU. Lack of native support for debugging coupled with the parallelism in the GPU makes program development for the GPU a non-trivial task. As GPU programs grow in complexity because of scaling in maximum allowed program size and increased demand in terms of realism, debugging GPU code is becoming a major timesink for content developers. In addition to more complex shaders, applications are using multi-pass effects in order to create more convincing reality. In this paper, we present a debugging framework that can be employed to debug complex code running on the GPU in an efficient manner. By observing the API calls of the application that are made to the 3D runtime, the framework can keep track of the program's state in memory. Upon the programmer's request, it is able to capture and deterministically replay the stream of instructions that caused the final write to a pixel of interest. This execution stream includes writes to intermediate render targets and spans across shader boundaries. The stream of instructions can then be replayed on the CPU via emulation and the programmer can debug the straight-line code with ease. We also present a hardware-friendly scheme that can be used to accelerate the debugging process for long-chain multi-pass effects.
Description

        
@inproceedings{
:10.2312/EGGH/EGGH08/013-020
, booktitle = {
Graphics Hardware
}, editor = {
David Luebke and John Owens
}, title = {{
Total Recall: A Debugging Framework for GPUs
}}, author = {
Sharif, Ahmad
and
Lee, Hsien-Hsin S.
}, year = {
2008
}, publisher = {
The Eurographics Association
}, ISSN = {
1727-3471
}, ISBN = {
978-3-905674-09-5
}, DOI = {
/10.2312/EGGH/EGGH08/013-020
} }
Citation