Performance Application Programming Interface ( PAPI , Performance Analysis Application Programming Interface ) je přenosné rozhraní implementované jako knihovna pro přístup k hardwarovým čítačům výkonu na různých moderních mikroprocesorech . Široce se používá ke shromažďování nízkoúrovňových metrik výkonu (např. čítače instrukcí , cykly na instrukci , vynechání mezipaměti ) na počítačových systémech s operačními systémy UNIX nebo Linux .. Knihovna PAPI je dostupná pro použití z programů v C, C++, Fortran, Java, Matlab [1] .
PAPI poskytuje předdefinované hardwarové události na vysoké úrovni pro nejběžnější procesory a přímý přístup k nativním událostem nízké úrovně pro mnoho procesorů. Podporováno je také multiplexování sad čítačů a řízení přetečení čítačů pro získání periodického signálu ( vzorkování ) . Knihovnu lze například použít k počítání počtu operací s pohyblivou řádovou čárkou [2] .
Na základě PAPI bylo implementováno několik softwarových systémů pro studium výkonnosti programů, zejména [3] :
PAPI podporuje více událostí procesoru, včetně: [3]
Operační systém musí podporovat přístup k hardwarovým čítačům, což je vyžadováno pro použití PAPI. Například jádro Linux/x86 může poskytovat přístup k čítačům prostřednictvím opravy ovladače pro monitorování hardwaru ( perfctr ), prostřednictvím přístupového ovladače MSR (na procesorech rodiny x86) nebo prostřednictvím subsystému perf_events za účelem zavedení podpory PAPI.
Moderní linuxová jádra přidala pro podobné účely zjednodušené rozhraní perf_events .