Wed 15 Jun 2016 14:00 - 14:30 at Grand Ballroom Santa Ynez - Testing & Debugging Chair(s): Benjamin Zorn

We present the systematic design of a testing environment that uses stressing and fuzzing to reveal errors in GPU applications that arise due to weak memory effects. We evaluate our approach on seven GPUs spanning three Nvidia architectures, across ten CUDA applications that use fine-grained concurrency. Our results show that applications that rarely or never exhibit errors related to weak memory when executed natively can readily exhibit these errors when executed in our testing environment. Our testing environment also provides a means to identify the root causes of erroneous weak effects, and automatically suggests how to insert fences that harden the application against weak memory bugs. To understand the cost of GPU fences we benchmark applications with fences provided by the hardening strategy as well as a more conservative, sound fencing strategy.