Title
InstantCheck: Checking the Determinism of Parallel Programs Using On-the-Fly Incremental Hashing
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.
Year
DOI
Venue
2010
10.1109/MICRO.2010.55
IEEE Internet Computing
Keywords
Field
DocType
different hash,parallel programs,checks determinism,instant check programmer,different run,on-the-fly incremental hashing,determinism property,different test run,code testing,code input,different output,instant check,hardware,cryptography,instruction sets,registers,parsec,determinism,testing,multi threading,computer bugs
Virtualization,Parsec,Instruction set,Computer science,Cryptography,Parallel computing,Software bug,Real-time computing,Thread (computing),Hash function,Context switch
Conference
Citations 
PageRank 
References 
1
0.37
30
Authors
3
Name
Order
Citations
PageRank
Adrian Nistor11745.85
Darko Marinov22502126.52
Josep Torrellas33838262.89