The Backend Compiler is the part of the framework responsible for the execution of the SDF graph on the target platform. It consists of two main components:
The runtime library represents the SDF graph elements from the perspective of the execution environment. So the nodes are tasks and the arcs are smart data queues. The other main components of the runtime library are the executors and the scheduler.
The executors are wrappers of the executing units of the architecture. They are responsible for managing the execution of a task and provide double buffering (or even multiple, depending on the ratio between execution and data transfer and the memory constraints) to maximize the throughput.
The scheduler is responsible to maintain the collection of executors and the list of the tasks to run on each executor, according to the given scheduling graph (GDL+ format).
The gdl2c translator parses the graph and analyzes the task function as well as the configuration of the input and output arcs of each node to determine the different task types, that is the various node topologies. It emits the C code responsible for the initialization of the data queues, the tasks (with the determined task type and the references to the input and output queues) and the scheduler, assigning the tasks to the task list of the specific executing resource they are assigned to.
The gdl2c translator also emits the executor code responsible for mapping each task type to a different configuration of number of inputs/outputs and number of tokens from each one.