Performance Application Programming Interface (PAPI, Прикладной программный интерфейс для анализа производительности) — переносимый интерфейс, реализованный в виде библиотеки, для доступа к счетчикам аппаратной производительности на различных современных микропроцессорах. Он широко применяется для сбора низкоуровневых метрик производительности (например, счетчики инструкций, , промахи кэшей) в компьютерных системах, работающих под операционными системами семейства UNIX или Linux. Библиотека PAPI доступна к использованию из программ на языках Си, C++, Fortran, Java, MatlabPhilip Mucci, Performance Monitoring with PAPI / Dr.Dobbs, June 01, 2005.
Описание PAPI обеспечивает предопределенные высокоуровневые аппаратные события для наиболее распространенных процессоров и прямой доступ к низкоуровневым естественным событиям множества процессоров. Также поддерживаются мультиплексирование наборов счетчиков и управление переполнением счетчиков для получения периодического сигнала (sampling). Например, библиотека может использоваться для подсчета количества операций над числами с плавающей запятойATLAS offline software performance monitoring and optimization / Journal of Physics: Conference Series 513 (2014) 052022 doi:10.1088/1742-6596/513/5/052022.
Использование На базе PAPI реализовано несколько программных систем для изучения производительности программ, в частностиPhilip J. Mucci, An Introduction to Hardware Performance Analysis and PAPI / SIAM Parallel Processing 2004 : TAU (University of Oregon) SvPablo (University of Illinois at Urbana–Champaign) HPCToolkit (Rice University) psrun (NCSA, University of Illinois at Urbana–Champaign) Titanium (University of California, Berkeley) SCALEA (University Innsbruck) KOJAK (University of Tennessee) Cone (University of Tennessee) IBM HPMtoolkit CUBE (University of Tennessee) ParaVer (European Center for Parallelism of Barcelona) VAMPIR (Pallas) DynaProf (University of Tennessee)
Поддержка процессоров В PAPI реализована поддержка событий множества процессоров, в том числе: AMD: Athlon, Opteron и другие Cray T3E, X1 HP Alpha IBM POWER: POWER3, POWER4 и другие Intel: Pentium Pro, Pentium II, Pentium III, Pentium 4; Itanium 1, Itanium 2 и другие MIPS: R10K, R12K, R14K Sun UltraSparc I, II, III
Поддержка со стороны операционных систем Операционная система должна поддерживать доступ к аппаратным счетчикам, что необходимо для использования PAPI. Например, ядро Linux/x86 может предоставлять доступ к счетчикам при помощи патча драйвера аппаратного мониторинга (perfctr), через драйвер доступа к MSR регистрам (на процессорах семейства x86) или через подсистему perf_events, чтобы появилась поддержка PAPI.
В современных ядрах Linux добавлен упрощенный интерфейс perf_events для сходных целей.
См. также Профилирование Performance Counter Library (PCL)
Примечания
Литература A Portable Programming Interface for Performance Evaluation on Modern Processors / International Journal of High Performance Computing Applications archive Volume 14 Issue 3, August 2000, Pages 189-204 doi:10.1177/109434200001400303 Dongarra, Jack, et al. "Using PAPI for hardware performance monitoring on Linux systems" // Conference on Linux Clusters: The HPC Revolution. Vol. 5. Linux Clusters Institute, 2001.
Ссылки Официальный веб-сайт Philip J. Mucci, An Introduction to Hardware Performance Analysis and PAPI / SIAM Parallel Processing 2004 Introduction to PAPI, the Performance Application Programming Interface, 2009 Development of a PAPI Backend for the Sun Niagara 2 Processor, 2009 Организация профилирования в рамках концепции контролируемого выполнения сложных систем / ПРОГРАММНЫЕ ПРОДУКТЫ И СИСТЕМЫ № 3 за 2007 год: "Прикладной программный интерфейс для измерения производительности (PAPI)"
Категория:API Категория:Профилировщики Категория:Оптимизация программного обеспечения