Skip to content

OpenCilk 2.1

Latest
Compare
Choose a tag to compare
@neboat neboat released this 13 Jan 13:20

Release notes for OpenCilk 2.1

OpenCilk 2.1 features the following enhancements.

Major changes

  • The compiler has been upgraded and is now based on LLVM 16.0.6.
  • [New, beta feature] The compiler includes the LambdaABI Tapir back end. Using LambdaABI, one can extend OpenCilk with a new parallel runtime system simply by providing an appropriate bitcode-ABI file for that runtime system, as described in the OpenCilk conference paper at ACM PPoPP 2023.
  • Reducers have been improved in several ways:
    • In C++, reducers are now implicitly converted to views when binding references.
    • The previous restriction that Cilk programs can use at most 1024 reducers has been lifted.
    • Reducer performance has been improved.
  • Support has been improved for using ASan to check Cilk programs for memory errors.
  • Support for building the runtime system and Cilk tools as standalone projects has been improved.
  • Many bug fixes and performance improvements have been incorporated.

Minor changes

  • [Beta feature] The OpenMPABI Tapir back end has been replaced with a new OMPTaskABI back end that uses a bitcode-ABI file, as described in the OpenCilk conference paper.
  • Cilksan has been extended with instrumentation for more library functions and compiler intrinsics.
  • Cilksan's support for reducers is now independent of the runtime system. Cilksan's reducer support no longer requires specialized functionality from cheetah to simulate steals.
  • The runtime system's implementation of C++-exception support has been simplified.
  • The runtime system's logic for stealing work has been simplified.

Acknowledgments

Thanks to everyone who helped test this new version of OpenCilk, especially:

  • Brian Wheatman
  • Samir Droubi
  • Ryan Deng
  • @bababuck
  • MIT course 6.106, Fall 2023