Software

This page contains software that is a product of research by myself and my research group. In general, this software is released under either the GNU Public License version 2.0 or the GNU Library Public License. If you use any of this software, please let us know and use the indicated citation; if you plan to use any of this software in a non-educational setting, you may need a special license, and should contact me directly (emery@cs.umass.edu).

Hoard

Hoard is a fast, scalable, and memory-efficient memory allocator for Linux, Solaris, Mac OS X, and Windows. It is in wide use in academia and industry.
Project page, download link, publication and citation info.

Heap Layers

Heap Layers is an infrastructure for building high-performance memory allocators, including Hoard (above), DieHard, and others.
Project page, publication and citation info. The Heap Layers infrastructure is included in the Hoard distribution.

DieHard

DieHard is a runtime system that lets buggy programs run correctly and protects them from a range of security vulnerabilities. DieHard was the direct inspiration for Windows 7's Fault-Tolerant Heap.
Project page, download link, publication and citation info.

Flux

Flux is a domain-specific programming language for building high-performance servers. It is declarative, can re-use existing C code, and abstracts away concerns like threads and locks while preventing deadlocks. In addition to generating servers, Flux can also generate queuing network models, which enable accurate performance prediction.
Project page, download link, publication and citation info.

Dthreads

Dthreads is an efficient deterministic multithreading system for unmodified C/C++ applications that replaces the pthreads library. Dthreads enforces determinism in the face of data races and deadlocks. It is easy to use: just link your program with "-ldthread" instead of "-lpthread".
Download link, publication and citation info.
YouTube video of presentation, presentation slides.

Sheriff

Sheriff consists of two tools: Sheriff-Detect, a false-sharing detector, and Sheriff-Protect, a false-sharing eliminator that you can link with your code to eliminate false sharing.
Download link, publication and citation info.

AutoMan

AutoMan is a platform for integrating human-based and digital computation. It allows programmers to "program with people", which appear to the programmer to be ordinary function calls. AutoMan automatically handles details like quality control, payment, and task scheduling. It is currently implemented as a domain-specific language embedded in Scala, and uses Amazon's Mechanical Turk as a backend.
Source code on GitHub, UMass CS technical report (in submission).

Stabilizer

Stabilizer is a compiler and runtime system that enables statistically rigorous performance evaluation. Stabilizer eliminates measurement bias by comprehensively and repeatedly randomizing the placement of functions, stack frames, and heap objects in memory. Random placement makes anomalous layouts unlikely and independent of the environment; re-randomization ensures they are short-lived when they do occur. Using Stabilizer, we find that, across the SPEC CPU2000 and CPU2006 benchmark suites, the effect of the -O3 optimization level versus -O2 is indistinguishable from noise.
source code repo on GitHub, or download tarball of source code; UMass CS technical report (in submission).