We present a novel technique for verifying properties of data parallel GPU programs via test amplification. The key insight behind our work is that we can use the technique of static information flow to amplify the result of a single test execution over the set of all inputs and interleavings that affect the property being verified. We empirically demonstrate the effectiveness of test amplification for verifying race-freedom and determinism over a large number of standard GPU kernels, by showing that the result of verifying a single dynamic execution can be amplified over the massive space of possible data inputs and thread interleavings.
Test amplification REF starts with dynamic testing of GPU programs, but employs a test amplification technique to generalize the results of the dynamic analysis over a large space of inputs.
Verifying GPU kernels by test amplification
PLDI '12
Computer Science