The PAPI Unifying Layer for Software-defined Events (PULSE) project focuses on enabling cross-layer and integrated monitoring of whole application performance by extending PAPI with the capability to expose performance metrics from key software components found in the HPC software stack. Up to this point, the abstraction and standardization layer provided by PAPI has been limited to profiling information generated by hardware only. Information about the behavior of the underlying software stack had to be acquired either through low-level binary instrumentation or through custom APIs.
To overcome this shortfall, PULSE will extend the abstraction and unification layer that PAPI has provided for hardware events to also encompass software events. On one end, PULSE will provide a standard, well-defined and well-documented API that high-level profiling software can utilize to acquire and present to application developers performance information about the libraries used by their application. On the other end, it will provide standard APIs that library and runtime writers can utilize to communicate to higher software layers information about the behavior of their software.