Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2254064.2254110acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Verifying GPU kernels by test amplification

Published: 11 June 2012 Publication History

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

Cited By

View all
  • (2024)Sound and Partially-Complete Static Analysis of Data-Races in GPU ProgramsProceedings of the ACM on Programming Languages10.1145/36897978:OOPSLA2(2434-2461)Online publication date: 8-Oct-2024
  • (2023)Understanding the Topics and Challenges of GPU Programming by Classifying and Analyzing Stack Overflow PostsProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616365(1444-1456)Online publication date: 30-Nov-2023
  • (2022)Exploiting Epochs and Symmetries in Analysing MPI ProgramsProceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering10.1145/3551349.3556954(1-12)Online publication date: 10-Oct-2022
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

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
  • 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
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 11 June 2012

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. determinism
  2. gpu
  3. test amplification

Qualifiers

  • Research-article

Conference

PLDI '12
Sponsor:

Acceptance Rates

PLDI '12 Paper Acceptance Rate 48 of 255 submissions, 19%;
Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)20
  • Downloads (Last 6 weeks)2
Reflects downloads up to 10 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Sound and Partially-Complete Static Analysis of Data-Races in GPU ProgramsProceedings of the ACM on Programming Languages10.1145/36897978:OOPSLA2(2434-2461)Online publication date: 8-Oct-2024
  • (2023)Understanding the Topics and Challenges of GPU Programming by Classifying and Analyzing Stack Overflow PostsProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616365(1444-1456)Online publication date: 30-Nov-2023
  • (2022)Exploiting Epochs and Symmetries in Analysing MPI ProgramsProceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering10.1145/3551349.3556954(1-12)Online publication date: 10-Oct-2022
  • (2020)A Delta-Debugging Approach to Assessing the Resilience of Actor Programs through Run-time Test PerturbationsProceedings of the IEEE/ACM 1st International Conference on Automation of Software Test10.1145/3387903.3389303(21-30)Online publication date: 7-Oct-2020
  • (2018)Automatic Synchronization for GPU Kernels2018 Formal Methods in Computer Aided Design (FMCAD)10.23919/FMCAD.2018.8602999(1-9)Online publication date: Oct-2018
  • (2018)CURD: a dynamic CUDA race detectorACM SIGPLAN Notices10.1145/3296979.319236853:4(390-403)Online publication date: 11-Jun-2018
  • (2018)CURD: a dynamic CUDA race detectorProceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3192366.3192368(390-403)Online publication date: 11-Jun-2018
  • (2018)Implementing and Evaluating Candidate-Based Invariant GenerationIEEE Transactions on Software Engineering10.1109/TSE.2017.271851644:7(631-650)Online publication date: 1-Jul-2018
  • (2018)Mobilizing the Micro-Ops: Exploiting Context Sensitive Decoding for Security and Energy Efficiency2018 ACM/IEEE 45th Annual International Symposium on Computer Architecture (ISCA)10.1109/ISCA.2018.00058(624-637)Online publication date: Jun-2018
  • (2018)Towards Developing a Repository of Logical Errors Observed in Parallel Code for Teaching Code Correctness2018 IEEE/ACM Workshop on Education for High-Performance Computing (EduHPC)10.1109/EduHPC.2018.00011(69-77)Online publication date: Nov-2018
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media