Superflow – an efficient processing framework for modern C++

FFI-Report 2024

About the publication

Report number







13.1 MB



Download publication
Ragnar Smestad Martin Vonheim Larsen Trym Vegard Haavardsholm
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.

Newly published