class to create a stage in a data-parallel pipeline More...
#include <taskflow/algorithm/data_pipeline.hpp>
Public Types | |
| using | callable_t = C |
| callable type of the data pipe | |
| using | input_t = Input |
| input type of the data pipe | |
| using | output_t = Output |
| output type of the data pipe | |
Public Member Functions | |
| DataPipe ()=default | |
| default constructor | |
| DataPipe (PipeType d, callable_t &&callable) | |
| constructs a data pipe | |
| PipeType | type () const |
| queries the type of the data pipe | |
| void | type (PipeType type) |
| assigns a new type to the data pipe | |
| template<typename U > | |
| void | callable (U &&callable) |
| assigns a new callable to the data pipe | |
Friends | |
| template<typename... Ps> | |
| class | DataPipeline |
class to create a stage in a data-parallel pipeline
A data pipe represents a stage of a data-parallel pipeline. A data pipe can be either parallel direction or serial direction (specified by tf::PipeType) and is associated with a callable to invoke by the pipeline scheduler.
You need to use the template function, tf::make_data_pipe, to create a data pipe. The input and output types of a tf::DataPipe should be decayed types (though the library will always decay them for you using std::decay) to allow internal storage to work. The data will be passed by reference to your callable, at which you can take it by copy or reference.
In addition to the data, you callable can take an additional reference of tf::Pipeflow in the second argument to probe the runtime information for a stage task, such as its line number and token number:
|
inline |
constructs a data pipe
You should use the helper function, tf::make_data_pipe, to create a DataPipe object, especially when you need tf::DataPipe to automatically deduct the lambda type.
|
inline |
assigns a new callable to the data pipe
| U | callable type |
| callable | a callable object constructible from the callable type of this data pipe |
Assigns a new callable to the pipe using universal forwarding.
|
inline |
queries the type of the data pipe
A data pipe can be either parallel (tf::PipeType::PARALLEL) or serial (tf::PipeType::SERIAL).