|
|
BENCHMARKS
| audio-beamformer - Audio beam former |
| Description |
This is a benchmark from the Raw group that does real-time
beamforming on a microphone input array.
|
| C | optimized.c (Hand-coded and optimized C version.)
|
| StreamIt | Audiobeam.str data2.bin (StreamIt benchmark as described above.)
|
| beamformer - Multi-channel beam former |
| Description |
Template application to perform beam-forming on a set of inputs. The
input file should be preprocessed with 'cpp'; running 'make' will
produce all of the possible outputs. The application has two stages.
The top stage gathers input from a set of parallel channels, with FIR
filters to delay each channel by a different amount. The bottom stage
steers the channels into a set of beams, with a detector to sense if
the signal in a particular location exceeds a given threshold. The
"serialized" versions of the beamformer guarantee a deterministic
output order; otherwise there are outputs in parallel, with ordering
that depends on the schedule that is chosen. The "coarse" versions of
the beamformer perform the same computation, but are written at a
coarser level of granularity so that some filters do not need to
retain internal state. This facilitates some compiler analyses, but
causes the I/O rates of the filters to be much larger.
|
| StreamIt | BeamFormer.str (StreamIt benchmark as described above, with parallel outputs.)
|
| StreamIt | SerializedBeamFormer.str (StreamIt benchmark as described above, with deterministic output ordering.)
|
| bitonic-sort - Bitonic sorting network |
| Description |
High performance sorting network (by definition of sorting network, comparison
sequence not data-dependent). Sorts in O(n*log(n)^2) comparisons. Implementation
works only for power-of-2 sizes starting from 2.
|
| Reference | http://www.iti.fh-flensburg.de/lang/algorithmen/sortieren/bitonic/bitonicen.htm |
| C | bitonic.c ((Hand-coded C version.))
|
| StreamIt | BitonicSort.str (StreamIt benchmark as described above.)
|
| StreamIt | BitonicSortRecursive.str (Recursive implementation.)
|
| DCT - IEEE-complaint DCT and IDCT. |
| Description |
The dct_ieee package contains functions that implement Discrete Cosine
Transforms and Inverse Discrete Cosine Transforms in accordance with
IEEE specifications for such operations. The IEEE specified DCT is
used in both the MPEG and JPEG standards. A definition of what makes a
DCT or inverse DCT implementation conform to the IEEE specification
can be found in Appendix A of the MPEG-2 specification (ISO/IEC
13818-2) on P. 125.
|
| StreamIt | DCT.str (Contains a library of DCT and iDCT implementations. There are
two versions of iDCT: a reference version (based on the C
reference code for MPEG) and a fast version (an integer iDCT
that uses bit-twiddling, but does not have the floating point
precision of the reference codes). There are also fine-grained
versions of each implementation, which decompose the problem
into sub-problems using splitjoins.)
|
| fft - Fast Fourier Transform kernel |
| Description |
We have a number of different implementations of the Fast Fourier
Transform. Each is written at a different level of granularity.
The coarse-grained implementations are better for obtaining high
performance, while the fine-grained implementations are intended to
demonstrate the expressiveness of the language.
|
| C | driver.c fft.c (Reference implementation for FFT2.)
|
| C | driver.c fft.c (Reference implementation for FFT3.)
|
| StreamIt | FFT2.str (Blocked, coarse-grained version for use as a benchmark. Conceptually it is a single pipeline, but the main path is duplicated into a splitjoin to expose parallelism. Inputs in natural order, outputs in natural order. This is the version that we typically use for benchmarking.)
|
| StreamIt | FFT3.str (More fine-grained than FFT2. Inputs in natural order, outputs in bit-reversed order (does NOT include bit-reversal stage).)
|
| StreamIt | FFT4.str (More fine-grained than FFT3. Derived from original example in CC'02 paper, and intended only to demonstrate language features (has dummy weights; does not compute real FFT). Inputs in bit-reversed order, outputs in natural order (does NOT include bit-reversal stage).)
|
| StreamIt | FFT5.str (Fine-grained version, more elegant than FFT4. Inputs in natural order, outputs in natural order.)
|
| filterbank - Filter bank for multirate signal processing |
| Description |
Creates a filter bank to perform multirate signal processing. The
coefficients for the sets of filters are created in the top-level init
function, and passed down through the init functions to FIR filter
objects. On each branch, a delay, filter, and downsample is
performed, followed by an upsample, delay, and filter.
|
| C | filterbank.c |
| StreamIt | FilterBankNew.str |
| fm - Software FM radio with equalizer |
| Description |
FM radio with multi-band equalizer. The input passes through a demodulator
to produce an audio signal, and then an equalizer. The equalizer is
implemented as a splitjoin with a number of band-pass filters; each band-pass
filter is in turn the difference of a pair of low-pass filters.
|
| C | fmref.c |
| StreamIt | FMRadio.str |
| matmul-block - Blocked matrix multiply |
| Description |
Generates series of matrices, and multiplies them. In order to reduce
the amount of communication, the matrices are divided into equal-sized
submatrices, which are reordered, pairwise multiplied, and reordered
again to get the final result matrix.
|
| C | matmul-block.c |
| StreamIt | MatrixMultBlock.str |
| mp3decoder - Partial MP3 decoder |
| Description |
Partial decoder for MPEG 1/2 Layer 3 audio. This performs the core
computation necessary for audio decoding, including applying an
antialiasing filter, an inverse DCT, and PCM synthesis. This is not
enough to decode an MP3 audio file, however; the dynamic-rate
decompression stage has not yet been implemented (though the
StreamIt compiler does support dynamic rates).
|
| StreamIt | MP3.str Blur.float.raw.portion |
| sar - Synthetic Aperture Radar |
| Description |
Modified companion code to Mehrdad Soumekh's text book "Synthetic Aperture
Radar Signal Processing with Matlab Algorithms", Wiley, New York, NY, 1999.
This function digitally reconstructs the SAR image using spatial frequency
interpolation (see noted text, Section 4.5).
|
| StreamIt | SAR.str genRawSAR.str FFT.str Statics.str Utils.str image.txt |
| tde - Time Delay Equalization |
| Description |
This is the Time Delay Equalization phase from the GMTI (Ground Moving
Target Indiciator) application using the "Small" input dataset.
|
| StreamIt | tde_pp.str (Pipeline-parallel version of the application that is a more natural
fit to StreamIt. There is some data-parallelism available by setting
parameters in tde_pp.str, which allows us to increase the number of
filters for use in performance studies. This version canonicalizes
the order of the output data.)
|
| BatcherSort - Batcher's sorting algorithm |
| Description |
Identical to a Bitonic Sort, compares and swaps pairs of
elements in parallel.
|
| StreamIt | BatcherSort.str |
| BubbleSort - Bubble sorting algorithm |
| Description |
Simple comparison based algorithm, compares each item with adjacent one,
swapping their orders if required. Causes larger values to "bubble" to
end of the list. Runs in O(n^2) general case.
|
| Reference | http://linux.wku.edu/~lamonml/algor/sort/bubble.html |
| StreamIt | BubbleSort.str |
| ComparisonCounting - Comparison counting sorting algorithm |
| Description |
Algorithm that performs an N-way split of N elements. Each path calculates
the ordered index for each of the N elements by comparing it to every other
element.
|
| StreamIt | ComparisonCounting.str |
| InsertionSort - Optimized insertion sorting algorithm |
| Description |
Implementation based off of the Diminishing Increment Sort in
Knuth "Sorting and Searching", 5.2.1. Similar to basic insertion
sort except that it tries to make larger jumps to minimize data
reorderings.
|
| StreamIt | InsertionSort.str |
| MergeSort - Standard merge sort algorithm |
| Description |
Sorting algorithm that splits unordered list into halves, recursively sorts them
and then merges back to get the final sorted list. Has algorithmic
complexity of O(n log n).
|
| Reference | http://linux.wku.edu/~lamonml/algor/sort/merge.html |
| StreamIt | MergeSort.str |
| RadixSort - Binary radix sort algorithm |
| Description |
An implementation of binary radix sort, where each successive filter sorts on
a different bit.
|
| Reference | http://www.jimloy.com/computer/radix.htm |
| StreamIt | RadixSort.str |
| autocor - Generates the autocorrelation of a series |
| Description |
This benchmark contains a filter, Cor1, which generates the
autocorrelation series for some input. The input is a series of
vectors of a parameterizable length, and the output is the
autocorrelation series for a specified number of lags.
|
| StreamIt | AutoCor.str |
| delay - Demonstration of delay filter |
| Description |
Demonstration of a delay filter. Uses a prework function
to push N initial items before passing input to output.
|
| StreamIt | DelayTest.str |
| fib - Fibonacci number generators |
| Description |
StreamIt programs to generate Fibonacci numbers. In general, these
work by pushing previous values around a feedback loop, so they can be
calculated.
|
| StreamIt | Fib.str (Basic implementation.)
|
| StreamIt | FibFeed.str (As before, but with a top-level feedback loop.)
|
| StreamIt | Fib2.str (With a round-robin splitter and no peeking.)
|
| file - Demonstration of file writer |
| Description |
Demonstration of a FileWriter filter. This generates a sequence of
even integers as floating-point numbers, and writes them to
float.test in binary form.
|
| StreamIt | FileTest.str |
| hello - Analog of "Hello World!" in StreamIt: outputs a sequence of numbers |
| Description |
This is a demonstration benchmark, intended to be the simplest
possible StreamIt program. There are two filters; the first generates
an increasing sequence of numbers, the second prints this sequence.
|
| StreamIt | HelloWorld.str |
| lattice - Ten-stage lattice filter |
| Description |
Constructs a ten-stage lattice filter. The first and last stages are
special; otherwise, a series of mostly-identical stages are
constructed in order and fed into a pipeline. Two items are carried
between each stage of the lattice filter, with the second item delayed
by one element.
|
| StreamIt | Lattice.str |
| matrixmult - Multiply two matrices |
| Description |
Perform a matrix-matrix multiply on square matrices. Matrices are
translated and duplicated, such that a MultiplyAccumulate stage can
perform vector-vector dot products to get ordered elements of the
result matrix.
|
| C | matrix.c |
| StreamIt | MatrixMult.str |
| vectadd - Add two vectors |
| Description |
Perform simple vector-vector adds. In StreamIt, a vector is
frequently just a series of consecutive elements on a single channel;
two vectors can be added by generating elements in a splitjoin (or
using a splitjoin to interleave the elements of the inputs), and then
doing an elementwise add on the output.
|
| StreamIt | VectAdd.str (Generate two input vectors and add them)
|
| jpeg - JPEG decoder/encoder |
| Description |
The JPEG Transcoder takes as input a JPEG image and then decodes it,
specifies a much higher level of JPEG compression, and then re-encodes
it as a JPEG. JPEGtoBMP.str converts a JPEG into a BMP
(output.bmp.int). Conversion of file format from bits to integers is
handled in the Makefile.
|
| StreamIt | Transcoder.str input.jpg.int (StreamIt version of JPEG encoder/decoder.)
|
| StreamIt | JPEGtoBMP.str input.jpg.int (StreamIt version of JPEG decoder to .bmp.)
|
|
|