Show simple item record

dc.contributor.authorSmestad, Ragnaren_GB
dc.contributor.authorLarsen, Martin Vonheimen_GB
dc.contributor.authorHaavardsholm, Trym Vegarden_GB
dc.date.accessioned2024-04-09T09:08:08Z
dc.date.available2024-04-09T09:08:08Z
dc.date.issued2024-04-08
dc.identifier1688
dc.identifier.isbn978-82-464-3529-9en_GB
dc.identifier.urihttp://hdl.handle.net/20.500.12242/3288
dc.description.abstractThis 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.en_GB
dc.description.abstractDenne rapporten beskriver Superflow, et generisk rammeverk for dataprosessering skrevet i C++. Superflow er laget for å konstruere og kjøre dataprosesseringsgrafer, hvor nodene i grafen er individuelle prosesseringssteg, og kantene representerer dataflyt mellom nodene. Prosesseringsstegene representeres ved hjelp av en egen datatype, kalt proxel (processing element), slik at hver proxel er en abstraksjon som innkapsler en selvstendig del av prosesseringskjeden. En proxel kan for eksempel inneholde en spesiell algoritme, lesing og skriving til fil eller presentasjon av et grafisk brukergrensesnitt (GUI). Hver proxel kan kjøres i en egen tråd, slik at ulike prosesseringer foregår samtidig og i parallell. Dataflyten mellom proxler realiseres gjennom sammenkoblede porter. Porter er egne klasser som tilbyr ulike former for multitråd- eller multiprosesskommunikasjon bak et felles grensesnitt. En proxel har typisk input-porter for å motta eller å be om data og output-porter for å levere fra seg resultater. Proxlene administreres ved hjelp av en egen klasse kalt Graph, som gjør at man enkelt kan starte og stoppe prosesseringen, legge til og koble sammen proxler, overvåke gjeldende status for grafen osv. Superflow tilbyr verktøy for å lese inn konfigurasjonsfiler, noe som forenkler oppsettet av grafer og gjør det enkelt å tilpasse grafens innhold og struktur. En konfigurasjonsfil definerer hvilke proxler som skal inngå i grafen, hvordan portene kobles sammen, og eventuelle parametere som justerer proxlenes virkemåte. Dette kan brukes til å generere og starte en graf automatisk, uten å måtte rekompilere noe kode. Virkemåten til Superflow gjør det enkelt å sette sammen ulike sensorer, algoritmer og prosesseringssteg på en dynamisk måte. Rammeverket støtter parallell prosessering med forgrening, sammenfletting og synkronisering av prosesseringsløyper. Alt dette er kodet inn i et effektivt, typesikkert og utvidbart system basert på moderne C++. Rapporten inneholder en beskrivelse av hovedkomponentene i Superflow, etterfulgt av et kort praktisk eksempel som hjelper deg å komme i gang med å bruke Superflow til dine egne anvendelser.en_GB
dc.language.isoenen_GB
dc.subjectC++ (Programmeringsspråk)en_GB
dc.subjectRammeverken_GB
dc.subjectAutonomien_GB
dc.subjectSystemarkitekturen_GB
dc.titleSuperflow – an efficient processing framework for modern C++en_GB
dc.type.documentrapport
dc.source.issue24/00556en_GB
dc.source.pagenumber67en_GB


Files in this item

This item appears in the following Collection(s)

Show simple item record