Data-Flow

Requirements analysis

Requirements for a CCA data-flow engine.

Features

  • Easy usage / convenient API
  • Parallel computation (multi-core)
  • Distribution of components/nodes over the network
  • Arbitration of concurrent access on components/nodes
  • Specific timing of components/nodes
    • Real-time capable
  • Activating / deactivating of nodes / node groups
  • Introspection
    • Error / exception handling
  • Modeling support
  • Resource modeling
    • dynamic configuration

Skeletons

Skeletons we probably want to / will use in our data-flow graph:

  • Parallelization
    • Pipeline
    • Farm
  • Data-Flow
    • SPMC
    • MPSC

Farm = Farm of parallel worker threads
SPMC = Single Producer, Multi Consumer - Task/Input of one node is subdevided into subtasks and passed as inputs to several nodes. (data parallelization)
MPSC = Multi Producer, Single Consumer - Outputs from several nodes are passed as input to one single node.

Other / nice-to-have

  • Flexibility
    • Allow streaming of user specified types
  • Little software dependencies
  • Documentation
  • Active development
  • Active community?

Candidates