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

Symbolic crosschecking of floating-point and SIMD code

Published: 10 April 2011 Publication History
  • Get Citation Alerts
  • Abstract

    We present an effective technique for crosschecking an IEEE 754 floating-point program and its SIMD-vectorized version, implemented in KLEE-FP, an extension to the KLEE symbolic execution tool that supports symbolic reasoning on the equivalence between floating-point values.
    The key insight behind our approach is that floatingpoint values are only reliably equal if they are essentially built by the same operations. As a result, our technique works by lowering the Intel Streaming SIMD Extension (SSE) instruction set to primitive integer and floating-point operations, and then using an algorithm based on symbolic expression matching augmented with canonicalization rules.
    Under symbolic execution, we have to verify equivalence along every feasible control-flow path. We reduce the branching factor of this process by aggressively merging conditionals, if-converting branches into select operations via an aggressive phi-node folding transformation.
    We applied KLEE-FP to OpenCV, a popular open source computer vision library. KLEE-FP was able to successfully crosscheck 51 SIMD/SSE implementations against their corresponding scalar versions, proving the bounded equivalence of 41 of them (i.e., on images up to a certain size), and finding inconsistencies in the other 10.

    References

    [1]
    Aharoni 2003 M. Aharoni, S. Asaf, L. Fournier, A. Koifman, and R. Nagel. FPgen - a test generation framework for datapath floating-point verification. In HLDVT '03, 2003.
    [2]
    Alpern 1988 B. Alpern, M. N. Wegman, and F. K. Zadeck. Detecting equality of variables in programs. In POPL'88, Jan. 1988.
    [3]
    Boldo 2007 Sylvie Boldo and Jean-Christophe Filliatre. Formal verification of floating-point programs. In ARITH'07, 2007.
    [4]
    Boonstoppel 2008 Peter Boonstoppel, Cristian Cadar, and Dawson Engler. RWset: Attacking path explosion in constraint-based test generation. In TACAS'08, Mar.-Apr. 2008.
    [5]
    Botella 2006 Bernard Botella, Arnaud Gotlieb, and Claude Michel. Symbolic execution of floating-point computations. Software Testing, Verification and Reliability, 16 (2): 97--121, 2006.
    [6]
    Bradski 2008 Gary Bradski and Adrian Kaehler. Learning OpenCV: Computer Vision with the OpenCV Library. O'Reilly Media, 2008.
    [7]
    Cadar 2008 Cristian Cadar, Daniel Dunbar, and Dawson Engler. KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In OSDI '08, Dec. 2008.
    [8]
    Chuang 2003 Weihaw Chuang, Brad Calder, and Jeanne Ferrante. Phi-predication for light-weight if-conversion. In CGO 2003, March 2003.
    [9]
    Clarke 2003 Edmund Clarke and Daniel Kroening. Hardware verification using ANSI-C programs as a reference. In ASP-DAC'03, Jan. 2003.
    [10]
    Currie 2006 David Currie, Xiushan Feng, Masahiro Fujita, Alan J. Hu, Mark Kwan, and Sreeranga Rajan. Embedded software verification using symbolic execution and uninterpreted functions. International Journal of Parallel Programming, 34 (1): 61--91, 2006.
    [11]
    Eichenberger 2004 Alexandre E. Eichenberger, Peng Wu, and Kevin O'Brien. Vectorization for SIMD architectures with alignment constraints. In PLDI '04, June 2004.
    [12]
    Ganesh 2007 Vijay Ganesh and David L. Dill. A decision procedure for bit-vectors and arrays. In CAV '07, July 2007.
    [13]
    Godefroid 2007 Patrice Godefroid. Compositional dynamic test generation. In POPL'07, Jan. 2007.
    [14]
    Harrison 2007 John Harrison. Floating-point verification. Journal of Universal Computer Science, 13 (5): 629--638, 2007.
    [15]
    Holzbaur 1995 Christian Holzbaur. clp(q,r) manual rev. 1.3.2. Technical report, Austrian Research Institute for Artificial Intelligence, Vienna, 1995.
    [16]
    IEEE Task P754 2008 IEEE Task P754. IEEE 754-2008, Standard for Floating-Point Arithmetic. August 2008.
    [17]
    Intel Intel and Willow Garage. OpenCV 2.1.0: Open source computer vision library. http://opencv.willowgarage.com/.
    [18]
    Int 1999 ISO/IEC 9899-1999: Programming Languages-C. International Organization for Standardization, December 1999.
    [19]
    Int 2003 ISO/IEC 14882:2003(E): Programming Languages-C++. International Organization for Standardization, October 2003.
    [20]
    King 1975 James C. King. A new approach to program testing. In ICRS'75, April 1975.
    [21]
    klee.llvm.org klee.llvm.org. KLEE website. http://klee.llvm.org.
    [22]
    Larsen 2000 Samuel Larsen and Saman Amarasinghe. Exploiting superword level parallelism with multimedia instruction sets. In PLDI '00, May 2000.
    [23]
    Lattner 2004 Chris Lattner and Vikram Adve. LLVM: A compilation framework for lifelong program analysis and transformation. In CGO '04, Mar. 2004.
    [24]
    Majumdar 2009} Rupak Majumdar and Ru-Gang Xu. Reducing test inputs using information partitions. In CAV '09, July 2009.
    [25]
    Michel 2002 Claude Michel. Exact projection functions for floating point number constraints. In AMAI '02, 2002.
    [26]
    Moore 1959 Ramon E. Moore and C. T. Yang. Interval analysis I. Technical Document LMSD-285875, Lockheed Missiles and Space Division, Sunnyvale, CA, USA, 1959.
    [27]
    Naishlos 2003 Dorit Naishlos, Marina Biberstein, Shay Ben-David, and Ayal Zaks. Vectorizing for a SIMdD DSP architecture. In CASES '03, Oct.-Nov. 2003.
    [28]
    Necula 2000 George C. Necula. Translation validation for an optimizing compiler. May 2000.
    [29]
    Smith 2008 Eric Whitman Smith and David L. Dill. Automatic formal verification of block cipher implementations. In FMCAD '08, November 2008.

    Cited By

    View all
    • (2024)Structural testing for CUDA programming modelConcurrency and Computation: Practice and Experience10.1002/cpe.810536:14Online publication date: 9-Apr-2024
    • (2023)State Merging with Quantifiers in Symbolic ExecutionProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616287(1140-1152)Online publication date: 30-Nov-2023
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    EuroSys '11: Proceedings of the sixth conference on Computer systems
    April 2011
    370 pages
    ISBN:9781450306348
    DOI:10.1145/1966445
    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: 10 April 2011

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. bounded verification
    2. klee-fp
    3. simd
    4. sse
    5. symbolic crosschecking

    Qualifiers

    • Research-article

    Conference

    EuroSys '11
    Sponsor:
    EuroSys '11: Sixth EuroSys Conference 2011
    April 10 - 13, 2011
    Salzburg, Austria

    Acceptance Rates

    EuroSys '11 Paper Acceptance Rate 24 of 161 submissions, 15%;
    Overall Acceptance Rate 241 of 1,308 submissions, 18%

    Upcoming Conference

    EuroSys '25
    Twentieth European Conference on Computer Systems
    March 30 - April 3, 2025
    Rotterdam , Netherlands

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)28
    • Downloads (Last 6 weeks)3

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Structural testing for CUDA programming modelConcurrency and Computation: Practice and Experience10.1002/cpe.810536:14Online publication date: 9-Apr-2024
    • (2023)State Merging with Quantifiers in Symbolic ExecutionProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616287(1140-1152)Online publication date: 30-Nov-2023
    • (2023)Memory access protocols: certified data-race freedom for GPU kernelsFormal Methods in System Design10.1007/s10703-023-00415-0Online publication date: 26-May-2023
    • (2022)Data and Process Quality Evaluation in a Textual Big Data Archiving SystemJournal on Computing and Cultural Heritage 10.1145/346101515:1(1-19)Online publication date: 20-Mar-2022
    • (2022)NuMFUZZ: A Floating-Point Format Aware Fuzzer for Numerical Programs2022 29th Asia-Pacific Software Engineering Conference (APSEC)10.1109/APSEC57359.2022.00046(338-347)Online publication date: Dec-2022
    • (2022)Testing Vehicle-Mounted Systems: A Stepwise Symbolic Execution Approach for OSEK/VDX ProgramsTheoretical Aspects of Software Engineering10.1007/978-3-031-10363-6_15(205-219)Online publication date: 2022
    • (2022)Verification of Vectorization of Signal TransformsLanguages and Compilers for Parallel Computing10.1007/978-3-030-95953-1_15(215-231)Online publication date: 16-Feb-2022
    • (2021)A bounded symbolic-size model for symbolic executionProceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3468264.3468596(1190-1201)Online publication date: 20-Aug-2021
    • (2021)Checking Data-Race Freedom of GPU Kernels, CompositionallyComputer Aided Verification10.1007/978-3-030-81685-8_19(403-426)Online publication date: 15-Jul-2021
    • 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