UTDSP Benchmark Suite

The UTDSP Benchmark Suite was created in 1992 to evaluate the quality of code generated by a high-level language (such as C) compiler targeting a programmable digital signal processor (DSP). This evaluation was used to drive the development of specific compiler optimizations to improve the quality of the generated code and to modify the architecture of the target processor to simplify the compiler's task. At that time, DSP applications were written in the assembly language of the target processor, making it necessary for us to write the applications ourselves in C.

The benchmark suite is divided into two classes of programs: kernels and applications. DSP kernels are simply small code fragments that represent important calculations in DSP applications. Examples of DSP kernels are: filters of various kinds, fast Fourier transform, matrix multiply, etc. DSP applications, on the other hand, are entire programs that would be executed on a DSP in a commercial product. Examples of DSP applications are: linear predictive coding, image compression, an implementation of the G.721 modem protocol, etc.

For each kernel and application, the suite provides several versions written in different coding styles. All versions for a particular kernel or application provide the same functionality. The coding styles vary in the use of pointer or array notation and software pipelining. The purpose of having several versions is to evaluate the ability of a compiler to generate comparable code for all versions. For example, code generated for the array-based version of a benchmark should execute as fast as code generated for the pointer-based version.

We are distributing the benchmark suite for research and commercial uses. A copy of the license agreements is available in PostScript. Once you have read the agreements, contact me to receive the distribution package.

Last Updated: 15 May 1998
Corinna G. Lee (corinna@eecg.toronto.edu)