Wool - a C library for fine grained independent task parallelism

With the widespread adoption of multicore and manycore processors comes the need for parallel software. One of the most promising parallel programming models is independent task parallelism (ITP). This model has two fundamental operations, spawn, which starts a parallel computation, and sync, which waits for one or more previously spawned computations to finish. Only fully independent computations may run in parallel, obviating any need for synchronization of in-progress computations. This is the difference between ITP and more general threading models where threads may be only partially independent and must synchronize with each other to manage existing dependencies.

Because of the simple synchronization model, tasks by necessity become smaller and more numerous than threads, and the practical usefulness of ITP in general depends on low overhead task management. Wool is a task manager implemented as a C library (with a lot of macros) and serves as a research vehicle for experimenting with techniques for making spawn and sync as cheap as possible, preferably on the order of the cost of a procedure call. Wool is based on work stealing, where each processor maintains its own pool of ready tasks from which other processors can steal work when their own task pools are empty.

You can download current and previous releases of Wool from the Wool home page below.

External homepage: 
http://www.sics.se/~kff/wool/