Get Started
Execute an Example
The following guide explains how to execute the benchmark "TwoProducerConsumer" with DAL:
- Go to the installation directory of DAL:
- Use ant to generate the C code and to trigger the compilation and execution.
- DAL executes the benchmark "TwoProducerConsumer" on your host machine. Click here to see the expected output.
- In order to see the generated source code and binaries, go to the build directory:
$ cd <dal>/dal/build/bin/main/TwoProducerConsumer/singlelinux/
$ cd <dal>
$ ant -f rundal.xml -Dbenchmark=TwoProducerConsumer
The DAL Script
The DAL script (rundal.xml
) executes the DAL tool chain, i.e., it generates the source code, compiles the code, and finally executes it. You can customize the execution by specifying arguments with -D<argumentname>=<argumentvalue>
. The following arguments are supported:
-
benchmark
: the name of the benchmark (default: TwoProducerConsumer)
-
generator
: selection of the back-end. Currently, the following back-ends are supported:-
singlelinux
(default): shared-memory processor running Linux (functional simulation) -
opencl
: OpenCL-capable platform -
phi
: Intel Xeon Phi processor running Linux -
distributedlinux
: Multiple shared-memory processors running Linux and that are connected by MPI -
scc
: Intel SCC processor running Linux on each code - apenet: multiple shared-memory processors connected by an APENET network (for instance, the QUONG platform)
-
-
functional
: if 1, DAL maps all processes to a single core. It therefore needs no mapping or platform file (default: 0)
-
platform
: the name of the architecture file (default: quadcore)
-
mapping
: the name of the mapping file (default: mapping)
Example:
$ ant -f rundal.xml -Dbenchmark=MJPEG -Dgenerator=scc -Dplatform=scc -Dmapping=mappingScc
Generated Source Code
The generated source code is organized according to the following schema:
-
app
# container with all applications -
<APPLICATION-1-NAME>
# one directory per application that contains the source code of the application together with the process wrappers and an application-specific Makefile -
...
# ... -
<Controller>
// source code of the runtime-manager that is also specified as a process network application -
include
// include files of the DAL framework -
lib
// container with the dynamic libraries generated for each process -
util
// source code of the DAL library files -
main.cpp
// bootstrap file that starts the runtime-manager -
Makefile
// Makefile to generate the executable -
Makefile.inc
// Definitions required by the main Makefile and the Makefiles of all applications