This repo contains an early version of an implementation of the C++ parallel STL algorithms written using OpenCilk.
The main functions are intended to be used in the same way as the appropriate standard library function, except they must be called from the appropriate namespace (for example, cilk::__parallel
or cilk::__parallel::__sort
). The standard library functions are intended to be run with an ExecutionPolicy
parameter that determines whether the function will be executed in parallel. This version of the cilk implementation does not accept an ExecutionPolicy
parameter and instead defaults to parallel execution. In general, these algorithms require iterators passed to them support random access.
See examples/tests.cpp
for an example of how to call some of the methods. To use the library, all one needs to do is to include cilkstl.h
.
Most functions are named the same as the appropriate function in the C++ standard library. The exceptions would be differing implementations of the same function, such as rotate
vs rotate_inplace
or find
vs find2
. The intention is that the more performant version be used eventually, but for, multiple implementations are retained for completeness. Helper functions are demarcated as such in the function comment.