Intel Cilk Plus Multi-Threading Support Going Into GCC
This morning there was news of Intel committed their open-source OpenMP Run-Time Library as a new LLVM project. Now this afternoon there's more good news for multi-threading in open-source compilers: the GCC steering committee will allow Intel to add their Cilk+ Runtime Library to the GCC code-base as they add multi-threading Cilk Plus C/C++ support to the compiler.
Cilk Plus is an extension to C and C++ to allow for multi-threaded parallel computing. The language extensions make it easier for 32-bit and 64-bit task and data parallelism. The Cilk+ language extensions principally come down to new cilk_for, cilk_spawn, and cilk_sync keywords for allowing loop bodies to execute in parallel, function calls to execute asynchronously, and waiting for all spawned calls in a function to complete, respectively.
Cilk Plus has been supported by Intel's in-house compiler while they have committed to open-source support in both GCC and LLVM/Clang. Back in 2011 we first wrote about Intel porting Cilk Plus to GCC, then in August of last year that Intel was close to wanting to merge the support, and at the end of last year Intel was waiting for the code to merge.
Intel has the support ready to land and last month sent out new patches for introducing the Cilk_spawn and Cilk_sync keywords into the C and C++ compilers. However, besides the compiler changes, there's also the needed run-time support for Cilk Plus binaries. Intel has already made the run-time library available under the GPLv3 and BSD-3 licenses for GCC and LLVM/Clang, respectively. However, Intel had to wait on permission from the GCC steering committee to introduce a foreign library.
As of today, Red Hat's Jeff Law has shared on the GCC mailing list that the steering committee for the GNU Compiler Collection has approved adding the Cilk+ Runtime System into the GCC repository.
With all of that said, hopefully the code push of the run-time support plus new Cilk Plus keywords will happen soon thus making Intel Cilk Plus multi-threading support a feature of GCC 4.9, which should be released in H1'2014.