PAPI
Performance Application Programming Interface (PAPI, Прикладной программный интерфейс для анализа производительности) — переносимый интерфейс, реализованный в виде библиотеки, для доступа к счетчикам аппаратной производительности на различных современных микропроцессорах. Он широко применяется для сбора низкоуровневых метрик производительности (например, счетчики инструкций, количество циклов на инструкцию[англ.], промахи кэшей) в компьютерных системах, работающих под операционными системами семейства UNIX или Linux. Библиотека PAPI доступна к использованию из программ на языках Си, C++, Fortran, Java, Matlab[1].
Описание
PAPI обеспечивает предопределенные высокоуровневые аппаратные события для наиболее распространенных процессоров и прямой доступ к низкоуровневым естественным событиям множества процессоров. Также поддерживаются мультиплексирование наборов счетчиков и управление переполнением счетчиков для получения периодического сигнала (sampling). Например, библиотека может использоваться для подсчета количества операций над числами с плавающей запятой[2].
Использование
На базе PAPI реализовано несколько программных систем для изучения производительности программ, в частности[3]:
- 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 реализована поддержка событий множества процессоров, в том числе:[3]
- 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 для сходных целей.
См. также
Примечания
- ↑ Philip Mucci, Performance Monitoring with PAPI Архивная копия от 24 сентября 2016 на Wayback Machine / Dr.Dobbs, June 01, 2005
- ↑ ATLAS offline software performance monitoring and optimization / Journal of Physics: Conference Series 513 (2014) 052022 doi:10.1088/1742-6596/513/5/052022
- ↑ 1 2 Philip J. Mucci, An Introduction to Hardware Performance Analysis and PAPI Архивная копия от 12 октября 2016 на Wayback Machine / SIAM Parallel Processing 2004 (англ.)
Литература
- 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)"