The Princeton Application Repository for Shared-Memory Computers (PARSEC) is a benchmark suite composed of multithreaded programs. The suite focuses on emerging workloads and was designed to contain a diverse selection of applications that is representative of next-generation shared-memory programs for chip-multiprocessors. The benchmark suite with all its applications and input sets is available as open source free of charge from the PARSEC website.
This wiki is here for you. Please feel free to use it to publish whatever information you might have about PARSEC. Be bold!
PARSEC 1.0 was released at the beginning of 2008. PARSEC 2.0 followed about a year later, in February 2009. The first version of the benchmark suite was downloaded over 1,000 times within the first year. PARSEC is being used for research at numerous institutions such as Intel, Princeton University, Cambridge University, Georgia Tech or MIT. Its workloads were instrumental in the development of the Intel Larrabee processor.
PARSEC 2.0 includes 13 workloads from different application domains. A full documentation of the workloads is available. The following table summarizes the parallelization models and platforms supported by the programs.
|Pthreads||OpenMP||Intel TBB||gcc 4.2||gcc 4.3||icc 10.1||Linux||Solaris 10||Windows||i386||x86_64||Sparc|
This application is an Intel RMS benchmark. It calculates the prices for a portfolio of European options analytically with the Black-Scholes partial differential equation (PDE). There is no closed-form expression for the Black-Scholes equation and as such it must be computed numerically.
This computer vision application is an Intel RMS workload which tracks a human body with multiple cameras through an image sequence. This benchmark was included due to the increasing significance of computer vision algorithms in areas such as video surveillance, character animation and computer interfaces.
This kernel was developed by Princeton University. It uses cache-aware simulated annealing (SA) to minimize the routing cost of a chip design. Canneal uses fine-grained parallelism with a lock-free algorithm and a very aggressive synchronization strategy that is based on data race recovery instead of avoidance.
This kernel was developed by Princeton University. It compresses a data stream with a combination of global and local compression that is called 'deduplication'. The kernel uses a pipelined programming model to mimic real-world implementations. The reason for the inclusion of this kernel is that deduplication has become a mainstream method for new-generation backup storage systems.
This Intel RMS application was originally developed by Stanford University. It computes a visually realistic animation of the modeled face by simulating the underlying physics. The workload was included in the benchmark suite because an increasing number of animations employ physical simulation to create more realistic effects.
This application is based on the Ferret toolkit which is used for content-based similarity search. It was developed by Princeton University. The reason for the inclusion in the benchmark suite is that it represents emerging next-generation search engines for non-text document data types. In the benchmark, we have configured the Ferret toolkit for image similarity search. Ferret is parallelized using the pipeline model.
This Intel RMS application uses an extension of the Smoothed Particle Hydrodynamics (SPH) method to simulate an incompressible fluid for interactive animation purposes. It was included in the PARSEC benchmark suite because of the increasing significance of physics simulations for animations.
This application employs an array-based version of the FP-growth (Frequent Pattern-growth) method for Frequent Itemset Mining (FIMI). It is an Intel RMS benchmark which was originally developed by Concordia University. Freqmine was included in the PARSEC benchmark suite because of the increasing use of data mining techniques.
The Intel RMS application uses a version of the raytracing method that would typically be employed for real-time animations such as computer games. It is optimized for speed rather than realism. The computational complexity of the algorithm depends on the resolution of the output image and the scene.
This RMS kernel was developed by Princeton University and solves the online clustering problem. Streamcluster was included in the PARSEC benchmark suite because of the importance of data mining algorithms and the prevalence of problems with streaming characteristics.
The application is an Intel RMS workload which uses the Heath-Jarrow-Morton (HJM) framework to price a portfolio of swaptions. Swaptions employs Monte Carlo (MC) simulation to compute the prices.
This application is based on the VASARI Image Processing System (VIPS) which was originally developed through several projects funded by European Union (EU) grants. The benchmark version is derived from a print on demand service that is offered at the National Gallery of London, which is also the current maintainer of the system. The benchmark includes fundamental image operations such as an affine transformation and a convolution.
This application is an H.264/AVC (Advanced Video Coding) video encoder. H.264 describes the lossy compression of a video stream and is also part of ISO/IEC MPEG-4. The flexibility and wide range of application of the H.264 standard and its ubiquity in next-generation video systems are the reasons for the inclusion of x264 in the PARSEC benchmark suite.
Patches and Bugfixes
If you have any patches or bugfixes for PARSEC you can make them available to other PARSEC users on this web site. Once you have uploaded the file somewhere you should make an entry in the table below and send an email to the parsec-users mailing list to let people know. If you do not have access to a file hosting service you can use one of the free hosting providers or you can send us the patch by email.
|Syntax error in open()||Link||Joe Devietti||University of Washington||September 01, 2009||Affects dedup and libxml2|
|Deadlock in ferret||Link||Chris Fensch||University of Edinburgh||March 17, 2010|
|Data race in blackscholes OpenMP version||Link||Paul Keir||University of Glasgow||May 4, 2010|
|Fixes for blackscholes TBB version||Link||Paul Keir||University of Glasgow||May 5, 2010|
|Missing barrier in streamcluster||Link||Darryl Gove||Oracle||May 17, 2010|
The patches listed below are for PARSEC 2.0 and below. They have been included in version 2.1. If you are using PARSEC 2.1 or later there is no need to apply those patches.
|Deadlock in streamcluster||Link||Matthew Watkins||Cornell University||February 26, 2009|
|Bug in serial version of fluidanimate||Link||Orestis Agathokleous||University of Cyprus||March 04, 2009||Bug causes less work to be done.|
|Bus error in x264 on Sparc||Link||Christian Fensch||University of Cambridge||March 05, 2009||32-bit Sparc only|
|Bodytrack compilation error on Debian Linux||Link||Thomas Karcher||University of Karlsruhe||March 26, 2009|
|Disable optional C++ library||Link||Thomas Karcher||University of Karlsruhe||March 30, 2009||Fixes libstdc++ linking issues|
|Add missing flag to SSE version of blackscholes build system||Link||Thomas Karcher||University of Karlsruhe||April 1, 2009||SSE disabled by default|
The patches listed below are for PARSEC 1.0. They have been included in version 2.0. If you are using PARSEC 2.0 or later there is no need to apply those patches.
|Bugfixes for blackscholes||Link||Nikolay Kurtov||Intel||June 29, 2008||Does not fix blackscholes.simd.c|
|Missing simdev input for x264||Link||Christian Bienia||Princeton University||June 29, 2008||Simply copy into inputs/ directory of x264 without unpacking|
|Deadlock in dedup||Link||Jiaqi Zhang||Tsinghua University||July 09, 2008|
|Port of PARSEC to Solaris 10/Sparc||Link||Christian Fensch||University of Cambridge||July 22, 2008|
|Syntax fixes for gcc 4.3||Link||Wim Heirman||University of Gent||August 29, 2008|
|Dedup malloc fix||Link||Nikolay Kurtov||Intel||September 08, 2008|
|Port of blackscholes to Windows||Link||Nikolay Kurtov||Intel||September 09, 2008||Simply #define WIN32 to enable|
New Features and Extensions
This section is for contributions which go beyond a patch by extending PARSEC into a new direction. New input sets, additional build configurations or entirely new workloads would fit into that category.
Tools and Data
This section lists a few tools and data sources which are useful for the work with PARSEC. Anything relevant for the normal use of the suite to its recreation is listed here.
| Wikimedia Commons 
Large repository of images and other media files which can be used under very liberal licenses. A good source for input data for the media workloads.
Images of the Wikimedia Commons are used as inputs for the vips benchmark.
| VIPS 
Not only a benchmark program but also a tool in itself. The benchmark version of vips that is included in the PARSEC distribution expects input images in its own file format. A full installation of vips can be used to convert files to the vips format. The commands to convert a file `input.jpg' to the vips format are as follows:
vips im_sRGB2XYZ input.jpg temp1.v
This assumes that support for the input file format (JPEG in the example) was enabled at build time. PARSEC disables support for additional file formats by default to reduce the number of dependencies on external libraries.
| Elephants Dream 
The images of the movie were used to create the input videos for the x264 benchmark.
| Ffmpeg 
This program is a very fast audio and video converter that can be used under the GNU LGPL and GNU GPL licenses. This tool was used to convert the PNG images into the uncompressed videos that are used as input for x264. The `magic command' that accomplished the conversion was:
This command assumes the PNG images are in the same directory and have names that are 3-digit integers starting with 000.png.
| Stanford 3D Scanning Repository 
A collection of large 3D object models. The models are 3D scans of real physical objects.
The inputs for the raytrace benchmark were taken from the 3D scanning repository.
| Bodytrack Alternative Input Set
This archive contains an alternative image sequence for the bodytrack workload. It is very similar to the sequence for the official inputs that come with the PARSEC suite and approximately the size of a native input set.
| Script to Generate Canneal Input Sets
This script can be used to generate additional input netlists for the canneal benchmark. It was used to generate the official PARSEC input sets for canneal.
Anything that doesn't fit into the previous categories can be added here.
Other benchmark suites include: