The Chunks and Tasks programming model

Chunks and Tasks is a programming model that allows parallel programs to be written without explicitly worrying about synchronization or message passing between different parts of the program executing in parallel.

When programming using the Chunks and Tasks model, the application programmer (the user) writes her program by defining data objects and and objects encapsulating pieces of work. The data objects and work objects are referred to as "chunks" and "tasks", respectively.

Each task takes a number of chunk objects as input, and produces a single chunk object as output.

The Chunks and Tasks model can in principle be used with different programming languages. The C++ interface page describes our interface to the programming model using the C++ language.