Abstract
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.
- L. Andersen. Program analysis and specialization for the C programming language. PhD thesis, 1994.Google Scholar
- A. Aviram, S.-C. Weng, S. Hu, and B. Ford. Efficient system-enforced deterministic parallelism. In OSDI, pages 193--206, 2010. Google Scholar
Digital Library
- T. Bergan, O. Anderson, J. Devietti, L. Ceze, and D. Grossman. CoreDet: a compiler and runtime system for deterministic multithreaded execution. In ASPLOS, pages 53--64, 2010. Google Scholar
Digital Library
- M. Boyer, K. Skadron, and W. Weimer. Automated dynamic analysis of CUDA programs. In STMC, 2008.Google Scholar
- C. Cadar, V. Ganesh, P. M. Pawlowski, D. L. Dill, and D. R. Engler. EXE: automatically generating inputs of death. In CCS, pages 322--335, 2006. Google Scholar
Digital Library
- C. Cadar, P. Godefroid, S. Khurshid, C. S. Păsăreanu, K. Sen, N. Tillmann, and W. Visser. Symbolic execution for software testing in practice: preliminary assessment. In ICSE, pages 1066--1071, 2011. Google Scholar
Digital Library
- F. Chen and G. Roşu. Parametric and sliced causality. In CAV, pages 240--253, 2007. Google Scholar
Digital Library
- A. Dinning and E. Schonberg. Detecting access anomalies in programs with critical sections. In Workshop on Parallel and Distributed Debugging, pages 85--96, 1991. Google Scholar
Digital Library
- P. A. Emrath and D. A. Padua. Automatic detection of nondeterminacy in parallel programs. In PADD, pages 89--99, 1988. Google Scholar
Digital Library
- D. Engler and K. Ashcraft. RacerX: Effective, static detection of race conditions and deadlocks. In SOSP, pages 237--252, 2003. Google Scholar
Digital Library
- C. Flanagan and S. Freund. Type-based race detection for Java. In PLDI, pages 219--232, 2000. Google Scholar
Digital Library
- C. Flanagan and S. N. Freund. Atomizer: a dynamic atomicity checker for multithreaded programs. In POPL, pages 256--267, 2004. Google Scholar
Digital Library
- C. Flanagan and S. Qadeer. A type and effect system for atomicity. In PLDI, pages 191--202, 2003. Google Scholar
Digital Library
- P. Godefroid. Partial-Order Methods for the Verification of Concurrent Systems: An Approach to the State-Explosion Problem. Springer-Verlag New York, Inc., Secaucus, NJ, USA, 1996. Google Scholar
Digital Library
- P. Godefroid and J. Kinder. Proving memory safety of floating-point computations by combining static and dynamic program analysis. In ISSTA, pages 1--12, 2010. Google Scholar
Digital Library
- P. Godefroid, N. Klarlund, and K. Sen. DART: directed automated random testing. In PLDI, pages 213--223, 2005. Google Scholar
Digital Library
- P. Godefroid, M. Y. Levin, and D. A. Molnar. Active property checking. In EMSOFT, pages 207--216, 2008. Google Scholar
Digital Library
- J. A. Goguen and J. Meseguer. Security policies and security models. IEEE Symposium on Security and Privacy, pages 11--20, 1982.Google Scholar
Cross Ref
- P. Joshi, K. Sen, and M. Shlimovich. Predictive testing: amplifying the effectiveness of software testing. In ESEC/FSE, pages 561--564, 2007. Google Scholar
Digital Library
- L. Lamport. Time, clocks, and the ordering of events in a distributed system. Commun. ACM, 21(7):558--565, 1978. Google Scholar
Digital Library
- E. Larson and T. Austin. High coverage detection of input-related security faults. In USENIX Security, 2003. Google Scholar
Digital Library
- C. Lattner and V. Adve. LLVM: A compilation framework for lifelong program analysis & transformation. In CGO, 2004. Google Scholar
Digital Library
- G. Li and G. Gopalakrishnan. Scalable smt-based verification of gpu kernel functions. In FSE, pages 187--196, 2010. Google Scholar
Digital Library
- R. J. Lipton. Reduction: a method of proving properties of parallel programs. Commun. ACM, 18:717--721, December 1975. Google Scholar
Digital Library
- T. Liu, C. Curtsinger, and E. D. Berger. Dthreads: Efficient deterministic multithreading. In SOSP, pages 327--336, 2011. Google Scholar
Digital Library
- F. Masdupuy. Semantic analysis of interval congruences. In Formal Methods in Programming and Their Applications, LNCS 735. 1993. Google Scholar
Digital Library
- A. Myers. JFlow: Practical mostly-static information flow control. In POPL, pages 228--241, 1999. Google Scholar
Digital Library
- NVIDIA. CUDA toolkit 3.0. http://developer.nvidia.com/cuda-toolkit-30-downloads, 2010.Google Scholar
- NVIDIA. CUDA accelerated applications. http://www.nvidia.com/object/cuda_app_tesla.html, 2011.Google Scholar
- M. Raza, C. Calcagno, and P. Gardner. Automatic parallelization with separation logic. In ESOP, pages 348--362, 2009. Google Scholar
Digital Library
- C. Sadowski, S. N. Freund, and C. Flanagan. SingleTrack: A dynamic determinism checker for multithreaded programs. In ESOP, pages 394--409, 2009. Google Scholar
Digital Library
- S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson. Eraser: A dynamic data race detector for multi-threaded programs. ACM Transactions on Computer Systems, 15:391--411, 1997. Google Scholar
Digital Library
- K. Sen, D. Marinov, and G. Agha. CUTE: a concolic unit testing engine for c. In ESEC/FSE, pages 263--272, 2005. Google Scholar
Digital Library
- T. Terauchi. A type system for observational determinism. In CSF, pages 287--300, 2008. Google Scholar
Digital Library
- M. T. Vechev, E. Yahav, R. Raman, and V. Sarkar. Automatic verification of determinism for structured parallel programs. In SAS, pages 455--471, 2010. Google Scholar
Digital Library
- L. Wang and S. D. Stoller. Runtime analysis of atomicity for multithreaded programs. IEEE Trans. Softw. Eng., 32:93--110, February 2006. Google Scholar
Digital Library
- S. Zdancewic and A. C. Myers. Observational determinism for concurrent program security. In CSFW, pages 29--43, 2003.Google Scholar
Cross Ref
Index Terms
Verifying GPU kernels by test amplification
Recommendations
Verifying GPU kernels by test amplification
PLDI '12: Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and ImplementationWe 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 ...
Lock-based synchronization for GPU architectures
CF '16: Proceedings of the ACM International Conference on Computing FrontiersModern GPUs have shown promising results in accelerating compute-intensive and numerical workloads with limited data sharing. However, emerging GPU applications manifest ample amount of data sharing among concurrently executing threads. Often data ...
Developer-centric test amplification: The interplay between automatic generation human exploration
AbstractAutomatically generating test cases for software has been an active research topic for many years. While current tools can generate powerful regression or crash-reproducing test cases, these are often kept separately from the maintained test ...







Comments