Download: HPEC Challenge Benchmark Suite v1.0 (Kernel Benchmarks only)
Download: HPEC Challenge SAR Benchmark v1.0


Version 1.0 of the benchmark suite download contains the kernel-level benchmarks only. A future release will also contain the SAR multi-processor application benchmark. Information on the Kernel-level benchmarks may be found on the Benchmarks page. For now, the SAR benchmark must be downloaded from the HPCS program web page. This will require registration with the HPCS program.

Software Instructions

Kernel Benchmarks

The following descriptions and instructions can be found in the README.txt file found in the hpecChallenge/kernelBenchmark directory after unzipping the software distribution file. To unzip the distribution file, use winzip in Windows, or "gunzip file.tar.gz; tar xvf file.tar" in Unix.


The HPEC Challenge Kernel Benchmarks consist of ANSI C implementations of nine kernel benchmarks. The benchmarks are: time-domain finite impulse response filter bank (tdfir), frequency-domain finite impulse response filter bank (fdfir), QR factorization (qr), singular value decomposition (svd), constant false-alarm rate detection (cfar), pattern matching (pm), graph optimization via genetic algorithm (ga), real-time database operations (db), and memory re-arrangement or cornerturn of a data matrix (ct).

A detailed description of the kernel benchmarks can be found in "KernelDescription.pdf," located in the "docs" directory. It is recommended that the user reads this document as well as the individual README files located in each of the kernel directories prior to attempting to run the kernels.

Along with the Kernel Description document, an Excel spreadsheet is available ("docs/KernelWorkload.xls") for calculating workloads for the kernels. Also, each kernel includes a C verification utility and Matlab scripts for generating data, computing workloads, and calculating kernel throughput. Please see the individual kernel README files for more information on these utilities.

Upper Level Directory Layout

The following section describes the directories found in the current upper level directory:
README.txt This upper level README file.
include Directory containing C files defining structures and functions required by the C kernels.
matlab Directory containing Matlab files used by the kernel Matlab support functions.
cfar Constant false-alarm rate detection implementation and utilities.
ct Cornerturn kernel implementation and utilities.
db Real-time database implementation and utilities.
fdfir Frequency-domain FIR filter bank implementation and utilities.
ga Graph optimization via genetic algorithm implementation and utilities.
pm Pattern matching implementation and utilities.
qr QR factorization implementation and utilities.
svd Singular value decomposition implementation and utilities.
tdfir Time-domain FIR filter bank implementation and utilities.
gen_datasets.m Matlab script for generating kernel data sets defined in "docs/KernelDescription.pdf"
Makefile Makefile for building/cleaning all of the kernel benchmarks and verification utilities.
exec_kernels.csh Shell script for running and verifying each of the kernels on each of the chosen data sets.
get_results.m Matlab script for obtaining throughput and latency results for each kernel on each chosen data set after running exec_kernels.csh. Also generates a results file ("hpecKernelResults-.txt").

Kernel Contents

Each kernel directory contains the following files/directories:
README.txt README file containing kernel information and instructions on running the kernel and its support utilities.
Makefile Makefile for building the kernel code.
kernel.c Main C kernel code.
kernelVerify.c Code for verifying the output of the C kernel.
kernelGenerator.m Matlab function for generating kernel data sets.
kernelWorkload.m Matlab function for determining the workload of the kernel for a given data set.
kernelLatency.m Matlab function for reading the latency of the kernel for a previously run data set.
kernelThroughput.m Matlab function for calculating the throughput of the kernel for a previously run data set.
data Directory for storing data sets.

Some kernels may have other files used in support of the kernel and/or Matlab code.

Each kernel as well as its verification and Matlab utilities relies on relative paths to the directory they are contained in. Therefore, each kernel and its utilities must be run from the individual kernel directory.

Generated Data Sets

Each kernel directory has a "data" directory used for storing generated data sets and kernel results. For information on these data sets, see the "KernelDescription.pdf" document or the individual kernel README file. User generated data sets and kernel output files will also be put in the "data" directory. The format of the data files, as well as instructions on reading or writing data files is described in the "docs/DataFileFormat.txt."

Testing Platform and Version Requirements

The HPEC Challenge Kernel Benchmarks are written using the ANSI C standard that should be portable across Unix based platforms. The kernels have been tested using gcc 3.3.5 on Linux (RedHat 9 2.4.20) and Solaris (SunOS 5.8). The Matlab utilities will run on versions 6.5 and higher.

Generating Data Sets and Running Benchmarks

Each benchmark may be built, run, and verified from each individual kernel sub-directory. Performance results may also be obtained within each sub-directory. See the individual kernel README files for instructions.

It is also possible to perform these tasks on the chosen kernel data sets from this upper-level directory. The following sample illustrates this: sample.txt

Benchmark Results File

The Matlab function get_results.m generates a results file called "hpecKernelResults-<date>.txt". This file is formatted as follows:
	<date and time (yyyymmddTHHMMSS)>
	* Kernel1
	<Dataset #>, <Dataset latency (s)>
	<Dataset #>, <Dataset latency (s)>
	* SVD
	<Dataset #>, <Dataset latency (s)>, <Dataset throughput (flop/s)>
	<Dataset #>, <Dataset latency (s)>, <Dataset throughput (flop/s)>
	<Dataset #>, <Dataset latency (s)>, <Dataset throughput (flop/s)>
	* KernelN
	<Dataset #>, <Dataset latency (s)>
Note that the SVD, unlike the other kernels, requires a latency and throughput result. This is because the exact number of iterations required to produce the SVD is data dependent. See documentation in KernelDescription.pdf for more details.

Version Information

Version 1.0 (2006.07.01):