Current PAPI Software and Patches
PAPI 5.5.0 release
PAPI 5.5 is now available. This release includes a new component that provides read and write access to the information and controls exposed via the Linux powercap interface.The PAPI powercap component supports measuring and capping power usage on recent Intel architectures.
We have added core support for Knights Landing (uncore support will be released later) as well as power monitoring via the RAPL and powercap components.
- Added Knights Landing (KNL) core events and preset events.
- Added Intel Broadwell/Skylake/Knights Landing RAPL support
- Updated PAPI preset event support for Intel Broadwell/Skylake
- Powercap component: PAPI now supports the Linux Power Capping Framework which exposes power capping devices and power measurement to user space via a sysfs virtual file system interface.
- Add support for multiple flavors of POWER8 processors.
- Force all processors to check event schedulability by checking that PAPI can successfully read the counters.
- Support for Intel Broadwell-EP, Skylake, Goldmont, Haswell-EP inherited from libpfm4.
- Shared memory object (.so) naming is made more limited so that minor updates do not break ABI compatibility.
- Improve testlib error messages if a component fails to initialize.
- Fix _papi_hwi_postfix_calc parsing and robustness.
- Clean build rules for CUDA sampling subcomponent.
- Correct IBM Power7 and Power8 computation of PAPI_L1_DCA.
- Eliminate the sole use of ftests_skip subroutine.
- Correct the event string names for tenth.c.
- Have Fortran test support code report errors more clearly.
- Cleanup output from libmsr component.
- PAPI internal functions were marked as static to avoid exposing them externally.
- Multiple component were fixed to make internal functions static where possible, to avoid exposing the functions as externally accessible entry points.
- CUDA component configuration bug fixed.
PAPI 5.4.3 release
PAPI 5.4.3 is now available.
This release includes some new implementations of components and tools, some general enhancements, and a number of bug fixes.
- libmsr component: Using LLNL's libmsr library to access Intel RAPL (Running Average Power Limit) library adds power capping abilities to PAPI.
- CUDA PC sampling: A new standalone CUDA sampling tool (papi_cuda_sampling) has been added to the CUDA component (components/cuda/sampling/) and can be used as a preloader to perform PC sampling on Nvidia GPUs which support the CUPTI sampling interface (e.g. Maxwell).
- ARM Cortex A53 support: Event definitions added.
- Added Haswell-EP uncore support
- Initial Broadwell, Skylake support
- Added a general CUDA example (components/cuda/test) that uses LD_PRELOAD to attach to a running CUcontext.
- Added "-check" flag to papi_avail and papi_native_avail to test counter availability/validity, unifying previous flags.
Information about the bug fixes can be found in the release notes and the ChangeLogP543.txt documents.
Last but not least, a special Thank You goes out to all our collaborators and contributors! This project would not be successful without your help!
Announcing PAPI 5.4.1
PAPI 5.4.1 is now available. This is a minor release with a major rewrite of the CUDA component as well as several other enhancements and bug fixes.
This release provides CUDA 6.5 support for multiple GPU devices and multiple CUDA contexts.
There have been several other bug fixes and enhancements:
- Updated support for Intel Haswell and Haswell-EP
- Added ARM Cortex A7
- Added ARM 1176 CPU (original Raspberry Pi)
- Enhance PAPI preset events to allow user defined events.
User defined events are set up via a user event definition file.
- New test demonstrating attaching an eventset to a single CPU rather than a thread.
- Use the term "event qualifiers" instead of "event masks" to clarify understanding.
- Added pkg-config support to PAPI.
- Fixed lustre segfault bug in lustre component.
- Fixed compilation in the absence of a Fortran compiler.
- Fixed bug in krental_pthreads ctest to join threads properly on exit.
- Fixed bug in perf_events where event masks were not getting cleared properly.
- Fixed memory leak bug in perf_events.
More details on these changes can be found in the file ChangeLogP541.txt inside the PAPI tarball.
Last but not least, a special Thank You goes out to all our collaborators and contributors!
Announcing PAPI 5.4.0
Just in time for SuperComputing 2014, PAPI 5.4.0 is now available.
This release provides a new component for the high speed power measurement API for IBM Blue Gene/Q (BG/Q), called EMON, to provide access to power and energy data on BG/Q in a transparent fashion. This additional support complements the earlier BGPM components for BG/Q, and enables PAPI users and tool developers to use their PAPI instrumented code as is without having to learn a new set of library and instrumentation primitives.
We have added initial support for Applied Micro X-Gene architecture, RAPL (energy measurement) support for Intel Haswell models, and support for the IBM POWER8 system when run as a non-virtualized platform 'PowerNV'. Furthermore, we have extended the RAPL energy measurements via msr-safe, which is a linux kernel module that allows user access to a whitelisted set of MSRs.
This release also includes several enhancements for the perf_event (core/uncore) components, including support for extended event masks which adds a number of new masks that for example enable counting in user domain, kernel domain, or on a specific cpu.
Additionally, there are also changes to the papi_component_avail utility which now provides a list of PMU names supported by active components.The papi_native_avail utility now supports a more robust "--validate" check on systems with events that require multiple masks to be provided in order to be a valid event (e.g., on Intel SandyBridge EP).
There have been several other bug fixes and enhancements:
- Updated IBM POWER7, POWER8 presets
- Hardware counter and event count added/fixed for BGPM components
- Reduced overhead of API call PAPI_name_to_code()
- Growing list of native events in core/uncore components fixed
- Cleaned up Intel IvyBridge presets
As always, there are more details on these changes in the file ChangeLogP540.txt inside the PAPI tarball.
Announcing PAPI 5.3.2
PAPI 5.3.2 is now available. This is a minor release featuring several enhancements and bug fixes.
There are a host of component updates to mention:
- NVML component updates;
- Addressed appio memory leaks;
- Support for Haswell-EP added to RAPL component;
- The perf_event_uncore component event enumeration works now;
- All components now have appropriate domain and granularities.
The PAPI team also added support for the Intel Silvermont processor and the Qualcomm Krait. FreeBSD support has also been revamped for FreeBSD 10. Some test codes now fall back to PAPI_TOT_INS if PAPI_FP_INS is not defined. Intel Haswell presets have been refined. x87 instructions were added to the PAPI_FP_INS preset on Intel Sandy/Ivy-Bridge processors.
Source Code Repository
If you would like to interactively browse the PAPI source code, go to the Web based source on Bitbucket here:
You can also stay up to date directly by cloning a copy of our git Source Code Repository. Make sure git is installed on your machine. You can download a copy here.
Clone the PAPI repository the first time with the following command:
> git clone https://bitbucket.org/icl/papi.git
This creates a complete copy of the papi git repository on your computer in a folder called 'papi'.
To make sure your copy is up to date with the repository:
> cd papi
> git pull https://bitbucket.org/icl/papi.git
Copyright © 2016 The University of Tennessee. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
· Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
· Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer listed in this license in the documentation and/or other materials provided with the distribution.
· Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
This software is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. in no event shall the copyright owner or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.