Most programs are repetitive, where similar behavior can be seen at
different execution times. Algorithms have been proposed that automatically
group similar portions of a program's execution into phases, where samples of
execution in the same phase have homogeneous behavior and similar resource
requirements. In this paper, we examine applying these phase analysis
algorithms and how to adapt them to parallel applications running on shared
memory processors. Our approach relies on a separate representation of each
thread's activity. We first focus on showing its ability to identify similar
intervals of execution across threads for a single run. We then show that it
is effective at identifying similar behavior of a program when the number of
threads is varied between runs. This can be used by developers to examine how
different phases scale across different number of threads. Finally, we examine
using the phase analysis to pick simulation points to guide multi-threaded
simulation.
Pre-2018 CSE ID: CS2005-0844