1969 Mach 1 Mustang

Benchmarks for Accelerator Design and Customized Architectures

MachSuite is a set of 19 benchmarks designed to mimic low-level kernels suitable for hardware acceleration.

A full description, including characterization of all the algorithms, can be found in our IISWC paper. If you use MachSite in your research, we’d appreciate a citation.

For questions, please contact Brandon Reagen.

Compiling and Running MachSuite

To compile, just run make. There is a top-level Makefile which will recursively invoke the ones in each benchmark subdirectory. You can also use this makefile to run all the MachSuite benchmarks at once using make run.

If you prefer to do it piecewise, each benchmark can be invoked using the same command line:

<benchmark> [input-file] [check-file]

Where input-file contains the inputs given in each benchmark’s subdirectory, and check-file is the answer file to check the output of the benchmark against. Both are optional—if you don’t specify them, the benchmark will look for an input.data and a check.data file in the current directory.

Note that checking is disabled in the code by default, so you can safely leave off the check-file argument.


The Benchmarks

Kernel/Algorithm Description
aes/aes The Advanced Encryption Standard, a common block cipher.
backprop/backprop A simple method for training neural networks.
bfs/bulk Data-oriented version of breadth-first search.
bfs/queue The “expanding-horizon” version of breadth-first search.
fft/strided Recursive formulation of the Fast Fourier Transform.
fft/transpose A two-level FFT optimized for a small, fixed-size butterfly.
gemm/ncubed Naive, O(n3) algorithm for dense matrix multiplication.
gemm/blocked A blocked version of matrix multiplication, with better locality.
kmp/kmp The Knuth-Morris-Pratt string matching algorithm.
md/knn n-body molecular dynamics, using k-nearest neighbors to compute only local forces.
md/grid n-body molecular dynamics, using spatial decomposition to compute only local forces.
nw/nw A dynamic programming algorithm for optimal sequence alignment.
sort/merge The mergesort algorithm, on an integer array.
sort/radix Sorts an integer array by comparing 4-bits blocks at a time.
spmv/crs Sparse matrix-vector multiplication, using variable-length neighbor lists.
spmv/ellpack Sparse matrix-vector multiplication, using fixed-size neighbor lists.
stencil/stencil2d A two-dimensional stencil computation, using a 9-point square stencil.
stencil/stencil2d A three-dimensional stencil computation, using a 7-point von Neumann stencil.
viterbi/viterbi A dynamic programing method for computing probabilities on a Hidden Markov model.