KUDA : The Split Race Checker

Numerous runtime analysis tools are designed to observe the concurrency bugs in parallel programs (i.e. heisenbugs), there exists commercial or open source types available. Whereas usability of these tools is hurt by their performance, slowdowns may reach several thousand times the application only run. Overhead of these tools can be divided to two tightly coupled jobs: tracing and analyzing. Traditionally, on-the-fly runtime verification algorithms have been designed to run on the same processing unit as the code being monitored and both costs contribute to the slowdown of the program being monitored. We propose a novel approach for runtime analysis framework, on commodity computers with the help of a GPU. Our approach allows us to carry out analysis work on separate, dedicated processing unit without any additional or custom hardware, in parallel. Simply put, we allow the parallel runtime analysis to run concurrently in another runtime. As a demonstration of concept, we investigate on detecting concurrency bugs, in particular, data race detection; whereas one can potentially use this framework to carry out other types of analysis like specification violations, containment and even recovery from errors. We only use an additional CPU thread, a fixed size 16 MB communication buffer and a CUDA-enabled GPU. Our experiments on the performance of the split race checker framework shows that it is on average 5 times faster than traditional race checking.