• DocumentCode
    2241337
  • Title

    InstantCheck: Checking the Determinism of Parallel Programs Using On-the-Fly Incremental Hashing

  • Author

    Nistor, Adrian ; Marinov, Darko ; Torrellas, Josep

  • Author_Institution
    Univ. of Illinois at Urbana-Champaign, Urbana, IL, USA
  • fYear
    2010
  • fDate
    4-8 Dec. 2010
  • Firstpage
    251
  • Lastpage
    262
  • Abstract
    Developing multithreaded programs in shared-memory systems is difficult. One key reason is the nondeterminism of thread interaction, which may result in one code input producing different outputs in different runs. Unfortunately, enforcing determinism by construction typically comes at a performance, hardware, or programmability cost. An alternative is to check during testing whether code is deterministic. This paper presents Instant Check, a novel technique that checks determinism with a very small runtime overhead while requiring only a minor hardware extension. During code testing, Instant-Check can check whether the code under test ends up in a deterministic state in various runs. The idea is to compute a 64-bit hash of the memory state and compare the hashes of different test runs that have the same input. If two runs have different hashes, Instant-Check reports state nondeterminism. For efficient operation, Instant Checkuses on-the-fly incremental hashing in hardware. The hash is kept in a per-core 64-bit register, which trivially supports virtualization, migration, and context switching. We use Instant Check to understand the determinism properties of 17 popular applications, including Sphinx3, PBZip2, PARSEC, and SPLASH-2. Instant Check incurs a negligible average runtime overhead of 0.3% over native testing runs. We also show how using Instant Check programmers can find bugs and discuss other applications of fast memory-state hashing. While using Instant Check, we found a real bug in the widely used PARSEC benchmark.
  • Keywords
    cryptography; file organisation; multi-threading; shared memory systems; 64-bit register; InstantCheck programmer; PARSEC; PBZip2; SPLASH-2; Sphinx3; code testing; hardware extension; memory state; multithreaded program; on-the-fly incremental hashing; parallel program; shared memory system; Determinism; Incremental Hashing; Memory State Hash;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Microarchitecture (MICRO), 2010 43rd Annual IEEE/ACM International Symposium on
  • Conference_Location
    Atlanta, GA
  • ISSN
    1072-4451
  • Print_ISBN
    978-1-4244-9071-4
  • Type

    conf

  • DOI
    10.1109/MICRO.2010.55
  • Filename
    5695541