skip to main content
research-article

Verifying GPU kernels by test amplification

Authors Info & Claims
Published:11 June 2012Publication History
Skip Abstract Section

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.

References

  1. L. Andersen. Program analysis and specialization for the C programming language. PhD thesis, 1994.Google ScholarGoogle Scholar
  2. A. Aviram, S.-C. Weng, S. Hu, and B. Ford. Efficient system-enforced deterministic parallelism. In OSDI, pages 193--206, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. M. Boyer, K. Skadron, and W. Weimer. Automated dynamic analysis of CUDA programs. In STMC, 2008.Google ScholarGoogle Scholar
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. F. Chen and G. Roşu. Parametric and sliced causality. In CAV, pages 240--253, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. P. A. Emrath and D. A. Padua. Automatic detection of nondeterminacy in parallel programs. In PADD, pages 89--99, 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. D. Engler and K. Ashcraft. RacerX: Effective, static detection of race conditions and deadlocks. In SOSP, pages 237--252, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. C. Flanagan and S. Freund. Type-based race detection for Java. In PLDI, pages 219--232, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. C. Flanagan and S. N. Freund. Atomizer: a dynamic atomicity checker for multithreaded programs. In POPL, pages 256--267, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. C. Flanagan and S. Qadeer. A type and effect system for atomicity. In PLDI, pages 191--202, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. P. Godefroid, N. Klarlund, and K. Sen. DART: directed automated random testing. In PLDI, pages 213--223, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. P. Godefroid, M. Y. Levin, and D. A. Molnar. Active property checking. In EMSOFT, pages 207--216, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. J. A. Goguen and J. Meseguer. Security policies and security models. IEEE Symposium on Security and Privacy, pages 11--20, 1982.Google ScholarGoogle ScholarCross RefCross Ref
  19. P. Joshi, K. Sen, and M. Shlimovich. Predictive testing: amplifying the effectiveness of software testing. In ESEC/FSE, pages 561--564, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. L. Lamport. Time, clocks, and the ordering of events in a distributed system. Commun. ACM, 21(7):558--565, 1978. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. E. Larson and T. Austin. High coverage detection of input-related security faults. In USENIX Security, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. C. Lattner and V. Adve. LLVM: A compilation framework for lifelong program analysis & transformation. In CGO, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. G. Li and G. Gopalakrishnan. Scalable smt-based verification of gpu kernel functions. In FSE, pages 187--196, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. R. J. Lipton. Reduction: a method of proving properties of parallel programs. Commun. ACM, 18:717--721, December 1975. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. T. Liu, C. Curtsinger, and E. D. Berger. Dthreads: Efficient deterministic multithreading. In SOSP, pages 327--336, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. F. Masdupuy. Semantic analysis of interval congruences. In Formal Methods in Programming and Their Applications, LNCS 735. 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. A. Myers. JFlow: Practical mostly-static information flow control. In POPL, pages 228--241, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. NVIDIA. CUDA toolkit 3.0. http://developer.nvidia.com/cuda-toolkit-30-downloads, 2010.Google ScholarGoogle Scholar
  29. NVIDIA. CUDA accelerated applications. http://www.nvidia.com/object/cuda_app_tesla.html, 2011.Google ScholarGoogle Scholar
  30. M. Raza, C. Calcagno, and P. Gardner. Automatic parallelization with separation logic. In ESOP, pages 348--362, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. C. Sadowski, S. N. Freund, and C. Flanagan. SingleTrack: A dynamic determinism checker for multithreaded programs. In ESOP, pages 394--409, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. K. Sen, D. Marinov, and G. Agha. CUTE: a concolic unit testing engine for c. In ESEC/FSE, pages 263--272, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. T. Terauchi. A type system for observational determinism. In CSF, pages 287--300, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  36. L. Wang and S. D. Stoller. Runtime analysis of atomicity for multithreaded programs. IEEE Trans. Softw. Eng., 32:93--110, February 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. S. Zdancewic and A. C. Myers. Observational determinism for concurrent program security. In CSFW, pages 29--43, 2003.Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. Verifying GPU kernels by test amplification

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in

            Full Access

            • Published in

              cover image ACM SIGPLAN Notices
              ACM SIGPLAN Notices  Volume 47, Issue 6
              PLDI '12
              June 2012
              534 pages
              ISSN:0362-1340
              EISSN:1558-1160
              DOI:10.1145/2345156
              Issue’s Table of Contents
              • cover image ACM Conferences
                PLDI '12: Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation
                June 2012
                572 pages
                ISBN:9781450312059
                DOI:10.1145/2254064

              Copyright © 2012 ACM

              Publisher

              Association for Computing Machinery

              New York, NY, United States

              Publication History

              • Published: 11 June 2012

              Check for updates

              Qualifiers

              • research-article

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader
            About Cookies On This Site

            We use cookies to ensure that we give you the best experience on our website.

            Learn more

            Got it!