This repository contains the CRacer race detection tools. CRacer is a provably-good race detector for Cilk Plus programs. CRacer has relatively low overhead (most overhead occurs because of memory instrumentation) and runs in parallel.
CRacer uses a modified version of the Batcher runtime system, so that code is also included. Batcher automatically groups data structure operations into groups and calls the appropriate batched data structure operation. This makes it easy to develop parallel algorithms that use shared data structures, provided you can write a decently-parallel batched operation.
cilkplusrts
: The Cilk Plus runtime, with changes for Cracer/Batcher.rdtool
: The CRacer tool itself.cilk5rts
: The MIT Cilk 5 version of the Batcher runtime. No longer in use.ds
: Unfinished batched data structures that were for the Cilk 5 version.scripts
: A set of scripts, mostly used for running the cilk5 benchmarks.
The MIT Cilk 5 runtime and our modifications to it are distributed under the terms of the GNU General Public License. The Intel Cilk Plus runtime and our modifications to it are distributed under the terms of the BSD-3-Clause license. All other code in this repository is distributed under the MIT license, unless otherwise specified.
To use CRacer you will need a compiler that supports Cilk Plus and the
-fcilk-no-inline
option. The only known such compiler is
the WUSTL LLVM branch. To reproduce performance results, you will
probably also want to use link-time optimization (requires gold
linker) and Google's tcmalloc
.
Instructions for compiling and using CRacer can be found in rdtool/README.md.
- Cleanup old scripts.
- Archive Cilk 5 version and remove it
- Split the runtime info a separate project and make sure vanilla Batcher functionality isn't broken.
- Finish and convert data structures to use Cilk Plus
- Compare to flat combining. We did this initially but the results were too weird to get anything useful from a comparison.
Please use the following citiation when using this software in your work:
Robert Utterback, Kunal Agrawal, Jeremy T. Fineman, and I-Ting Angelina Lee, "Provably Good and Practically Efficient Parallel Race Detection for Fork-Join Programs", Proceedings of the 28th ACM Symposium on Parallelism in Algorithms and Architectures (SPAA), 2016. Available: https://dl.acm.org/citation.cfm?id=2935801.
This research was supported in part by National Science Foundation under grants number CCF-1527692, CCF-1218017, CCF-1150036, CCF-1218188, and CCF-1314633.
Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.