Phase Analysis
SimPoint Overview
Simulation Points
Software Release



The goal of our research is to develop automatic techniques that are capable of finding and exploiting program phase behavior.  These techniques can be used to guide program analysis, optimization and simulation.   For  questions about SimPoint, please send email to our Yahoo Newsgroup at or feel free to contact Brad Calder at

February 2006:

bullet SimPoint 3.2 release - Provides the following fixes:
  • Fixed compile bug on 64 bit machines (i.e. AMD64 and PPC/OSX)
  • Unrolled inner k-means loop for added performance
  • Added our own random number generator (in Utilities.h), so we get consistent random numbers across platforms
  • Removed some old code in Datapoint/Dataset classes that are not currently being used (e.g. computing early indexes)

June 2005:

bulletSimPoint 3.0 release - Provides the following  new features:
bullet10x to 50x faster than SimPoint 2.0 for picking simulation points
bulletSupport for processing any number of intervals using sub-sampling
bulletMore efficient searching options for finding the best clustering
bulletAbility to report only the simulation points that account for the majority of execution
bulletSupport for variable length intervals (SimPoint 2.0 cannot be used for variable length intervals)
bulletWe updated the SimPoint license to clarify industrial use
bulletYahoo Newsgroup started for asking questions and suggesting features for SimPoint
bulletAll of the features for SimPoint 3.0 and the command line options are described in:
bulletGreg Hamerly, Erez Perelman, Jeremy Lau, and Brad Calder, SimPoint 3.0: Faster and More Flexible Program Analysis , Journal of Instruction Level Parallel, September 2005.
bulletRecent/New SimPoint related publications  are also  available:
bullet Automatic Logging of Operating System Effects to Guide Application Level Architecture Simulation, Sigmetrics, June 2006
bullet Using Machine Learning to Guide Architecture Simulation, JMLR, 2006
bullet Detecting Phases in Parallel Applications on Shared Memory Architectures, IPDPS, April 2006
bullet Comparing Multinomial and K-Means Clustering for SimPoint, ISPASS, March 2006
bullet Considering All Starting Points for Simultaneous Multithreading Simulation, ISPASS, March 2006
bullet Selecting Software Phase Markers with Code Structure Analysis, CGO, March 2006
bullet Efficient Sampling Startup for Sampled Processor Simulation, HiPEAC, November 2005
bullet Dynamic Phase Analysis for Cycle-Close Trace Generation , CODES+ISSS 2005
bullet The Strong Correlation Between Code Signatures and Performance, ISPASS 2005
bullet Motivation for Variable Length Intervals and Hierarchical Phase Behavior, ISPASS 2005
bullet Phase-Aware Remote Profiling, CGO 2005
bullet Transition Phase Classification and Prediction, HPCA 2005
bulletIndependent validation of the SimPoint approach by other groups:
bullet Characterizing and Comparing Prevailing Simulation Techniques, HPCA 2005
bullet Pinpointing Representative Portions of Large Intel Itanium Programs with Dynamic Instrumentation, MICRO 2004

horizontal rule

December 2004:

bullet PinPoints - Dynamic binary instrumentation framework from Intel for x86 and IA-64. The framework provides the support to gather Basic Block Vectors and then run SimPoint all together automatically to pick the simulation points.

horizontal rule

SimPoint is one specific use of our Off-Line Phase Clustering Analysis motivated by the need to perform efficient and accurate program analysis and architecture simulation, and several researchers in academia and at Intel are using SimPoint to accurately guide their architecture simulation research.

The first step of our Off-Line Phase Analysis is to quickly profile the frequency of the code being executed to create code signatures that represent the program's behavior at different points during execution.  These signatures (vectors) are then used along with several techniques from clustering analysis to concisely group together similar parts of the program's execution into phases.  This information then can be used to gain an understanding of whole program behavior, target optimizations at particular phases of execution, and to greatly reduce simulation time by using only representative samples.

SimPoint uses the phase clusterings generated by the off-line analysis to intelligently choose where to spend your simulation time. There are many different ways to use SimPoint and a handful of algorithms provided.  At the highest level,  SimPoint calculates phases for a program/input pair, and then chooses a single representative from each phase.   Users can then perform program analysis or perform detailed simulation only on these chosen representatives.    Then combining these statistics provides a complete and accurate representation of the full execution of the program. The representative for each phase (which is a cluster of intervals) is chosen by finding the interval closest to the clusterÂ’s center (centroid). This selected interval for a phase is called a simulation point for that phase. The whole program's behavior is then estimated by weighing the performance results of each simulation point by the size (number of intervals) of the phase it comes from.  SimPoint is capable of significantly reducing program analysis and simulation time and provides an accurate characterization of the full program.

We provide the SimPoint Toolkit to automatically perform the off-line phase analysis and picking of simulation points. 


If you use the Standard Simulation Points on this web page or our SimPoint Toolkit, please reference the following paper:

Timothy Sherwood, Erez Perelman, Greg Hamerly and Brad Calder. Automatically Characterizing Large Scale Program Behavior, In the proceedings of the Tenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS 2002), October 2002. San Jose, California.



If you use the Early SimPoint or Variance SimPoint algorithms or their simulation points, please reference the following paper:

Erez Perelman, Greg Hamerly and Brad Calder. Picking Statistically Valid and Early Simulation Points , In the International Conference on Parallel Architectures and Compilation Techniques, September 2003.

horizontal rule

This research is sponsored by NSF, Intel and Microsoft

horizontal rule


[ Home ] Phase Analysis ] SimPoint Overview ] Publications ] Simulation Points ] Software Release ] Newsgroup ] People ] FAQ ]

Send mail to with questions or comments about this web site.
Last modified: 06/22/05