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 для сходных целей.

См. также

править

Примечания

править
  1. Philip Mucci, Performance Monitoring with PAPI Архивная копия от 24 сентября 2016 на Wayback Machine / Dr.Dobbs, June 01, 2005
  2. ATLAS offline software performance monitoring and optimization / Journal of Physics: Conference Series 513 (2014) 052022 doi:10.1088/1742-6596/513/5/052022
  3. 1 2 Philip J. Mucci, An Introduction to Hardware Performance Analysis and PAPI Архивная копия от 12 октября 2016 на Wayback Machine / SIAM Parallel Processing 2004  (англ.)

Литература

править

Ссылки

править

📚 Artikel Terkait di Wikipedia

Erlang

этого вышла первая почти за десятилетие крупная монография по Erlang: «Programming Erlang» Джо Армстронга, после чего многие разработчики «открыли» для

LAPI

Низкоуровневый программный интерфейс (англ. Low-level Application Programming Interface, сокр. LAPI) — интерфейс передачи данных для IBM Scalable Powerparallel

Java

Высшей степенью абстрактности в Java является интерфейс (модификатор interface). Интерфейс содержит преимущественно абстрактные методы, имеющие всеобщий

Carbon (API)

в основном из заглушек функций. Cocoa Interface Builder Objective-C Xcode Concepts in Objective-C Programming: Toll-Free Bridging . developer.apple.com

Реактор (шаблон проектирования)

мульти-поточность, но вызывает обработчик запроса в нитке диспетчера. Event Handler Interface Абстрактный класс-интерфейс, предоставляет основные свойства и методы

Standard ML

Standard ML official website (англ.). Object-Oriented Programming in Standard ML (англ.). MLton Performance (англ.) (2005). Standard ML Portability (from MLton

Твердотельный накопитель

сентября 2018. Архивировано 1 декабря 2017 года. Demartek Storage Networking Interface Comparison Архивная копия от 11 августа 2019 на Wayback Machine // Demartek

TLS

Raghuram Bindignavle, Shaowen Su and Simon S. Lam, SNP: An interface for secure network programming Proceedings USENIX Summer Technical Conference, June 1994