Benchmarks
The following list describes our first set of released applications for DAL. The source code of the applications is included in the DAL package that can be downloaded from here.
In DAL, the workload of a system may consists of more than one application that dynamically interact with each other. Therefore, at the end of this document, we describe some exemplified benchmarks that consist of more than one application.
Contents
DAL Applications
DSP/Data-Flow Kernels
Producer-Consumer
A canonical producer-consumer application is built, in which the producer generates data, and the consumer consumes the generated data. Between the producer consumer pair, one process is inserted to process the data.
Multi-Square Application
This application illustrates the use of iterators that are used to generate a chain of processes that square a number. Using this chain of square processes, a higher power of the input number sequence is computed.
2D-Mesh Application
This application illustrates the sue of iterators in two-dimensions. Using these iterators, a 2D mesh is generated in which tokens are passed forward in horizontal and vertical direction.
Matrix Multiplication Application
The matrix multiplication application splits the computation of the matrix product up into single multiplications and additions. This way, the N x N matrix multiplication operation is split up into single processes, each of which only performs a multiplication followed by an addition. Single coefficients of the resulting matrix are computed by appropriately connecting the processes.
Fast Fourier Transform Application
The N-point fast Fourier transform application splits up the calculation into N/2*log2(N) 2-point FFTs. Using the 2-point FFT, higher-order FFTs can be computed by arranging N/2*log2(N) 2-point FFTs and connecting them using a butterfly network.
The application illustrates the use of the <function
element and shows how processes can be parametrized using the init
function. In contrast to the previous applications, non-elementary data types - in this application complex numbers - are passed between processes.
Infinite Impulse Response (IIR) Filter Application
In this application, a first order infinite impulse response (IIR) filter is implemented illustrating the use of a feedback loop.
N-Order IIR Filter Application
In this application, an N-order IIR filter is decomposed of first order IIR filters.
Multimedia Applications
Motion-JPEG Decoder Application
A distributed version of a Motion-JPEG decoder, which is able to decode multiple frames in parallel.
Video Processing Application
The multi-stage video-processing application first decodes a motion-JPEG video stream and then applies a motion detection method to the decoded video stream. The motion detection method is composed of a Gaussian blur, a gradient magnitude calculation using Sobel filters, and an optical flow motion analysis.
H-264 Encoder / Decoder Applications
The H.264/MPEG-4 AVC (Advanced Video Codec) is one of the most widely used video coding standards in recent years. The available H-264 encoder and decoder applications for DAL support the baseline profile and use coarse-grained task parallelism. The application is based on an original implementation for the HOPES framework.
Ray-Tracing Application
The ray-tracing application consists of three logic parts. The first part of the application comprises the generation of the rays. The next part is the most computational intensive part of the application, namely the intersection of the rays with the scene, which is to be rendered. Lastly, the calculated values are aggregated and stored to an image file in the third part.
Mathematical Applications
Array-Sorting Application
The considered distributed array-sorting application uses the quicksort algorithm to sort an array of arbitrary length.
Multi-Application Benchmarks
Benchmark TwoProducerConsumer
Two producer-consumer applications are started after each other. The fintie state machine consists of three states, i.e., Scenario 1, Scenario 2, and End. In Scenario 1, the first producer-consumer application is running, in Scenario 2, the second producer-consumer application is running, and in End, all applications are stopped.
Benchmark FFTandMatrix
The FFT application and the Matrix Multiplication application are consecutively executed. First, in Scenario FFT, the FFT application is executed, while in Scenario Matrix, the Matrix application is executed. Finally, the application goes to an End state.
Benchmark FIRandMultiFIR
The MULTIFIR application and the FIR application are concurrently running as soon as the producer-consumer application has been completed. The finite state machine consists of five states: In Scenario 1, the producer-consumer application is running. In Scenario 2, both the MULTIFIR and the FIR application are running concurrently. In case event stop_multifir first occurs, the finite state machine switches to Scenario FIR_RUN, and otherwise, the finite state machine switches to Scenario MULTIFIR_RUN. Finally, the example ends in state End.
Benchmark ProducerConsumerSequentialEnd
The producer-square-consumer application is executed. After completing 20 iterations, each process sends a corresponding event to stop the application. The finite state machine consists of eight states, therefrom four are visited until the application stops. Suppose that the processes complete in the following order: generator, square, and consumer. Then, the example starts in Scenario GSC, and translates first to Scenario SC. Afterwards, it translates to Scenario C and finally, to the End state. As soon as the last event is received, the producer-consumer application is stopped.
Benchmark TwoMJPEGwithUI
This is a video player that can concurrently play two videos. It consists of a user interface application (UI) and two MJPEG decoder applications. The benchmark offers the following features: play, stop, pause, and resume an application. Depending on the current state of the example, you may not be able to perform all features. For example, suppose that the MJPEG 1 application is already running. Then, you are not able to play or resume the MJPEG 1 application.
The finite state machine consists of ten states whose names reflect the current state of both MJPEG applications. The example can only be finished if both MJPEG applications are stopped, i.e., the example's state is Scenario UI. Refer to the description of the MJPEG application on how to view the decoded video.