Welcome to OpenCilk! Here you can find recent developments with the Cilk multithreaded programming technology.

What is Cilk? What is OpenCilk?

Cilk aims to make parallel programming a simple extension of ordinary serial programming. Other concurrency platforms, such as Intel’s Threading Building Blocks (TBB) and OpenMP, share similar goals of making parallel programming easier. But Cilk sets itself apart from other concurrency platforms through its simple design and implementation and its powerful suite of provably effective tools. These properties make Cilk well suited as a platform for next-generation multicore research.

OpenCilk develops and maintains OpenCilk, an open-source implementation of the Cilk concurrency platform. OpenCilk is largely compatible with the Cilk Plus language extension to C and C++; see the programming guide for details. OpenCilk incorporates several enhancements to the Cilk platform:

Compilation with Tapir/LLVM

OpenCilk compiles Cilk programs using the Tapir/LLVM compiler, which is based on Clang and LLVM and compiles parallel programs more efficiently than existing compilers for parallel programming languages.

Provably efficient scheduling

The Cilk runtime system implements a work-stealing scheduler that is guaranteed to schedule the parallel program efficiently on whatever parallel processors are available at runtime.

Regression testing for determinism

The Cilksan determinacy-race detector, packaged with Tapir/LLVM, offers provable guarantees that enable effective regression-testing of Cilk programs for determinism.

Scalability analysis

Cilk supports efficient tools for finding performance bottlenecks that inhibit a program’s parallel scalability.

What’s in the works?

There are several enhancements to the Cilk system currently under development:

  • New language constructs, including support for spawning statements, Cilk blocks that are automatically synced when control leaves their lexical scope, and support for inlets.

  • A new implementation of reducer hyperobjects. The new implementation will include an improved language syntax for using reducers, a more efficient implementation of reducers in the runtime system, and compiler optimizations that target reducers in Cilk programs.

  • Various parallel compiler optimizations, including general sync elimination, fusion of cilk_for loops, and automatic coarsening of cilk_for loops.

  • Runtime interoperability with Pthreads, to allow programmers to parallelize individual Pthreads using Cilk without breaking existing concurrency mechanisms in the program.

  • Performance enhancements to the Cilksan determinacy-race detector. These enhancements include data-compression schemes to reduce Cilksan’s space overhead, a more efficient implementation of the Cilksan algorithm, and incorporation of compiler analysis of determinacy races into Cilksan.

  • Improved scalability analysis and profiling. These improvements including augmenting Cilkscale to analyze scheduling overheads, to profile the work and span of a Cilk program, and to analyze the sensitivity of each function on the whole program’s scalability.

  • Integration of the CSI framework for compiler instrumentation. The CSI framework makes it easy for tool writers to write efficient dynamic-analysis tools that use compiler instrumentation without modifying the compiler or understanding its internals.

  • Enhanced documentation on programming in Cilk and on using each component of the Cilk platform. As a result, developers working on other parallel languages, such as OpenMP, Julia, or Rayon, can selectively make use of components of the Cilk platform, such as the Tapir/LLVM compiler, the runtime system, or the tool suite.

  • Educational and teaching materials, workshops, and tutorials on Cilk.

  • A cloud VM with the complete package of Cilk technologies installed and properly configured, to make it easy to try out Cilk.

  • Cilk software libraries, including libraries for graph computations, such as Ligra.

  • A suite of benchmark applications written in Cilk, including benchmarks in the Problem-based benchmark suite.

Have a suggestion or feature request? We want to hear about it! Document your suggestion as a new issue on our issue tracker.

Next steps

Contact us

Have a question about Cilk? Want to keep up to date on the latest Cilk technology? Found a bug? Have a suggestion? Let us know!

Last updated: