Interfața de programare a aplicațiilor de performanță ( PAPI , Performance Analysis Application Programming Interface) este o interfață portabilă , implementată ca bibliotecă , pentru accesarea contoarelor de performanță hardware pe diverse microprocesoare moderne . Este utilizat pe scară largă pentru a colecta valori de performanță de nivel scăzut (de exemplu, număr de instrucțiuni , cicluri per instrucțiune , rateuri de cache ) pe sisteme de computer care rulează sisteme de operare UNIX sau Linux . Biblioteca PAPI este disponibilă pentru utilizare din programe în C, C++, Fortran, Java, Matlab [1] .
PAPI oferă evenimente hardware de nivel înalt predefinite pentru cele mai comune procesoare și acces direct la evenimente native de nivel scăzut pentru multe procesoare. De asemenea, sunt acceptate multiplexarea seturilor de contoare și controlul depășirii contoarelor pentru a obține un semnal periodic ( eșantionare ) . De exemplu, biblioteca poate fi folosită pentru a număra numărul de operații în virgulă mobilă [2] .
Pe baza PAPI, au fost implementate mai multe sisteme software pentru studiul performanței programelor, în special [3] :
PAPI acceptă mai multe evenimente de procesor, inclusiv: [3]
Sistemul de operare trebuie să accepte accesul la contoarele hardware, care este necesar pentru a utiliza PAPI. De exemplu, nucleul Linux/x86 poate oferi acces la contoare printr-un patch pentru driverul de monitorizare hardware ( perfctr ), prin driverul de acces MSR (pe procesoarele din familia x86) sau prin subsistemul perf_events pentru a introduce suportul PAPI.
Nucleele Linux moderne au adăugat o interfață simplificată perf_events în scopuri similare.