Currently we have 10 benchmarks to evaluate the checker

peterson Peterson's Mutual exclusion algorithm [4]
tbarrier Tournament barrier algorithm, Barrier benchmark from [2]
dc Double-checked locking pattern [5]
rw-vol Read-after-write Java volatile semantic test by [3]
rowo Multiprocessor diagnostic tests ARCHTEST (ROWO) [1]
po Multiprocessor diagnostic tests ARCHTEST (PO) [1]
iw1 Independent workers problem [6]
iw2 Independent workers problem [6]
rw Two readers - single writer problem
bb Bounded buffer/Producer-consumer problem

Each zip file contains 3 files:
- <name>.test: contains the details for running the benchmark (memory model, search method)
- <name>.cs: The source code of the benchmark
- <name>.il: The disassembled bytecode using the tool ildasm.exe from Microsoft .NET Framework SDK.

Please note that newer versions of the .NET compiler produce slightly different bytecodes for the same source files that we used. Recompiling the .cs and .il will produce slightly different results as well. We used Microsoft .NET Framework 1.1 compiler to create the .il files on this website.

To run the benchmark, execute the command
mmchecker <name>.test

References

  1. W.W. Collier. Reasoning about Parallel Architectures. Prentice Hall, 1992. Details available from http://www.mpdiag.com/archtest.html
  2. JGF The Java Grande Forum Multi-threaded Benchmarks, 2001. Http://www.epcc.ed.ac.uk/computing/research_activities/java_grande/threads.html
  3. W. Pugh Test for sequential consistency of volatiles. http://www.cs.umd.edu/~pugh/java/memoryModel/ReadAfterWrite.java
  4. M. Raynal. Algorithms for mutual exclusion. MIT Press, 1986
  5. D. Schmidt and T. Harrison. Double-checked locking; An optimization pattern for efficiently initializing and accessing thread-safe objects. In 3rd annual Pattern Languages of Program Design conference, 1996
  6. M. B. Dwyer, J. Hatcliff, Robby, V. R. Prasad. Exploiting Object Escape and Locking Information in Partial Order Reduction for Concurrent Object-Oriented Programs. FMSD 25(2/3): 199-240 (2004).