Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO) (2013)
Shenzhen, China China
Feb. 23, 2013 to Feb. 27, 2013
A popular approach for producing parallel software is to develop a sequential version of an application and then incrementally introduce parallel constructs to parallelize different parts of the application. During the parallelization process, programming errors may be introduced, causing concurrency bugs. In this paper we develop a technique for runtime detection of data dependence faults (i.e., data races and atomicity violations) introduced during parallelization. By leveraging the availability of two versions of the program, the sequential one and the parallelized one, we comparison check dynamic data dependences exercised during executions of the two versions to identify faults. To reduce the cost of comparison checking we develop three optimizations. The first optimization causes only a subset of dynamically exercised data dependences to be comparison checked. The second optimization shows that not all instances of a dynamically exercised data dependence need to be comparison checked. The third optimization shows that static analysis of parallelizing constructs can be exploited to eliminate the need for executing the parallelized version altogether. In addition, our solution is applicable when different program executions on the same input may follow different execution paths, it is effective in situations where the fault introduced manifests itself rarely during execution, and it is also effective in pinpointing the location of the fault in the program. We implemented and evaluated our approach using ten benchmarks. The experimental results indicate an average slowdown of 3× to perform fault detection.
Optimization, Computer bugs, Benchmark testing, Concurrent computing, Debugging, Pipeline processing,atomicity violations, program parallelization, debugging, dependence violation, data races
Li Tan, Min Feng, R. Gupta, "Lightweight fault detection in parallelized programs", Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO), vol. 00, no. , pp. 1-11, 2013, doi:10.1109/CGO.2013.6494979