From time to time, our work results in tools built on top of Cilk Plus or
extends the compiler / runtime with features that can be of use to
the broader community — whether it's for research or educational purpose,
and we release these software via our
public GitLab account,
so check back often to see what we are up to!

P-RACER

P-RACER is a parallel race detector for Cilk-P, a variant of Cilk Plus that
supports pipeline parallelism. The tool can race detect while executing the
computation in parallel and provides provably efficient running time.
The description of the algorithm and software can be found in our
PPoPP 2018
paper.
The code respository can be found in our
public GitLab account,
along with documentation for installation.

PORRidge

PORRidge is a process-oblivious record-replayer for Cilk computations
that employ locks.
The description of the software can be found in our
PPoPP 2017
paper.
The code respository can be found in our
public GitLab account,
along with documentation for installation.

C-RACER

C-RACER is a parallel race detector for Cilk Plus computations; it can race detect while
executing the computation in parallel.
The description of the software can be found in our
SPAA 2016
paper.
The code respository can be found in our
public GitLab account,
along with documentation for installation.

Clang/LLVM Cilk Plus Compiler

This version of Clang/LLVM Cilk Plus compiler implements two additional
funcationalities:

Instrumentation for building dynamic program analysis tools
for Cilk Plus:

When supplied with -fcilktool compiler flag, this version of
Cilk Plus compiler inserts instrumentation code at various code
points to capture events that may be of interest to a
dynamic program analysis tool, such as when entering a Cilk function,
right before a spawn statement ... etc. The instrumentation
inserted by this compiler closely resembles that documented in
the open specification
for "Intrinsics for Low Overhead Tool Annotations"
released by Intel.

Acknowledgement: this code base was originally conceived when we built
Cilkprof, and was largely done in collaboration with authors listed
in the paper.

Avoid inlining of calls to runtime:

The Cilk Plus compiler generates code that interacts with the underlying
runtime system (see the the
Cilk Plus ABI for detail description of runtime calls).
Often time, if you are a researcher modifying the underlying runtime
system, the fact that the compiler inline certain calls becomes a real
inconvenience. When supplied with -fcilk-no-inline compiler flag,
this compiler avoids inlining of the runtime calls. Note that no inlining
of runtime calls can incur performance penalty. This overhead can
be largely avoided by turning on link-time optimization and use
static linking to link with the runtime.

To setup this version of compiler, you can run
this build script that will clone the code
from our public repo and build it. Note that you need to also get our
version of runtime that implements the non-inlined runtime functions if you
intend to use the compiler with -fcilk-no-inline flag.

Cilk Plus runtime that implements all non-inlined functions:

If you use our version of Clang/LLVM Cilk Plus compiler, and you intend
to use the compiler with -fcilk-no-inline flag, you need a version
of runtime that implements the non-inlined functions (by default they
were not implemented).
Here it is.