PARSEC

From CSWiki

Jump to: navigation, search

Parsec-logo.png

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!

Contents

Distribution

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.

Visits of the PARSEC web site from January 2008 to August 2008. The site was visited over 4000 times.

Workloads

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.

Overview of Features and Portability of PARSEC 2.0 Workloads
Workload Parallelization Model Portability
Compiler OS CPU
Pthreads OpenMP Intel TBB gcc 4.2 gcc 4.3 icc 10.1 Linux Solaris 10 Windows i386 x86_64 Sparc
blackscholes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
bodytrack Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
canneal Yes No No Yes Yes Yes Yes Yes No Yes Yes Yes
dedup Yes No No Yes Yes Yes Yes Yes No Yes Yes Yes
facesim Yes No No Yes Yes Yes Yes Yes No Yes Yes Yes
ferret Yes No No Yes Yes Yes Yes Yes No Yes Yes Yes
fluidanimate Yes No Yes Yes Yes Yes Yes Yes No Yes Yes Yes
freqmine No Yes No Yes Yes Yes Yes Yes No Yes Yes Yes
raytrace Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes
streamcluster Yes No Yes Yes Yes Yes Yes Yes No Yes Yes Yes
swaptions Yes No Yes Yes Yes Yes Yes Yes No Yes Yes Yes
vips Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes
x264 Yes No No Yes Yes Yes Yes Yes No Yes Yes Patch


Blackscholes

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.

Bodytrack

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.

Canneal

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.

Dedup

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.

Facesim

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.

Ferret

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.

Fluidanimate

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.

Freqmine

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.

Raytrace

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.

Streamcluster

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.

Swaptions

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.

Vips

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.

X264

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.

Patches for PARSEC 2.1
Description Patch Author Affiliation Date Comments
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.

Patches for PARSEC 2.0
Description Patch Author Affiliation Date Comments
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.

Patches for PARSEC 1.0
Description Patch Author Affiliation Date Comments
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.

Wiki-commons-logo.png
Wikimedia Commons [1]

 

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 logo.png
VIPS [2]

 

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
vips im_XYZ2Lab temp1.v temp2.v
vips im_Lab2LabQ temp2.v input.v
rm -f temp1.v temp2.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 dvd.jpg
Elephants Dream [3]

 

An open source movie created by the Blender Foundation that can be used freely under a Creative Commons license. The raw PNG images of the movie are hosted by Xiph.

The images of the movie were used to create the input videos for the x264 benchmark.

   
200px-Ffmpeg logo.svg.png
Ffmpeg [4]

 

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:

ffmpeg -f image2 -i %03d.png -pix_fmt yuv420p rawvideo.y4m

This command assumes the PNG images are in the same directory and have names that are 3-digit integers starting with 000.png.

   
Stanford-bunny.jpg
Stanford 3D Scanning Repository [5]

 

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 Result0000.png
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.

   
Canneal amd barcelona dieshot.png
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.

Random Stuff

Anything that doesn't fit into the previous categories can be added here.

Related Work

Other benchmark suites include:

Personal tools