Performance Application Programming Interface ( PAPI , Performance Analysis Application Programming Interface ) egy hordozható interfész , amelyet könyvtárként valósítottak meg , a különféle modern mikroprocesszorok hardveres teljesítményszámlálóinak elérésére . Széles körben használják alacsony szintű teljesítménymutatók (pl. utasításszámok, utasításonkénti ciklusok [ , cache misses ) gyűjtésére UNIX vagy Linux operációs rendszert futtató számítógépeken . A PAPI könyvtár használható C, C++, Fortran, Java, Matlab programokból [1] .
A PAPI előre definiált magas szintű hardveres eseményeket biztosít a leggyakoribb processzorok számára, és közvetlen hozzáférést biztosít számos processzor számára az alacsony szintű natív eseményekhez. A számlálók készleteinek multiplexelése és a számlálók túlcsordulása a periodikus jel ( mintavételezés ) érdekében szintén támogatott . Például a könyvtár használható a lebegőpontos műveletek számának megszámlálására [2] .
A PAPI alapján számos szoftverrendszert implementáltak a programok teljesítményének tanulmányozására, különösen [3] :
A PAPI több processzoreseményt támogat, beleértve: [3]
Az operációs rendszernek támogatnia kell a hardverszámlálókhoz való hozzáférést, ami a PAPI használatához szükséges. Például a Linux/x86 kernel hozzáférést biztosít a számlálókhoz egy hardverfigyelő illesztőprogram javításon ( perfctr ), az MSR hozzáférési illesztőprogramon keresztül (x86 család processzorokon), vagy a perf_events alrendszeren keresztül a PAPI támogatás bevezetése érdekében.
A modern Linux kernelek egy egyszerűsített perf_events felületet adtak hozzá hasonló célokra.