About PEAT
PEAT — proud to be …% Irish, matured for 12 years, written by application engineer, for application engineers.
PEAT is a toolkit for collecting, analysing and visualising traces of MPI, OpenMP and GPU applications, with an engine on top that can estimate how an application would behave on different hardware. It grew out of a practical need: to answer “how will this application run on a system that does not exist yet”, and for hardware architects working before silicon is available.
It was not meant to replace full-featured commercial profilers. It is a small, scriptable toolkit whose pieces share one trace format. However, since Intel ITAC reached end of life back in 2023, it may be considered a replacement of some sort.
History
-
2012-2013
"The tool"
Also known as the ompstat tool: an OpenMP profiler that reported per-region OpenMP statistics. It was built into a customised Intel OpenMP 3.0 runtime, because OpenMP had no standard tool interface (OMPT) at the time, so it could only be used with that modified runtime.
-
2014-2026
CPES
PEAT’s predecessor was started at Intel somewhere around 2014 as a small tool for collecting CPU events in and around MPI calls to supply OPA HW architects with the necessary data for performance analysis. After this work had been done, it was decided to continue developing the estimation engine to predict application performance on future hardware before its actual availability or decision to develop/wait for one. Unfortunately, after OPA was discontinued, the overall idea was slowly dying. However, its analysing part continued to be useful and was occasionally used by its author.
-
2026-
PEAT
After separation from Intel, PEAT was born from the basics of its predecessors. What has been done since the separation:
- All components were rewritten; the trace structure changed from two-level events (user/internal) to multi-level ones.
- MPI standard support grew from 2.5 to 5 (CPES only supported MPI-1 and partially 2 and 3).
- Transport-API tracing and collective-split tracing via MPI patches.
- Support for MPICH 3*/4/5, MVAPICH4 and Open MPI* (CPES only supported mvapich-2.3.x x={2,3,5} as the engineering MPI engine).
- A lot of visualisation improvements in qTV.
- The 2012–13 “the tool” lives on as
omp.tool, rewritten on the standard OMPT callbacks: no modified OpenMP runtime is needed, any OMPT-capable runtime will do. It is tested with the Intel oneAPI compiler; GNUlibgompdoes not support OMPT yet, so its callbacks are never invoked there. It writes per-thread statistic files, which a post-processing script summarises.
The downside is that PEAT cannot be thoroughly tested due to the lack of access to properly sized systems these days. This is where community contributions and feedback become crucial.
Acknowledgements
Some of the shared classes and low-level functions are based on implementations by Sergey Shalnov.
* Available only in the experimental branch.