Disclaimer: We cannot guarantee that the software is bug-free,
so use it at your own risk. :-)
If you run into issues, please contact PI I-Ting Angelina Lee.
Our group works closely with the Cilk Plus concurrency platform, a C/C++ based parallel language. Many modern compilers support Cilk Plus, including GCC, Intel C/C++ compiler, and Clang/LLVM. Most of our work is done primarily with the Clang/LLVM Cilk Plus compiler and by extending the Cilk Plus runtime system released by Intel.
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!
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.
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.
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.