Performance Application Programming Interface ( PAPI , Performance Analysis Application Programming Interface ) är ett portabelt gränssnitt , implementerat som ett bibliotek , för åtkomst till hårdvaruprestandaräknare på olika moderna mikroprocessorer . Det används ofta för att samla in prestandamått på låg nivå (t.ex. antal instruktioner , cykler per instruktion , cachemissar ) på datorsystem som kör UNIX- eller Linux - operativsystem . PAPI-biblioteket är tillgängligt för användning från program i C, C++, Fortran, Java, Matlab [1] .
PAPI tillhandahåller fördefinierade hårdvaruhändelser på hög nivå för de vanligaste processorerna och direkt tillgång till inbyggda händelser på låg nivå för många processorer. Multiplexering av uppsättningar av räknare och styrning av överflöde av räknare för att erhålla en periodisk signal ( sampling ) stöds också . Till exempel kan biblioteket användas för att räkna antalet flyttalsoperationer [2] .
Baserat på PAPI har flera mjukvarusystem implementerats för att studera prestandan hos program, i synnerhet [3] :
PAPI stöder flera processorhändelser, inklusive: [3]
Operativsystemet måste stödja åtkomst till maskinvaruräknare, vilket krävs för att använda PAPI. Till exempel kan Linux/x86-kärnan ge åtkomst till räknare via en hårdvaruövervakningsdrivrutinpatch ( perfctr ), via MSR-åtkomstdrivrutinen (på x86-familjens processorer) eller via undersystemet perf_events för att introducera PAPI-stöd.
Moderna Linux-kärnor har lagt till ett förenklat perf_events- gränssnitt för liknande ändamål.