Cilkpub: a library of community-contributed Cilk Plus code

Cilkpub: a library of community-contributed Cilk Plus code

We are pleased to announce that Cilkpub, a library of community-contributed Cilk Plus code, is now available for download.

Cilkpub is intended to be a public library of code contributed and maintained by the members of the Cilk Plus community. Version 1.02 has been posted to the community website and contains the following modules:

  1. DotMix DPRNG: a deterministic parallel random number generator for Cilk Plus, contributed by Tao B. Schardl and myself.
  2. Sort: a module containing parallel implementations of quicksort and sample sort, contributed by Arch Robison.   This code is derived from the sorts described in Structured Paralllel Programming.

Cilkpub is distributed as a source code.  The DotMix and Sort modules are implemented using C++ templates, and consist of only header files.

If you have your own Cilk Plus code that you would like to share with the world, please consider contributing your code!   The Cilkpub project is still in its early stages, and we hope to expand the library and build up a larger collection of shared Cilk Plus code.   Code contributions to Cilkpub or more generally to the Cilk Plus community website must be submitted under the BSD license, as described on the contribution page on the community website.

Also, if you have any feedback on the existing modules or suggestions for additional modules that you would like to see implemented in Cilkpub, please post comments in the forum.   We are always looking for new ways to improve the programming experience of users of Cilk Plus!

5 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Cilkpub has been updated to version 1.03.   Thanks to Neil Faiman for contributing a vector reducer (cilkpub/reducer_vector.h).
The vector reducer is similar to the list append reducer in Cilk Plus, except that it accumulates elements into a list of standard C++ vectors instead of a C++ list.   A vector reducer can sometimes be more efficient than the list append reducer, particularly in cases when each (serial) strand appends multiple items to the reducer.

Version 1.03 also updates the pedigree and DotMix modules to work with version 12.1 of the Intel compiler.

To download the latest version of Cilkpub, visit the contributed code section on the Cilk Plus community website:

Cilkpub has been updated to version 1.04.   New in version 1.04 is a commutative reducer array, which is intended to be useful in codes where one would normally want an array of reducer_opadd objects.    Unlike normal Cilk Plus reducers, the update operations on reducers in a commutative reducer array also need to commutative, not just associative.
For a sample program illustrating usage, see sample/creducer_opadd_array.cpp.

Cilkpub has been updated to version 1.05.   This version adds a parallel scan, adapted from the scan code from
For a sample program, see samples/sample_scan.cpp.

Cilkpub has been updated to version 1.06.   The major changes are:

  1. The parallel scan interface was extended to allow execution of an "uproot" function in between the two passes.
  2. The reducer_vector.h in Cilkpub is now deprecated.  Recent versions of the Intel compiler (15.0 and later) include this reducer by default.
  3. Other minor bug fixes were implemented to fix test-case errors and warnings reported by recent Intel compilers.

See the included README for more details.


Leave a Comment

Please sign in to add a comment. Not a member? Join today