Superflow – an efficient processing framework for modern C++

FFI-Rapport 2024

Om publikasjonen

Rapportnummer

24/00556

ISBN

978-82-464-3529-9

Format

PDF-dokument

Størrelse

13.1 MB

Språk

Engelsk

Last ned publikasjonen
Ragnar Smestad Martin Vonheim Larsen Trym Vegard Haavardsholm

Denne 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.

Nylig publisert