  Performance analysis is a critical step in the oft-repeated, iterative
process of performance tuning of parallel programs. Per-process, per-thread
traces (detailed logs of events with timestamps) enable in-depth analysis of
parallel program execution to identify different kinds of performance issues.
Often times, trace collection tools provide a graphical tool to analyze the
trace output. However, these GUI-based tools only support specific file
formats, are challenging to scale to large trace sizes, limit data exploration
to the implemented graphical views, and do not support automated comparisons of
two or more datasets. In this paper, we present a programmatic approach to
analyzing parallel execution traces by leveraging pandas, a powerful
Python-based data analysis library. We have developed a Python library, Pipit,
on top of pandas that can read traces in different file formats (OTF2,
HPCToolkit, Projections, Nsight Systems, etc.) and provides a uniform data
structure in the form of a pandas DataFrame. Pipit provides operations to
aggregate, filter, and transform the events in a trace to present the data in
different ways. We also provide several functions to quickly and easily
identify performance issues in parallel executions. More importantly, the API
is easily extensible to support custom analyses by different end users.
