Superflow – an efficient processing framework for modern C++
FFI-Report
2024
About the publication
Report number
24/00556
ISBN
978-82-464-3529-9
Format
PDF-document
Size
13.1 MB
Language
English
This report describes Superflow, a generic data processing framework written in C++.
Superflow is made for creating and running flexible processing graphs, where the nodes are
individual processing stages, and the edges are data flows between nodes.
Processing stages are represented by concurrent processing elements, called proxels. Each
proxel is an abstraction that encapsulates a self-contained part of the processing pipeline, such
as specific algorithms, file writers or even parts of a graphical user interface (GUI). Data flows
between proxels are realised through connected ports, which are objects that provide different,
type-safe communication schemes through a common interface. A proxel typically has input
ports for receiving or requesting data and output ports for providing results. The proxels and
ports are managed in a container class called Graph, which offers a convenient way to start and
stop the processing graph, add and connect proxels, monitor the status of the processing graph,
and more.
In order to simplify the creation of a graph and to be flexible to changes in content and structure,
Superflow provides tools for parsing configuration files that contains lists of proxels, parameters
and connections. These can be used to create and start graphs automatically without recompiling
any code.
The design of Superflow makes it simple to combine different sensors, algorithms, and processing
stages and to dynamically reconfigure established processing pipelines. The framework supports
parallel processing, branching, and merging of pipelines as well as synchronisation through
barriers and latches. This is all performed in an efficient, type-safe, and extensible communication
scheme based on modern C++.
This report contains a description of the main components in Superflow, followed by a short
tutorial that will get you started on using Superflow in your own applications.