GrPPI
1.0
Generic and Reusable Parallel Pattern Interface
|
The farm pattern (or task-farm) is a streaming pattern that applies an operation to every element in a stream. This streaming pattern can only be used inside another pattern and consequently does not take an execution policy itself, but uses the execution policy of its enclosing pattern.
The interface to the farm pattern is provided by function grppi::farm()
.
There is a single variant:
The key elements of a farm are the cardinality and the Transformer.
The cardinality is the number of replicas of the farm that can be concurrently executed.
The central element in a farm is the Transformer. The operation may be any C++ callable entity. This operation, is a unary operation taking a data item and returning its transformation. Thus, a transformer op
is any operation that, given an input value x
of type T
makes valid the following:
A composable farm applies a Transformer to each data item in a stream. The farm can be inserted into another upper level pattern (which will be responsible for generation and consumption)
Example: Use a farm as a stage of a composed pipeline.
Note: For brevity we do not show here the details of other stages.
For composing complex patterns, the farm()
function may be used to create an object that may be used later in the composition.
Example: Build a farm as a composable pattern and use later as a stage of a pipeline.
Note: For brevity we do not show here the details of other stages.