Distributed Application Layer (DAL)
The distributed application layer (DAL) is a software development framework for the model-driven development of multi- and many-core platforms. It supports the design, the optimization, and the simultaneous execution of multiple dynamically interacting streaming applications on heterogeneous platforms.
DAL allows specifying applications based on the Kahn process network (KPN) model of computation. A KPN basically specifies an application as a set of autonomous processes that communicate through point-to-point FIFO channels. To represent the interactions between the applications, a finite state machine is used, where each state represents an execution scenario, i.e., a set of running or paused applications.
In order to specify applications according to the elaborated model of computation, DAL provides an XML-based specification format. Additionally, DALipse, a visual editor to specify DAL applications, is available. DALipse enables the programmer to visually specify finite state machines and process networks. To test the functionality, several back-ends are provided to functionally simulate the applications, to execute the applications on a distributed HPC cluster, or to run DAL applications on top of any OpenCL-capable platform.