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)"
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.